angelos.net.base¶
Base classes and other functions for the network stack.
-
class
angelos.net.base.AcceptPacket(*args)¶ Bases:
angelos.net.base.PacketAccept a packet handler session.
-
class
angelos.net.base.BusyPacket(*args)¶ Bases:
angelos.net.base.PacketIndicate for initiating session packet handler that it is busy asking to come back later.
-
class
angelos.net.base.ClientProtoMixin¶ Bases:
objectClient of packet manager.
-
classmethod
connect(facade: angelos.facade.facade.Facade, host: Union[str, ipaddress.IPv4Address, ipaddress.IPv6Address], port: int) → angelos.net.base.Protocol¶ Connect to server.
-
connection_lost(exc: Exception)¶ Clean up.
-
classmethod
-
class
angelos.net.base.ClientSessionStateMachine¶ Bases:
angelos.net.base.WaypointStateWaypoints for setting session mode over a protocol.
-
property
event¶ Expose event.
-
property
future¶
-
property
-
class
angelos.net.base.ClientStateExchangeMachine¶ Bases:
angelos.net.base.WaypointStateWaypoints for exchanging a state over a protocol.
-
property
event¶ Expose event.
-
property
-
class
angelos.net.base.ConfirmCode(value)¶ Bases:
enum.IntEnumAnswer codes for ConfirmPackage
-
NO= 2¶
-
NO_COMMENT= 0¶
-
YES= 1¶
-
-
class
angelos.net.base.ConfirmPacket(*args)¶ Bases:
angelos.net.base.PacketAnswer on a sent proposal. 1=Yes, 2=No, 0=No comment.
-
exception
angelos.net.base.ConnectionClosed¶ Bases:
RuntimeWarningWhen connection unexpectedly closed.
-
class
angelos.net.base.ConnectionManager¶ Bases:
objectKeeps track of connections with server protocols.
-
add(proto: angelos.net.base.ServerProtoMixin)¶ Add server protocol connection.
-
remove(proto: angelos.net.base.ServerProtoMixin)¶ Remove server protocol connection
-
-
class
angelos.net.base.DataType(value)¶ Bases:
enum.IntEnumCustom data types for use with packets and msgpack.
-
BYTES_FIX= 3¶
-
BYTES_VAR= 4¶
-
DATETIME= 5¶
-
UINT= 1¶
-
UUID= 2¶
-
-
class
angelos.net.base.DonePacket(*args)¶ Bases:
angelos.net.base.PacketIndicate for initiating session packet handler that all is done.
-
class
angelos.net.base.EnquiryPacket(*args)¶ Bases:
angelos.net.base.PacketEnquire the state of a thing. Client/server
-
class
angelos.net.base.ErrorCode(value)¶ Bases:
enum.IntEnumError codes
-
ABORTED= 2¶
-
BUSY= 3¶
-
MALFORMED= 1¶
-
UNEXPECTED= 4¶
-
-
class
angelos.net.base.ErrorPacket(*args)¶ Bases:
angelos.net.base.PacketError packet.
-
class
angelos.net.base.FinishPacket(*args)¶ Bases:
angelos.net.base.PacketFinalize a packet handler session.
-
exception
angelos.net.base.GotoStateError¶ Bases:
RuntimeWarningWhen it’s not possible to go to a state.
-
class
angelos.net.base.Handler(manager: Protocol, states: dict, sessions: dict, max_sesh: int)¶ Bases:
objectBase handler of protocol source of services.
-
LEVEL= 0¶
-
PACKETS= {115: <class 'angelos.net.base.EnquiryPacket'>, 116: <class 'angelos.net.base.ResponsePacket'>, 117: <class 'angelos.net.base.TellPacket'>, 118: <class 'angelos.net.base.ShowPacket'>, 119: <class 'angelos.net.base.ConfirmPacket'>, 120: <class 'angelos.net.base.StartPacket'>, 121: <class 'angelos.net.base.FinishPacket'>, 122: <class 'angelos.net.base.AcceptPacket'>, 123: <class 'angelos.net.base.RefusePacket'>, 124: <class 'angelos.net.base.BusyPacket'>, 125: <class 'angelos.net.base.DonePacket'>, 126: <class 'angelos.net.base.UnknownPacket'>, 127: <class 'angelos.net.base.ErrorPacket'>}¶
-
PKT_ACCEPT= 122¶
-
PKT_BUSY= 124¶
-
PKT_CONFIRM= 119¶
-
PKT_DONE= 125¶
-
PKT_ENQUIRY= 115¶
-
PKT_ERROR= 127¶
-
PKT_FINISH= 121¶
-
PKT_REFUSE= 123¶
-
PKT_RESPONSE= 116¶
-
PKT_SHOW= 118¶
-
PKT_START= 120¶
-
PKT_TELL= 117¶
-
PKT_UNKNOWN= 126¶
-
PROCESS= {}¶
-
RANGE= 0¶
-
context(sesh_type: int, **kwargs)¶ Run a protocol session as a context manager with state sync.
-
get_session(session: int) → angelos.net.base.ProtocolSession¶ Load a given session.
-
property
manager¶ Expose the packet manager.
-
packet_handler()¶ Handle received packet.
If packet type class, method or processor isn’t found An unknown packet is returned to the senders handler.
-
process_accept(packet: angelos.net.base.AcceptPacket)¶ Accept response to start session.
-
process_busy(packet: angelos.net.base.BusyPacket)¶ Busy response to start session.
-
process_confirm(packet: angelos.net.base.ConfirmPacket)¶ Process a confirmation of state received and acceptance.
-
process_done(packet: angelos.net.base.DonePacket)¶ Indication there is nothing more to do in session.
-
process_enquiry(packet: angelos.net.base.EnquiryPacket)¶ Process an enquiry.
-
process_error(packet: angelos.net.base.ErrorPacket)¶ Handle an error packet response.
This method MUST never return an unknown or error in order to prevent an infinite loop over the network.
-
process_finish(packet: angelos.net.base.FinishPacket)¶ Close an open session.
-
process_refuse(packet: angelos.net.base.RefusePacket)¶ Refuse response to start session.
-
process_response(packet: angelos.net.base.ResponsePacket)¶ Process response of enquiry
-
process_show(packet: angelos.net.base.ShowPacket)¶ Process request to show state.
-
process_start(packet: angelos.net.base.StartPacket)¶ Session start requested.
-
process_tell(packet: angelos.net.base.TellPacket)¶ Process a state push.
-
process_unknown(packet: angelos.net.base.UnknownPacket)¶ Handle an unknown packet response.
This method MUST never return an unknown or error in order to prevent an infinite loop over the network.
-
property
processor¶ Expose current task.
-
property
queue¶ Expose current queue.
-
session_done(sesh: angelos.net.base.ProtocolSession)¶ Tell client there is no more to do in session.
-
session_prepare(sesh: angelos.net.base.ProtocolSession)¶ Call to make preparations for a session.
-
sync(states: tuple, sesh: Optional[angelos.net.base.ProtocolSession] = None) → bool¶ Run several state synchronizations in a batch.
-
-
exception
angelos.net.base.NetworkError¶ Bases:
RuntimeErrorUnrepairable network errors.
-
ALREADY_CONNECTED= ('Already connected.', 101)¶
-
ATTEMPTED_ATTACK= ('Attempted attack with error/unknown packets.', 104)¶
-
FALSE_CHECK_METHOD= ('Check method must be a NetCallable', 105)¶
-
NO_TRANSPORT= ('Transport layer is missing.', 100)¶
-
SESSION_NO_SYNC= ('Failed to sync one or several states in session', 102)¶
-
SESSION_TYPE_INCONSISTENCY= ('Session type inconsistent.', 103)¶
-
-
exception
angelos.net.base.NotAuthenticated¶ Bases:
RuntimeWarningWhen there is not authenticated portfolio.
-
class
angelos.net.base.Packet(*args)¶ Bases:
objectNetwork packet base class.
Example: class MyPacket(Packet, fields=(“uint”, “uuid”, “fixed”, “variable”, “date”), fields_info=(
(DataType.UINT, 100, 200), (DataType.UUID,), (DataType.BYTES_FIX, 128), (DataType.BYTES_VAR,), (DataType.DATETIME,))):
pass
-
property
tuple¶ Expose internal tuple.
-
classmethod
unpack(data: bytes) → angelos.net.base.Packet¶ Unpack data into packet class.
-
property
-
class
angelos.net.base.Protocol(facade: angelos.facade.facade.Facade, server: bool = False, manager: ConnectionManager = None)¶ Bases:
asyncio.protocols.ProtocolProtocol for handling packages going from and to packet handlers.
-
authentication_made(portfolio: angelos.portfolio.collection.Portfolio, node: Union[bool, angelos.document.domain.Node])¶ Indicate that authentication has taken place. Never call from outside, internal use only.
-
check()¶ Raise exception if connection is closed.
-
close()¶
-
connection_made(transport: asyncio.transports.Transport)¶ Connection is made.
-
data_received(data: bytes)¶ Data received.
-
error(error: int, pkt_type: int, pkt_level, process: int = 0)¶ Error happened is returned to sender.
-
property
facade¶ Expose the facade.
-
get_handler(range: int) → angelos.net.base.Handler¶ Get packet handler for given range if available or None.
-
is_server() → bool¶ Whether is a server.
-
property
manager¶ Expose the connection manager.
-
property
portfolio¶ Expose connecting portfolio.
-
send_packet(pkt_type: int, pkt_level: int, packet: angelos.net.base.Packet)¶ Send packet over socket.
-
unknown(pkt_type: int, pkt_level: int, process: int = 0)¶ Unknown packet is returned to sender.
-
-
class
angelos.net.base.ProtocolSession(type: int, id: int, states: dict, server: bool)¶ Bases:
objectSession that run within a protocol handler with states.
-
property
event¶ Expose enquiry event for session.
-
property
id¶ Expose session id.
-
property
own¶ Expose the sessions states.
-
property
state_machines¶ Expose the sessions states.
-
property
states¶ Expose the sessions states.
-
property
type¶ Expose session type.
-
property
-
class
angelos.net.base.RefusePacket(*args)¶ Bases:
angelos.net.base.PacketRefuse a packet handler session.
-
class
angelos.net.base.ResponsePacket(*args)¶ Bases:
angelos.net.base.PacketRespond to enquiry. Client/server
-
class
angelos.net.base.ServerProtoMixin¶ Bases:
objectServer of packet manager.
-
connection_lost(exc: Exception)¶ Clean up.
-
connection_made(transport: asyncio.transports.Transport)¶ Add serving protocol to local dict and set.
-
eof_received()¶ End of communication.
-
classmethod
listen(facade: angelos.facade.facade.Facade, host: Union[str, ipaddress.IPv4Address, ipaddress.IPv6Address], port: int, manager: Optional[angelos.net.base.ConnectionManager] = None) → asyncio.base_events.Server¶ Start a listening server.
-
-
class
angelos.net.base.ServerSessionStateMachine¶ Bases:
angelos.net.base.WaypointStateWaypoints for setting session mode over a protocol.
-
class
angelos.net.base.ServerStateExchangeMachine(check: angelos.common.misc.SyncCallable = <angelos.common.misc.SyncCallable object>)¶ Bases:
angelos.net.base.WaypointStateWaypoints for exchanging a state over a protocol.
-
property
condition¶ Expose condition.
-
evaluate() → int¶ Evaluate value.
-
predicate() → bool¶ Condition predicate true if confirmation is yes.
-
property
-
class
angelos.net.base.SessionCode(value)¶ Bases:
enum.IntEnumSession future return code for RefusePacket, BusyPacket, AcceptPacket
-
ACCEPT= 0¶
-
BUSY= 1¶
-
DONE= 3¶
-
REFUSE= 2¶
-
-
class
angelos.net.base.ShowPacket(*args)¶ Bases:
angelos.net.base.PacketGet the state of a thing. Client/server
-
class
angelos.net.base.StartPacket(*args)¶ Bases:
angelos.net.base.PacketInitiate a packet handler session. Initializer is always the finalizer.
-
class
angelos.net.base.TellPacket(*args)¶ Bases:
angelos.net.base.PacketTell the state of a thing. Client/server
-
class
angelos.net.base.UnknownPacket(*args)¶ Bases:
angelos.net.base.PacketUnknown packet.
-
class
angelos.net.base.WaypointState(states: dict)¶ Bases:
angelos.common.misc.StateMachineA state machine that allows switching between states according to predefined paths.
-
property
available¶ Expose available options.
-
goto(state: unicode)¶ Go to another state that is available.
-
property
-
angelos.net.base.default()¶ Custom message pack type converter.
-
angelos.net.base.ext_hook()¶ Custom message unpack type converter.
-
angelos.net.base.r()¶ Interval boundaries for given range.
-
angelos.net.base.ri()¶ Range for given number.