class Telegram::Connection

Public Class Methods

new() click to toggle source
Calls superclass method
# File lib/telegram/connection.rb, line 3
def initialize
  super
  @connected = false
  @on_connect = nil
  @on_disconnect = nil
  @callback = nil
  @available = true
end

Public Instance Methods

available?() click to toggle source
# File lib/telegram/connection.rb, line 12
def available?
  @available
end
communicate(*messages, &callback) click to toggle source
# File lib/telegram/connection.rb, line 16
def communicate(*messages, &callback)
  @available = false
  @callback = callback
  messages = messages.each_with_index.map { |m, i|
    if i > 0
      m = "\"#{m}\""
    end
    m
  }.join(' ') << "\n"
  send_data(messages)
end
connected?() click to toggle source
# File lib/telegram/connection.rb, line 47
def connected?
  @connected
end
connection_completed() click to toggle source

@api private

# File lib/telegram/connection.rb, line 37
def connection_completed
  @connected = true
  @on_connect.call unless @on_connect.nil?
end
on_connect=(block) click to toggle source
# File lib/telegram/connection.rb, line 28
def on_connect=(block)
  @on_connect = block
end
on_disconnect=(block) click to toggle source
# File lib/telegram/connection.rb, line 32
def on_disconnect=(block)
  @on_disconnect = block
end
receive_data(data) click to toggle source
# File lib/telegram/connection.rb, line 51
def receive_data(data)
  begin
    result = _receive_data(data)
  rescue
    result = nil
  end
  @callback.call(!result.nil?, result) unless @callback.nil?
  @callback = nil
  @available = true
end
unbind() click to toggle source
# File lib/telegram/connection.rb, line 42
def unbind
  @connected = false
  @on_disconnect.call unless @on_disconnect.nil?
end

Protected Instance Methods

_receive_data(data) click to toggle source
# File lib/telegram/connection.rb, line 63
def _receive_data(data)
  if data[0..6] == 'ANSWER '
    lf = data.index("\n") + 1
    lflf = data.index("\n\n", lf) - 1
    data = data[lf..lflf]
    data = Oj.load(data)
  end
  data
end