Sha256: e155292f4fd9f789e62e67b854386c88775813d02a82d0d30fc1ef8952f42fef
Contents?: true
Size: 1.62 KB
Versions: 1
Compression:
Stored size: 1.62 KB
Contents
require 'socket' include Socket::Constants require 'json' BUFFER_SIZE = 4096 LINE_END = "\r\n" module SimpleOrbit end class SimpleOrbit::Client @@version = 'Orbit 1.0' def initialize(addr, port) @addr = addr @port = port @socket = nil @id = 0 @connected = false end def connect() @connected = true if @socket # already connected return end @socket = TCPSocket.new(@addr, @port) end def disconnect() if @connected @connected = false @socket.close() @socket = nil end end def reconnect() disconnect() connect() end def sendline(line='') @socket.write(line.to_s + LINE_END) puts line.to_s end def event(recipients, body, json=true, try_again=true) if not @connected connect() end begin if json body = JSON.generate(body) end if not @socket raise ## **Connection-lost** end begin @id = @id + 1 sendline(@@version.to_s) sendline('Event') sendline('id: ' + @id.to_s) for recipient in recipients sendline('recipient: ' + recipient.to_s) end sendline('length: ' + body.length.to_s) sendline() @socket.write(body) puts body.to_s return read_response() rescue disconnect() raise end rescue if try_again reconnect() event(recipients, body, json, false) else raise end end end def read_response() # FIXME: this is incorrect. Should read until it gets a \r\n\r\n return @socket.read(15) end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
collin-lucky7-0.0.1 | vendor/orbited/ruby-orbited.rb |