class OBS::WebSocket::ResponseDispatcher
Public Class Methods
new()
click to toggle source
# File lib/obs/websocket.rb, line 164 def initialize @ongoing_requests = {} end
Public Instance Methods
dispatch(message_id, payload)
click to toggle source
# File lib/obs/websocket.rb, line 180 def dispatch(message_id, payload) if h = @ongoing_requests.delete(message_id) request = h[:request] future = h[:future] case payload['status'] when 'ok' response_class = request.class.const_get(:Response) future.fulfill(response_class.new(payload)) when 'error' future.reject(RequestError.new(payload['error'])) else fail 'Unknown status' end end end
register(executor, request)
click to toggle source
# File lib/obs/websocket.rb, line 168 def register(executor, request) message_id = new_message_id future = Concurrent::Promises.resolvable_future_on(executor) @ongoing_requests[message_id] = { request: request, future: future, } [message_id, future.with_hidden_resolvable] end
Private Instance Methods
new_message_id()
click to toggle source
# File lib/obs/websocket.rb, line 199 def new_message_id SecureRandom.uuid end