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.



277
278
279
# File 'lib/datagrout_conduit/transport/ws.rb', line 277

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

Instance Method Details

#reject(reason) ⇒ Object



291
292
293
# File 'lib/datagrout_conduit/transport/ws.rb', line 291

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

#resolve(value) ⇒ Object



287
288
289
# File 'lib/datagrout_conduit/transport/ws.rb', line 287

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

#wait(timeout: 30) ⇒ Object



281
282
283
284
285
# File 'lib/datagrout_conduit/transport/ws.rb', line 281

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