Class: Seahorse::Client::AsyncResponse
- Inherits:
-
Object
- Object
- Seahorse::Client::AsyncResponse
- Defined in:
- lib/seahorse/client/async_response.rb
Instance Method Summary collapse
- #context ⇒ Object
- #error ⇒ Object
-
#initialize(options = {}) ⇒ AsyncResponse
constructor
A new instance of AsyncResponse.
- #join! ⇒ Object
- #on(range, &block) ⇒ Object
- #on_complete(&block) ⇒ Object
- #wait ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ AsyncResponse
Returns a new instance of AsyncResponse.
7 8 9 10 11 12 13 |
# File 'lib/seahorse/client/async_response.rb', line 7 def initialize( = {}) @response = Response.new(context: [:context]) @stream = [:stream] @stream_mutex = [:stream_mutex] @close_condition = [:close_condition] @sync_queue = [:sync_queue] end |
Instance Method Details
#context ⇒ Object
15 16 17 |
# File 'lib/seahorse/client/async_response.rb', line 15 def context @response.context end |
#error ⇒ Object
19 20 21 |
# File 'lib/seahorse/client/async_response.rb', line 19 def error @response.error end |
#join! ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/seahorse/client/async_response.rb', line 50 def join! if error && context.config.raise_response_errors raise error elsif @stream # close callback is waiting # for the "sync_signal" @sync_queue << "sync_signal" @stream.close @response end end |
#on(range, &block) ⇒ Object
23 24 25 26 |
# File 'lib/seahorse/client/async_response.rb', line 23 def on(range, &block) @response.on(range, &block) self end |
#on_complete(&block) ⇒ Object
28 29 30 31 |
# File 'lib/seahorse/client/async_response.rb', line 28 def on_complete(&block) @response.on_complete(&block) self end |
#wait ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/seahorse/client/async_response.rb', line 33 def wait if error && context.config.raise_response_errors raise error elsif @stream # have a sync signal that #signal can be blocked on # else, if #signal is called before #wait # will be waiting for a signal never arrives @sync_queue << "sync_signal" # now #signal is unlocked for # signaling close condition when ready @stream_mutex.synchronize { @close_condition.wait(@stream_mutex) } @response end end |