class DrunkMonkey::Transport::Comet

Public Class Methods

resume(request, options = {}) click to toggle source
Calls superclass method DrunkMonkey::Transport::Base::resume
# File lib/drunkmonkey/transport.rb, line 123
def self.resume request, options = {}
  comet = super
  comet.handle_connection(request)
end

Public Instance Methods

handle_connection(request) click to toggle source
# File lib/drunkmonkey/transport.rb, line 128
def handle_connection request
  params = self.class.parse_params(request)
  request.post? ? upstream(params) : downstream(params)
end
push(message) click to toggle source
# File lib/drunkmonkey/transport.rb, line 133
def push message
  @messages << message
  signal :pushed
end

Private Instance Methods

downstream(params) click to toggle source
# File lib/drunkmonkey/transport.rb, line 144
def downstream params
  if params["when"] == "open"
    @controller.async.fire :open, Actor.current
    ""
  else
    wait :pushed if @messages.empty?
    message = @messages.shift
    message ? portal(message) : ""
  end
end
upstream(params) click to toggle source
# File lib/drunkmonkey/transport.rb, line 139
def upstream params
  @controller.async.fire :message, Actor.current, params["data"]
  ""
end