ZIO
Python and C++ interface to ZeroMQ and Zyre
Public Member Functions | Public Attributes | List of all members
zio.flow.factories.Ruleset Class Reference

Public Member Functions

def __init__ (self, ctx, ruleset, wactors=(), ractor=())
 
def __call__ (self, bot)
 
def launch_read (self, filename, bot, rule)
 
def launch_write (self, filename, bot, rule)
 
def stop (self)
 

Public Attributes

 ctx
 
 ruleset
 
 wactors
 
 ractor
 
 writers
 
 handlers
 

Detailed Description

Use a ruleset to mate flow client to a file resource.

The ruleset factory will apply each rule in the set and used the
first one that evaluates True.  This will govern the parameters
for the file resource.

The file resource is delegated to a pair of actor functions for
reading and another for writing.  A single reader/writer actor is
launched to handle each new file and a reader or writer handler is
used to handle each new client.

Definition at line 18 of file factories.py.

Constructor & Destructor Documentation

◆ __init__()

def zio.flow.factories.Ruleset.__init__ (   self,
  ctx,
  ruleset,
  wactors = (),
  ractor = () 
)
Create a Factory with a ruleset.

Parameters
----------

ctx : a zmq.Context

ruleset: array of dictionary

    A ruleset is a sequence of rule specifications (see Rule
    Attributes below).

wactors : 2-tuple of 2-tuples specifing file writing actors 

    See below.

ractor : 2-tuple specifying file reading actors and any args

    See below

The "*actors" args are 2-tuples specifying actor functions and
optional user data arguments for writing and reading.

The head of the 2-tuple is for the file actor which directly
manages some file resource.  The tail is for the client actor
which will connect to the file actor socket (and presumably
some other socket).  If either element of this 2-tuple is
itself a tuple then the head is treated as the actor function
and any remainder is passed to the function as user data
arguments.

A file actor is called as:

    file_handler(ctx, pipe, 
         filename,
         *user_data):

The file actor function must adhere to a simple protocol on
its actor pipe.  After issuing the usual actor ready signal
and before entering its loop, the file actor shall return on
its actor pipe as a string the address of a bound socket to
which any subsequent client actors may connect.

A client actor is called as:

    client_handler(ctx, pipe, 
           bot, rule_object, file_addr, 
           *user_data)

The client actor has no protocol on its actor pipe other than
the usual ready signal.

Rule Attributes
---------------

rule : string

    An S-expression in terms of attributes evaluating to a
    Boolean.  First rule returning True is used.  Here and
    below "attributes" refer to the combination of BOT message
    header values and any additional specified in the `attr`
    Rule Attribute (described below).

rw : string 

    Takes value "read" or "write" and determines if the flow
    is to be read from or written to file.

filepat : f-string

    An f-string formatted against the attributes which
    resolves to the name of the file to be read or written.

grouppat : f-string

    An f-string formatted against attributes to determine and
    to add a "hdfgroup" parameter to the BOT message prior to
    it being sent into a read or write handler.  The value
    will be used to define an HDF base group path into which
    messages from one stream will be mapped.  This path must
    be unique to the flow client.

attr : dictionary

    An optional, extra dictionary of attributes updated on the
    dictionary of message attributes prior to applying to the
    rule or either patterns.

Definition at line 33 of file factories.py.

Member Function Documentation

◆ __call__()

def zio.flow.factories.Ruleset.__call__ (   self,
  bot 
)
Given a bot, return a live actor or None if bot is rejected.

Definition at line 131 of file factories.py.

◆ launch_read()

def zio.flow.factories.Ruleset.launch_read (   self,
  filename,
  bot,
  rule 
)

Definition at line 160 of file factories.py.

◆ launch_write()

def zio.flow.factories.Ruleset.launch_write (   self,
  filename,
  bot,
  rule 
)

Definition at line 172 of file factories.py.

◆ stop()

def zio.flow.factories.Ruleset.stop (   self)

Definition at line 198 of file factories.py.

Member Data Documentation

◆ ctx

zio.flow.factories.Ruleset.ctx

Definition at line 123 of file factories.py.

◆ handlers

zio.flow.factories.Ruleset.handlers

Definition at line 128 of file factories.py.

◆ ractor

zio.flow.factories.Ruleset.ractor

Definition at line 126 of file factories.py.

◆ ruleset

zio.flow.factories.Ruleset.ruleset

Definition at line 124 of file factories.py.

◆ wactors

zio.flow.factories.Ruleset.wactors

Definition at line 125 of file factories.py.

◆ writers

zio.flow.factories.Ruleset.writers

Definition at line 127 of file factories.py.


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