ZIO
Python and C++ interface to ZeroMQ and Zyre
Public Member Functions | Public Attributes | Static Public Attributes | List of all members
zio.domo.broker.Broker Class Reference
Inheritance diagram for zio.domo.broker.Broker:
Inheritance graph
[legend]
Collaboration diagram for zio.domo.broker.Broker:
Collaboration graph
[legend]

Public Member Functions

def __init__ (self, socket_type=zmq.ROUTER, verbose=False)
 
def mediate (self)
 
def destroy (self)
 
def process_client (self, sender, msg)
 
def process_worker (self, sender, msg)
 
def delete_worker (self, worker, disconnect)
 
def require_worker (self, address)
 
def require_service (self, name)
 
def bind (self, endpoint)
 
def service_internal (self, service, msg)
 
def send_heartbeats (self)
 
def purge_workers (self)
 
def worker_waiting (self, worker)
 
def dispatch (self, service, msg)
 
def send_to_worker (self, worker, command, option, msg=None)
 

Public Attributes

 verbose
 

Static Public Attributes

string INTERNAL_SERVICE_PREFIX = b"mmi."
 
int HEARTBEAT_LIVENESS = 3
 
int HEARTBEAT_INTERVAL = 2500
 
int HEARTBEAT_EXPIRY = HEARTBEAT_INTERVAL * HEARTBEAT_LIVENESS
 
 ctx = None
 
 socket = None
 
 poller = None
 
 heartbeat_at = None
 
 services = None
 
 workers = None
 
 waiting = None
 
bool verbose = False
 

Detailed Description

Majordomo Protocol broker
A minimal implementation of http:#rfc.zeromq.org/spec:7 and spec:8

Definition at line 52 of file broker.py.

Constructor & Destructor Documentation

◆ __init__()

def zio.domo.broker.Broker.__init__ (   self,
  socket_type = zmq.ROUTER,
  verbose = False 
)
Initialize broker state.

Definition at line 80 of file broker.py.

Member Function Documentation

◆ bind()

def zio.domo.broker.Broker.bind (   self,
  endpoint 
)
Bind broker to endpoint, can call this multiple times.

We use a single socket for both clients and workers.

Definition at line 225 of file broker.py.

◆ delete_worker()

def zio.domo.broker.Broker.delete_worker (   self,
  worker,
  disconnect 
)
Deletes worker from all data structures, and deletes worker.

Definition at line 192 of file broker.py.

◆ destroy()

def zio.domo.broker.Broker.destroy (   self)
Disconnect all workers, destroy context.

Definition at line 126 of file broker.py.

◆ dispatch()

def zio.domo.broker.Broker.dispatch (   self,
  service,
  msg 
)
Dispatch requests to waiting workers as possible

Definition at line 278 of file broker.py.

◆ mediate()

def zio.domo.broker.Broker.mediate (   self)
Main broker work happens here

Definition at line 100 of file broker.py.

◆ process_client()

def zio.domo.broker.Broker.process_client (   self,
  sender,
  msg 
)
Process a request coming from a client.

Definition at line 133 of file broker.py.

◆ process_worker()

def zio.domo.broker.Broker.process_worker (   self,
  sender,
  msg 
)
Process message sent to us by a worker.

Definition at line 145 of file broker.py.

◆ purge_workers()

def zio.domo.broker.Broker.purge_workers (   self)
Look for & kill expired workers.

Workers are oldest to most recent, so we stop at the first alive worker.

Definition at line 256 of file broker.py.

◆ require_service()

def zio.domo.broker.Broker.require_service (   self,
  name 
)
Locates the service (creates if necessary).

Definition at line 215 of file broker.py.

◆ require_worker()

def zio.domo.broker.Broker.require_worker (   self,
  address 
)
Finds the worker (creates if necessary).

Definition at line 202 of file broker.py.

◆ send_heartbeats()

def zio.domo.broker.Broker.send_heartbeats (   self)
Send heartbeats to idle workers if it's time

Definition at line 248 of file broker.py.

◆ send_to_worker()

def zio.domo.broker.Broker.send_to_worker (   self,
  worker,
  command,
  option,
  msg = None 
)
Send message to worker.

If message is provided, sends that message.

Definition at line 290 of file broker.py.

◆ service_internal()

def zio.domo.broker.Broker.service_internal (   self,
  service,
  msg 
)
Handle internal service according to 8/MMI specification

Definition at line 233 of file broker.py.

◆ worker_waiting()

def zio.domo.broker.Broker.worker_waiting (   self,
  worker 
)
This worker is now waiting for work.

Definition at line 270 of file broker.py.

Member Data Documentation

◆ ctx

zio.domo.broker.Broker.ctx = None
static

Definition at line 66 of file broker.py.

◆ heartbeat_at

zio.domo.broker.Broker.heartbeat_at = None
static

Definition at line 70 of file broker.py.

◆ HEARTBEAT_EXPIRY

int zio.domo.broker.Broker.HEARTBEAT_EXPIRY = HEARTBEAT_INTERVAL * HEARTBEAT_LIVENESS
static

Definition at line 62 of file broker.py.

◆ HEARTBEAT_INTERVAL

int zio.domo.broker.Broker.HEARTBEAT_INTERVAL = 2500
static

Definition at line 61 of file broker.py.

◆ HEARTBEAT_LIVENESS

int zio.domo.broker.Broker.HEARTBEAT_LIVENESS = 3
static

Definition at line 60 of file broker.py.

◆ INTERNAL_SERVICE_PREFIX

string zio.domo.broker.Broker.INTERNAL_SERVICE_PREFIX = b"mmi."
static

Definition at line 59 of file broker.py.

◆ poller

zio.domo.broker.Broker.poller = None
static

Definition at line 68 of file broker.py.

◆ services

zio.domo.broker.Broker.services = None
static

Definition at line 71 of file broker.py.

◆ socket

zio.domo.broker.Broker.socket = None
static

Definition at line 67 of file broker.py.

◆ verbose [1/2]

bool zio.domo.broker.Broker.verbose = False
static

Definition at line 75 of file broker.py.

◆ verbose [2/2]

zio.domo.broker.Broker.verbose

Definition at line 82 of file broker.py.

◆ waiting

zio.domo.broker.Broker.waiting = None
static

Definition at line 73 of file broker.py.

◆ workers

zio.domo.broker.Broker.workers = None
static

Definition at line 72 of file broker.py.


The documentation for this class was generated from the following file: