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