dragon.infrastructure.connection
Internal objects required for infrastructure process communication.
Functions
|
|
|
Pipe constructor, producing two Connections. |
Classes
Address class for dragon servers and listeners and all that |
|
A wrapper around int to allow waiting on a cuid. |
|
Dragon infrastructure's internal connection class. |
|
Options for dragon.Connections |
|
Options for the Pipe factory. |
- class ConnectionOptions
Bases:
object
Options for dragon.Connections
Separate object because this will expand over time.
There are a number of different facts about how one might want a Connection object to behave vs. its underlying Channels and its interaction with Global Services, together with anticipated need to let someone customize how the object behaves for performance. This object is meant to organize all these into one object.
- class CreationPolicy
Bases:
Enum
An enumeration.
- EXTERNALLY_MANAGED = 1
- PRE_CREATED = 2
- RECEIVER_CREATES = 3
- SENDER_CREATES = 4
- __init__(*, creation_policy=CreationPolicy.EXTERNALLY_MANAGED, min_block_size=None, large_block_size=None, huge_block_size=None, default_pool=None)
- class PipeOptions
Bases:
object
Options for the Pipe factory.
Separate object because this, too, will expand over time.
Same rationale as for ConnectionOptions.
- class CreationPolicy
Bases:
Enum
An enumeration.
- EXTERNAL = 1
- EARLY = 2
- RECEIVER_CREATES = 3
- SENDER_CREATES = 4
- __init__(*, creation_policy=CreationPolicy.EARLY, conn_options=None)
- class CUID
Bases:
int
A wrapper around int to allow waiting on a cuid.
- thread_wait(timeout, done_ev, ready)
- class Connection
Bases:
object
Dragon infrastructure’s internal connection class.
- class State
Bases:
Enum
An enumeration.
- CLOSED = 1
- ATTACHED = 2
- READY = 3
- UNBACKED = 4
- UNATTACHED = 5
- __init__(*, inbound_initializer=None, outbound_initializer=None, options=None, policy=Policy((WaitMode(2), ReturnWhen(2))))
Initializes the Connection object.
The object is initialized in an inbound direction, an outbound direction, or both. These initializers can be either - a Channel object, whose lifecycle is assumed externally managed - a bytes-like descriptor, attached to lazily, destroyed automatically - a string name, for a rendezvous in Global services.
TODO: document current behavior and design intent MUCH more thoroughly
- Parameters:
inbound_initializer – an initializer for the inbound channel
outbound_initializer – an initializer for the outbound channel
options – ConnectionOptions object
policy – A Policy object.
- open()
- send(obj)
- recv()
- ghost_close()
Force the connection into a closed state without sending EOT
This ‘ghosts’ the receiver on the other end, which won’t be getting an EOT message from this object, but when using externally managed Channels on this object that is what one might want to do, in order to transfer use of that Channel.
- thread_wait(timeout, done_ev, ready)
Thread waiter signaling with an ev.
- close()
- property inbound_channel
- property outbound_channel
- property closed
True if the connection is closed
- property readable
True if the connection is readable
- property writable
True if the connection is writable
- fileno()
- poll(timeout=0.0, event_mask=<EventType.POLLIN: 1>)
- send_bytes(buffer, offset=0, size=None)
- recv_bytes(maxlength=None)
- recv_bytes_into(buffer, offset=0)
- get_next_ctr()
- make_uniq_chan_names()
- Pipe(duplex=True, *, channels=None, options=None)
Pipe constructor, producing two Connections.
The channels parameter can be None, indicating that this is an anonymous Pipe requiring a new channel to be constructed and eventually destroyed by the receiver.
It can also be a Channel object or descriptor in which case the two Connections returned will communicate through the channel, with one being in read mode and the other in write mode.
Finally, if it is a tuple, it is expected to have two elements which are both channels or channel descriptors and each of which can send and receive.
If the channels parameter is None, then the duplex parameter governs whether the connections are full duplex and whether two new channels get created or only one.
If not duplex, the first one is the reader and the second the writer
The options object carries lifecycle and creation options for the Pipe call and also policy settings for the Connection objects that result, as well as policy on how the Connections objects should interact with the pool when sending data.
- Parameters:
channels – None or a Channel object or a 2-element tuple of distinct Channel objects
duplex – default True, whether to produce
options – a PipeOptions object
- Returns:
a pair of Connection objects.
- class Address
Bases:
object
Address class for dragon servers and listeners and all that
- __init__(user_name='')
- property cname
- Client(address='', family='', authkey=None)