API Documentation¶
This is a simple framework for managing connections to things.
cnxman.basics¶
This module contains the base classes and basic utilities.
-
class
cnxman.basics.Connection[source]¶ Bases:
objectExtend this class to define a logical connection to something. The expectations we have of a connection are these:
- It can attempt create a connection and report on whether or not the connection was successful.
- It can (at least by all appearances) gracefully disconnect.
- It can release all its resources upon request.
Seealso: Connection.try_connect()Seealso: Connection.disconnect()Seealso: Connection.teardown()-
class
Signals[source]¶ Bases:
enum.EnumThese are the used by connection objects.
Seealso: pydispatch.dispatcher()-
RAISE_ALARM= 'raise-alarm'¶
-
-
__init__¶ Initialize self. See help(type(self)) for accurate signature.
-
raise_alarm()[source]¶ Raise the alarm to notify anyone who might be interested (like a
ConnectionManager) that there is trouble with the connection.
-
exception
cnxman.basics.ConnectionException(message: str, inner: Exception)[source]¶ Bases:
ExceptionRaised when an error occurs within a connection.
-
__init__(message: str, inner: Exception)[source]¶ Parameters: - message (
str) – the original message - inner (
Exception) – the exception responsible for the raising of this exception.
- message (
-
args¶
-
static
from_exception(ex: Exception)[source]¶ This is a convenience method that can be used to create a connection exception from another exception, using default logic to populate the constructor arguments.
Parameters: ex ( Exception) – the original exceptionReturns: a new connection exception Return type: ConnectionException
-
inner¶ This is the original exception responsible for raising this connection exception.
-
with_traceback()¶ Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
-
-
class
cnxman.basics.ConnectionManager(connection: cnxman.basics.Connection)[source]¶ Bases:
objectExtend this class to create your own object with the know-how to establish and maintain a connection to something.
-
connect¶ An input for a L{MethodicalMachine}.
-
connected= MethodicalState(method=<function ConnectionManager.connected>)¶
-
connecting= MethodicalState(method=<function ConnectionManager.connecting>)¶
-
disconnect¶ An input for a L{MethodicalMachine}.
-
disconnected= MethodicalState(method=<function ConnectionManager.disconnected>)¶
-
ready= MethodicalState(method=<function ConnectionManager.ready>)¶
-
recovering= MethodicalState(method=<function ConnectionManager.recovering>)¶
-
teardown¶ An input for a L{MethodicalMachine}.
-
torndown= MethodicalState(method=<function ConnectionManager.torndown>)¶
-
cnxman.serial¶
Let’s manage serial port connections!
-
class
cnxman.serial.SerialConnection(port: str, baudrate: int = 9600, bytesize: int = 8, parity: str = 'N', stopbits: int = 1, timeout=None)[source]¶ Bases:
cnxman.basics.Connection-
class
Signals[source]¶ Bases:
enum.EnumThese are the used by serial listener objects.
Seealso: pydispatch.dispatcher()-
DATA_RECEIVED= 'data-received'¶
-
-
__init__(port: str, baudrate: int = 9600, bytesize: int = 8, parity: str = 'N', stopbits: int = 1, timeout=None)[source]¶
-
logger= <Logger cnxman.serial.SerialConnection (NOTSET)>¶
-
raise_alarm()¶ Raise the alarm to notify anyone who might be interested (like a
ConnectionManager) that there is trouble with the connection.
-
class
-
class
cnxman.serial.SerialListener(serial: serial.serialposix.Serial)[source]¶ Bases:
threading.ThreadThis is a thread object that listens for incoming data from a serial connection.
-
class
Signals[source]¶ Bases:
enum.EnumThese are the used by serial listener objects.
Seealso: pydispatch.dispatcher()-
DATA_RECEIVED= 'data-received'¶
-
READ_ERROR= 'read-error'¶
-
-
daemon¶ A boolean value indicating whether this thread is a daemon thread.
This must be set before start() is called, otherwise RuntimeError is raised. Its initial value is inherited from the creating thread; the main thread is not a daemon thread and therefore all threads created in the main thread default to daemon = False.
The entire Python program exits when no alive non-daemon threads are left.
-
getName()¶
-
ident¶ Thread identifier of this thread or None if it has not been started.
This is a nonzero integer. See the get_ident() function. Thread identifiers may be recycled when a thread exits and another thread is created. The identifier is available even after the thread has exited.
-
isAlive()¶ Return whether the thread is alive.
This method is deprecated, use is_alive() instead.
-
isDaemon()¶
-
is_alive()¶ Return whether the thread is alive.
This method returns True just before the run() method starts until just after the run() method terminates. The module function enumerate() returns a list of all alive threads.
-
join(timeout=None)¶ Wait until the thread terminates.
This blocks the calling thread until the thread whose join() method is called terminates – either normally or through an unhandled exception or until the optional timeout occurs.
When the timeout argument is present and not None, it should be a floating point number specifying a timeout for the operation in seconds (or fractions thereof). As join() always returns None, you must call is_alive() after join() to decide whether a timeout happened – if the thread is still alive, the join() call timed out.
When the timeout argument is not present or None, the operation will block until the thread terminates.
A thread can be join()ed many times.
join() raises a RuntimeError if an attempt is made to join the current thread as that would cause a deadlock. It is also an error to join() a thread before it has been started and attempts to do so raises the same exception.
-
name¶ A string used for identification purposes only.
It has no semantics. Multiple threads may be given the same name. The initial name is set by the constructor.
-
serial¶ This is the serial object we’re monitoring.
Return type: pyserial.Serial
-
setDaemon(daemonic)¶
-
setName(name)¶
-
start()¶ Start the thread’s activity.
It must be called at most once per thread object. It arranges for the object’s run() method to be invoked in a separate thread of control.
This method will raise a RuntimeError if called more than once on the same thread object.
-
class