Class: Dazeus::Connection

Inherits:
Object
  • Object
show all
Defined in:
lib/dazeus/connection.rb

Instance Method Summary collapse

Constructor Details

#initialize(address) ⇒ Connection



6
7
8
9
# File 'lib/dazeus/connection.rb', line 6

def initialize(address)
  @socket = create_socket(address)
  @cache = []
end

Instance Method Details

#closeObject



49
50
51
# File 'lib/dazeus/connection.rb', line 49

def close
  @socket.close
end

#closed?Boolean



53
54
55
# File 'lib/dazeus/connection.rb', line 53

def closed?
  @socket.closed?
end

#dazeusify(message) ⇒ Object



43
44
45
46
47
# File 'lib/dazeus/connection.rb', line 43

def dazeusify(message)
  msg = JSON.dump(message)
  # puts "-> " + msg
  msg.bytesize.to_s + msg
end

#dezeusify(message) ⇒ Object



32
33
34
35
36
37
38
39
40
41
# File 'lib/dazeus/connection.rb', line 32

def dezeusify(message)
  digits = ""
  while message[0] =~ /\d/
    digits += message.slice! 0
  end
  current = message.slice!(0, digits.to_i)
  # puts "<- " + current
  @cache.push JSON.parse(current)
  message.strip
end

#receiveObject



19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/dazeus/connection.rb', line 19

def receive
  if @cache.length == 0
    message = @socket.recvmsg[0]
    message = message.force_encoding 'UTF-8'
    message = message.strip

    while message.length > 0
      message = dezeusify(message)
    end
  end
  @cache.shift
end

#send(message) ⇒ Object



11
12
13
14
15
16
17
# File 'lib/dazeus/connection.rb', line 11

def send(message)
  if !@socket.closed?
    @socket.sendmsg(dazeusify message)
  else
    false
  end
end