class XRBP::WebSocket::Message

Raw data which to write to websocket and mechanisms which to track and manage response state.

Attributes

bl[W]
connection[RW]
result[R]
time[RW]

Public Class Methods

new(data) click to toggle source
# File lib/xrbp/websocket/message.rb, line 9
def initialize(data)
  @data = data
  @result = nil
  @cv = ConditionVariable.new
  @signalled = false
  @time = Time.now
end

Public Instance Methods

bl() click to toggle source
# File lib/xrbp/websocket/message.rb, line 36
def bl
  @bl ||= proc { |res|
    @result = res
    signal
  }
end
signal() click to toggle source
# File lib/xrbp/websocket/message.rb, line 21
def signal
  @signalled = true
  @cv.signal
  self
end
to_s() click to toggle source
# File lib/xrbp/websocket/message.rb, line 17
def to_s
  @data
end
wait() click to toggle source
# File lib/xrbp/websocket/message.rb, line 27
def wait
  connection.state_mutex.synchronize {
    # only wait if we haven't received response
    @cv.wait(connection.state_mutex) unless connection.closed? || @signalled
  }
end