Class: DatagroutConduit::Transport::Ws::RequestFuture

Inherits:
Object
  • Object
show all
Defined in:
lib/datagrout_conduit/transport/ws.rb

Overview

── Request future ────────────────────────────────────────────────────────

Instance Method Summary collapse

Constructor Details

#initializeRequestFuture

Returns a new instance of RequestFuture.



261
262
263
# File 'lib/datagrout_conduit/transport/ws.rb', line 261

def initialize
  @queue = ::Thread::Queue.new
end

Instance Method Details

#reject(reason) ⇒ Object



275
276
277
# File 'lib/datagrout_conduit/transport/ws.rb', line 275

def reject(reason)
  @queue.push([:error, reason])
end

#resolve(value) ⇒ Object



271
272
273
# File 'lib/datagrout_conduit/transport/ws.rb', line 271

def resolve(value)
  @queue.push([:ok, value])
end

#wait(timeout: 30) ⇒ Object



265
266
267
268
269
# File 'lib/datagrout_conduit/transport/ws.rb', line 265

def wait(timeout: 30)
  Timeout.timeout(timeout) { @queue.pop }
rescue Timeout::Error
  [:error, "Request timed out after #{timeout}s"]
end