Class: OMQ::Routing::Pull

Inherits:
Object
  • Object
show all
Includes:
FairRecv
Defined in:
lib/omq/routing/pull.rb

Overview

PULL socket routing: fair-queue receive from PUSH peers.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from FairRecv

#dequeue_recv, #unblock_recv

Constructor Details

#initialize(engine) ⇒ Pull

Returns a new instance of Pull.

Parameters:



13
14
15
16
17
# File 'lib/omq/routing/pull.rb', line 13

def initialize(engine)
  @engine     = engine
  @recv_queue = FairQueue.new
  @tasks      = []
end

Instance Attribute Details

#recv_queueFairQueue (readonly)

Returns:



22
23
24
# File 'lib/omq/routing/pull.rb', line 22

def recv_queue
  @recv_queue
end

Instance Method Details

#connection_added(connection) ⇒ Object

Parameters:

  • connection (Connection)


27
28
29
# File 'lib/omq/routing/pull.rb', line 27

def connection_added(connection)
  add_fair_recv_connection(connection)
end

#connection_removed(connection) ⇒ Object

Parameters:

  • connection (Connection)


34
35
36
37
# File 'lib/omq/routing/pull.rb', line 34

def connection_removed(connection)
  @recv_queue.remove_queue(connection)
  # recv pump stops on EOFError
end

#enqueue(_parts) ⇒ Object

PULL is read-only.



42
43
44
# File 'lib/omq/routing/pull.rb', line 42

def enqueue(_parts)
  raise "PULL sockets cannot send"
end

#stopvoid

This method returns an undefined value.

Stops all background tasks.



51
52
53
54
# File 'lib/omq/routing/pull.rb', line 51

def stop
  @tasks.each(&:stop)
  @tasks.clear
end