class SocketCake::BaseSocket

Attributes

completed_tasks[RW]
current_task[RW]
local_storage[RW]
open_message[RW]
task_list[RW]
url[RW]
verbose[RW]

Public Class Methods

get_sequence() click to toggle source
# File lib/socketcake/base_socket.rb, line 5
def self.get_sequence
    ObjectSpace.each_object(self)
end
new(task_list, url, open_message, cookie, verbose = false) click to toggle source
# File lib/socketcake/base_socket.rb, line 9
def initialize task_list, url, open_message, cookie, verbose = false
  self.url = url
  self.open_message = open_message
  self.task_list = task_list
  self.cookie = cookie
  self.completed_tasks = Array.new
  self.local_storage = Hash.new
  self.verbose = verbose
end

Public Instance Methods

handle(msg) click to toggle source
# File lib/socketcake/base_socket.rb, line 49
def handle msg
    @message = JSON.parse(msg)
    unless self.current_task[:completed]
            self.send(self.current_task[:name], self.current_task[:args])    
    end
end
start(arg = nil) { |local_storage| ... } click to toggle source
# File lib/socketcake/base_socket.rb, line 19
def start(arg = nil)


  @socket = WebSocket::EventMachine::Client.connect(:uri => self.url,
                                                    headers: {
                                                        'Cookie': self.cookie})


  @socket.onopen do
    puts "#{Time.now} Connected"
    get_task
    
    @socket.send self.open_message
  end

  @socket.onmessage do |msg|
    puts msg if @verbose
    handle(msg)
  end


  @socket.onerror do |error|
    puts error
  end

  @socket.onclose do |code, reason|
    puts "#{Time.now} Disconnected with status code: #{code} and reason: #{reason}"
    yield(local_storage)
  end

  def handle msg
      @message = JSON.parse(msg)
      unless self.current_task[:completed]
              self.send(self.current_task[:name], self.current_task[:args])    
      end
  end

end

Private Instance Methods

complete_task() click to toggle source
# File lib/socketcake/base_socket.rb, line 64
def complete_task
  self.current_task[:completed] = true
  self.completed_tasks << self.current_task
end
get_task() click to toggle source
# File lib/socketcake/base_socket.rb, line 77
def get_task
  if self.current_task.nil?
    self.current_task = self.task_list.shift
  end
end
next_task() click to toggle source
# File lib/socketcake/base_socket.rb, line 69
def next_task
  if task_list.empty?
    @socket.close
  else
    self.current_task = self.task_list.shift
  end
end
task_completed?() click to toggle source
# File lib/socketcake/base_socket.rb, line 60
def task_completed?
  self.current_task[:completed]
end