Class: ERPC::RpcSubscription
- Inherits:
-
Object
- Object
- ERPC::RpcSubscription
- Includes:
- Enumerable
- Defined in:
- lib/erpc_sdk/websocket.rb
Instance Attribute Summary collapse
-
#id ⇒ Object
readonly
Returns the value of attribute id.
Instance Method Summary collapse
- #each ⇒ Object
-
#initialize(id, queue, unsubscribe) ⇒ RpcSubscription
constructor
A new instance of RpcSubscription.
- #next(timeout: nil) ⇒ Object
- #unsubscribe ⇒ Object
Constructor Details
#initialize(id, queue, unsubscribe) ⇒ RpcSubscription
Returns a new instance of RpcSubscription.
336 337 338 339 340 341 |
# File 'lib/erpc_sdk/websocket.rb', line 336 def initialize(id, queue, unsubscribe) @id = id @queue = queue @unsubscribe = unsubscribe @closed = false end |
Instance Attribute Details
#id ⇒ Object (readonly)
Returns the value of attribute id.
334 335 336 |
# File 'lib/erpc_sdk/websocket.rb', line 334 def id @id end |
Instance Method Details
#each ⇒ Object
343 344 345 346 347 348 349 |
# File 'lib/erpc_sdk/websocket.rb', line 343 def each return enum_for(:each) unless block_given? loop { yield self.next } rescue StopIteration self end |
#next(timeout: nil) ⇒ Object
351 352 353 354 355 356 357 358 359 |
# File 'lib/erpc_sdk/websocket.rb', line 351 def next(timeout: nil) raise StopIteration if @closed && @queue.empty? return @queue.pop if timeout.nil? Timeout.timeout(timeout) { @queue.pop } rescue ::Timeout::Error raise TimeoutError, timeout end |
#unsubscribe ⇒ Object
361 362 363 364 365 366 367 |
# File 'lib/erpc_sdk/websocket.rb', line 361 def unsubscribe return true if @closed result = @unsubscribe.call @closed = true if result result end |