Class: ERPC::RpcSubscription

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/erpc_sdk/websocket.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#idObject (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

#eachObject



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

#unsubscribeObject



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