network.channel - Palamecia/mint GitHub Wiki

Module

load network.channel

This module provides classes to manage data exchanges between network devices using messages. The Network.AsynchronousChannel class manages asynchronous exchanges and Network.SynchronousChannel manage synchronous exchanges.

Packages

Classes

Network.AsynchronousChannel

This class manages asynchronous exchanges between network devices. Intances of this class should be synchronized using the Network.Scheduler object.

Members

Modifiers Member Description
- class DataQueue This class manage a data queue where data can be pushed as messages or as byt...
+ const bind Attempts to bind the channel to the remote device. Returns true if binding ...
+ const close Closes the communication with the peer if the channel was connected using the...
+ const connect Attempts to make a connection to the remote device. This method calls the Net...
- final endpoint Internal underling end point.
+ const getEndpoint Returns the underling end point object.
+ const getEvents Returns the events expected by the channel as mask of values from the Network...
+ const getSocket Returns the channel's socket as a number. This method calls the Network.EndPo...
+ const getState Returns the current state of the channel as a value of Network.EndPoint.State...
+ const isNonBlocking Returns true if the channel performs I/O operations asynchronously (i.e. re...
+ const listen Tells the channel to listen for incoming connections on address configured by...
+ const new Creates a new channel to manage asynchronous exchanges with the device descri...
+ const notifyClosed Notifies the channel that the connection was closed by the peer. The connecti...
+ const notifyConnection Notifies the listening channel that the underling end point has received a ne...
+ const notifyError Notifies the channel that the underling end point has received an error. The ...
+ const notifyReadable Notifies the channel that the underling end point is readable. The channel wi...
+ const notifyStateChanged Notifies the channel that the underling end point's state is about to change....
+ const notifyWritable Notifies the channel that the underling end point is writable. The channel wi...
+ onClose This method can be rebinded to handle close events. The channel parameter i...
+ onMessage This method can be rebinded to handle message events. The channel parameter...
+ onOpen This method can be rebinded to handle connection success events. The channe...
+ onState This method can be rebinded to handle state change events. The channel para...
+ const read Returns the next message object in the reply queue or none if no more messa...
- final reply Internal DataQueue instance for replies waiting to be read.
- final request Internal DataQueue instance for requests waiting to be sent.
+ const setNonBlocking Sets the non blocking mode of the channel to enabled. This method calls the...
+ const unwatch Removes the channel from the Network.Scheduler object. This method calls the ...
+ const watch Adds the channel to the Network.Scheduler object. This method calls the Netwo...
+ const write Pushes the message object described by data to the request queue. The messa...

Network.AsynchronousChannel.DataQueue

This class manage a data queue where data can be pushed as messages or as byte stream and converted unsing an object implementing the network.serializers interface.

Any method of this class is thread safe.

Members

Modifiers Member Description
+ const accept Performs an accept operation on endpoint and push the new endpoint in the q...
+ const isEmpty Returns true if no more message can be retrieved from the queue; otherwise ...
- final mutex Internal mutex.
+ const new Creates a new data queue. The Serializer parameter must be a class implemen...
+ const pop Removes the oldest message from the queue and returns it. If no more message ...
+ const push Pushes the message object described by data into the queue. The data para...
+ const read Performs a read operation on endpoint and append received data to the queue...
- final serializer Internal serializer object.
+ const write Performs a write operation on endpoint using the data available in the queu...

Network.SynchronousChannel

This class manages synchronous exchanges between network devices.

Members

Modifiers Member Description
+ const bind Attempts to bind the channel to the remote device. Returns true if binding ...
+ const close Closes the communication with the peer if the channel was connected using the...
+ const connect Attempts to make a connection to the remote device. Returns true if connect...
- final endpoint Internal underling end point.
+ const finalizeClose Finalize the close of the underling end point. Return true if the close suc...
+ const finalizeConnection Finalize the connection to the peer. Return true if the connection succed; ...
+ const getEndpoint Returns the underling end point object.
+ const getSocket Returns the channel's socket as a number. This method calls the Network.EndPo...
+ const getState Returns the current state of the channel as a value of Network.EndPoint.State...
+ const isNonBlocking Returns true if the channel performs I/O operations asynchronously (i.e. re...
+ const listen Tells the channel to listen for incoming connections on address configured by...
+ const new Creates a new channel to manage synchronous exchanges with the device describ...
+ const read Returns the next message object in the reply queue or none if no more messa...
- final reply Internal serializer object for reading replies.
- final request Internal serializer object for writing requests.
+ const setNonBlocking Sets the non blocking mode of the channel to enabled. This method calls the...
+ const write Writes the pending data to the underling end point. Returns true if the wri...

Descriptions

Network.AsynchronousChannel.DataQueue.accept

def (self, endpoint)

Performs an accept operation on endpoint and push the new endpoint in the queue. Returns true if a new connection was successfully accepted; otherwise returns false.

Network.AsynchronousChannel.DataQueue.isEmpty

def (const self)

Returns true if no more message can be retrieved from the queue; otherwise returns false.

Network.AsynchronousChannel.DataQueue.mutex

null

Internal mutex.

Network.AsynchronousChannel.DataQueue.new

def (self, Serializer)

Creates a new data queue. The Serializer parameter must be a class implementing the network.serializers interface used to detect messages end and convert data from or to objects.

Network.AsynchronousChannel.DataQueue.pop

def (self)

Removes the oldest message from the queue and returns it. If no more message can be generated using the remaining byte stream, none is returned.

Network.AsynchronousChannel.DataQueue.push

def (self, data)

Pushes the message object described by data into the queue. The data parameter must a message object that can be converted into a byte stream by the serializer object to be stored in the queue.

Network.AsynchronousChannel.DataQueue.read

def (self, endpoint)

Performs a read operation on endpoint and append received data to the queue. Returns true if at least one message can be constructed from the data pushed into the queue; otherwise returns false.

Network.AsynchronousChannel.DataQueue.serializer

null

Internal serializer object.

Network.AsynchronousChannel.DataQueue.write

def (self, endpoint)

Performs a write operation on endpoint using the data available in the queue. Returns true if the data was successfully sent; otherwise returns false. After this call, the sent data should be removed from the queue.

Network.AsynchronousChannel.bind

def (self)

Attempts to bind the channel to the remote device. Returns true if binding succed; otherwise returns false. This method calls the Network.EndPoint.bind method of the underling object.

An instance of Exception.SocketError is raised on error.

Network.AsynchronousChannel.close

def (self)

Closes the communication with the peer if the channel was connected using the connect method or stops listening if the channel was openned with listen. This method calls the Network.EndPoint.close method of the underling object. If the socket was successfully closed, onClose is called; otherwise the socket will be closed later.

An instance of Exception.SocketError is raised on error.

Network.AsynchronousChannel.connect

def (self)

Attempts to make a connection to the remote device. This method calls the Network.EndPoint.connect method of the underling object.

The channel is connected asynchronously when the connection is accepted by the peer. The connection will be finalized if the channel is watched (see watch) and Network.Scheduler.synchronize is called or if Network.Scheduler.poll is called with an instance of Network.Scheduler.PollDescriptor created for this object. On connection success, the onOpen method will be called.

An instance of Exception.SocketError is raised on error.

Network.AsynchronousChannel.endpoint

null

Internal underling end point.

Network.AsynchronousChannel.getEndpoint

def (const self)

Returns the underling end point object.

Network.AsynchronousChannel.getEvents

def (const self)

Returns the events expected by the channel as mask of values from the Network.Scheduler.PollEvent enum.

Network.AsynchronousChannel.getSocket

def (const self)

Returns the channel's socket as a number. This method calls the Network.EndPoint.getSocket method of the underling object.

Network.AsynchronousChannel.getState

def (const self)

Returns the current state of the channel as a value of Network.EndPoint.State. This method calls the Network.EndPoint.getState method of the underling object.

Network.AsynchronousChannel.isNonBlocking

def (const self)

Returns true if the channel performs I/O operations asynchronously (i.e. read or write data without blocking other channels); otherwise returns false. This method calls the Network.EndPoint.isNonBlocking method of the underling object.

Network.AsynchronousChannel.listen

def (self)

Tells the channel to listen for incoming connections on address configured by the end point. Returns true on success; otherwise returns false. This method calls the Network.EndPoint.listen method of the underling object. The Network.ServerSerializer should be used has serializer class to correctly handle incomming connections.

An instance of Exception.SocketError is raised on error.

Network.AsynchronousChannel.new

def (self, endpoint, Serializer = Network.TextSerializer)

Creates a new channel to manage asynchronous exchanges with the device described by endpoint. The endpoint parameter must implement the Network.EndPoint interface. The Serializer parameter must be a class implementing the network.serializers interface used to detect messages end and convert exchanged data into objects.

If the endpoint parameter is none, the channel is not created.

Network.AsynchronousChannel.notifyClosed

def (self)

Notifies the channel that the connection was closed by the peer. The connection is then closed using Network.EndPoint.close and onClose is called.

An instance of Exception.SocketError is raised on error.

Network.AsynchronousChannel.notifyConnection

def (self)

Notifies the listening channel that the underling end point has received a new connection request. The end point corrsponding to the new connection is pushed to the reply queue and onMessage is called.

An instance of Exception.SocketError is raised on error.

Network.AsynchronousChannel.notifyError

def (self)

Notifies the channel that the underling end point has received an error. The end point state is updated to Network.EndPoint.State.Error and an instance of Exception.SocketError is raised.

Network.AsynchronousChannel.notifyReadable

def (self)

Notifies the channel that the underling end point is readable. The channel will then read all available data on the end point and send it to the serializer object. If one or more message can created with the data, onMessage is called.

An instance of Exception.SocketError is raised on error.

Network.AsynchronousChannel.notifyStateChanged

def (self, % state)

Notifies the channel that the underling end point's state is about to change. The state parameter is the new state that will be applied to the end point. This value is passed to a call to onState. The previous state can still be accessed with getState until the end of the method.

[!WARNING] Calling Network.EndPoint.setState in this method can result in an infinite loop.

Network.AsynchronousChannel.notifyWritable

def (self)

Notifies the channel that the underling end point is writable. The channel will then send all available data from the serializer object to the end point. If the underling end point was connecting, the connection is finalized and onOpen is called.

An instance of Exception.SocketError is raised on error.

Network.AsynchronousChannel.onClose

def (self, channel)

This method can be rebinded to handle close events. The channel parameter is the channel that received the event. This can be used to cleanup a context or try to reconnect when the connection was closed by the peer.

Network.AsynchronousChannel.onMessage

def (self, channel)

This method can be rebinded to handle message events. The channel parameter is the channel that received the event. The messages can be accessed using the read method.

[!NOTE] This method can be called for one or more messages and will not be called until the underling end point receive more data. The read method should then be called by this method until none is returned.

Network.AsynchronousChannel.onOpen

def (self, channel)

This method can be rebinded to handle connection success events. The channel parameter is the channel that received the event. This method can be used to begin exchanges with the peer.

Network.AsynchronousChannel.onState

def (self, channel, % state)

This method can be rebinded to handle state change events. The channel parameter is the channel that received the event and the state parameter is the state that will be applied to the underling end point. The previous state can still be accessed with getState until the end of the method.

[!WARNING] Calling Network.EndPoint.setState in this method can result in an infinite loop.

Network.AsynchronousChannel.read

def (self)

Returns the next message object in the reply queue or none if no more message is available.

Messages are added asynchronously when the underling end point become readable if the channel is watched (see watch) and Network.Scheduler.synchronize is called or if Network.Scheduler.poll is called with an instance of Network.Scheduler.PollDescriptor created for this object.

The message objects are created from a DataStreamSerializer. using the serializer class. The serializer must receive enough data from the peer to construct a message using the Network.EndPoint.read method of the underling end point.

Network.AsynchronousChannel.reply

null

Internal DataQueue instance for replies waiting to be read.

Network.AsynchronousChannel.request

null

Internal DataQueue instance for requests waiting to be sent.

Network.AsynchronousChannel.setNonBlocking

def (self, enabled)

Sets the non blocking mode of the channel to enabled. This method calls the Network.EndPoint.setNonBlocking method of the underling object. Returns true if the mode was successfully changed; otherwise returns false.

[!WARNING] Disable the non blocking mode on a channel can slow down any network I/O operations of the application. Other channels will not be able to perform I/O operations until the current operation's acknowledgment by the peer.

An instance of Exception.SocketError is raised on error.

Network.AsynchronousChannel.unwatch

def (self)

Removes the channel from the Network.Scheduler object. This method calls the Network.Scheduler.remove method.

Network.AsynchronousChannel.watch

def (self)

Adds the channel to the Network.Scheduler object. This method calls the Network.Scheduler.watch method.

An instance of Exception.SocketError is raised on error.

Network.AsynchronousChannel.write

def (self, data)

Pushes the message object described by data to the request queue.

The message is not sent directly but will be sent asynchronously when the underling end point will become writable if the channel is watched (see watch) and Network.Scheduler.synchronize is called or if Network.Scheduler.poll is called with an instance of Network.Scheduler.PollDescriptor created for this object.

The message object will then be converted to Serializer.DataStream using the serializer class and sent to the peer using the Network.EndPoint.write method of the underling end point.

Network.SynchronousChannel.bind

def (self)

Attempts to bind the channel to the remote device. Returns true if binding succed; otherwise returns false. This method calls the Network.EndPoint.bind method of the underling object.

An instance of Exception.SocketError is raised on error.

Network.SynchronousChannel.close

def (self)

Closes the communication with the peer if the channel was connected using the connect method or stops listening if the channel was openned with listen. This method calls the Network.EndPoint.close method of the underling object. Returns true if the socket was successfully closed; otherwise returns false.

If the method returns false and the underling end point enters the Network.EndPoint.State.Closing state, the close operation must be finalized later using the finalizeClose method.

An instance of Exception.SocketError is raised on error.

Network.SynchronousChannel.connect

def (self)

Attempts to make a connection to the remote device. Returns true if connection succed; otherwise returns false. This method calls the Network.EndPoint.connect method of the underling object.

If the method returns false and the underling end point enters the Network.EndPoint.State.Connecting state, the connection must be finalized later using the finalizeConnection method.

An instance of Exception.SocketError is raised on error.

Network.SynchronousChannel.endpoint

null

Internal underling end point.

Network.SynchronousChannel.finalizeClose

def (self)

Finalize the close of the underling end point. Return true if the close succed; otherwise returns false. This method calls the Network.EndPoint.finalizeClose method of the underling end point.

An instance of Exception.SocketError is raised on error.

Network.SynchronousChannel.finalizeConnection

def (self)

Finalize the connection to the peer. Return true if the connection succed; otherwise returns false. This method calls the Network.EndPoint.finalizeConnection method of the underling end point.

An instance of Exception.SocketError is raised on error.

Network.SynchronousChannel.getEndpoint

def (const self)

Returns the underling end point object.

Network.SynchronousChannel.getSocket

def (const self)

Returns the channel's socket as a number. This method calls the Network.EndPoint.getSocket method of the underling object.

Network.SynchronousChannel.getState

def (const self)

Returns the current state of the channel as a value of Network.EndPoint.State. This method calls the Network.EndPoint.getState method of the underling object.

Network.SynchronousChannel.isNonBlocking

def (const self)

Returns true if the channel performs I/O operations asynchronously (i.e. read or write data without blocking other channels); otherwise returns false. This method calls the Network.EndPoint.isNonBlocking method of the underling object.

Network.SynchronousChannel.listen

def (self)

Tells the channel to listen for incoming connections on address configured by the end point. Returns true on success; otherwise returns false. This method calls the Network.EndPoint.listen method of the underling object. The Network.ServerSerializer should be used has serializer class to correctly handle incomming connections.

An instance of Exception.SocketError is raised on error.

Network.SynchronousChannel.new

def (self, endpoint, Serializer = Network.TextSerializer)

Creates a new channel to manage synchronous exchanges with the device described by endpoint. The endpoint parameter must implement the Network.EndPoint interface. The Serializer parameter must be a class implementing the network.serializers interface used to detect messages end and convert exchanged data into objects.

If the endpoint parameter is none, the channel is not created.

Network.SynchronousChannel.read

def (self)

Returns the next message object in the reply queue or none if no more message is available.

The message objects are created from a Serializer.DataStream using the serializer class. The serializer must receive enough data from the peer to construct a message using the Network.EndPoint.read method of the underling end point.

Network.SynchronousChannel.reply

null

Internal serializer object for reading replies.

Network.SynchronousChannel.request

null

Internal serializer object for writing requests.

Network.SynchronousChannel.setNonBlocking

def (self, enabled)

Sets the non blocking mode of the channel to enabled. This method calls the Network.EndPoint.setNonBlocking method of the underling object. Returns true if the mode was successfully changed; otherwise returns false.

[!WARNING] Disable the non blocking mode on a channel can slow down any network I/O operations of the application. Other channels will not be able to perform I/O operations until the current operation's acknowledgment by the peer.

An instance of Exception.SocketError is raised on error.

Network.SynchronousChannel.write

def (self)

Writes the pending data to the underling end point. Returns true if the write operation succeed; otherwise returns false and the remaining data should be sent later.

The message object will be converted to Serializer.DataStream using the serializer class and sent to the peer using the Network.EndPoint.write method of the underling end point.

def (self, data)

Writes the message object described by data to the underling end point. Returns true if the write operation succeed; otherwise returns false and the remaining data should be sent later using write.

The message object will be converted to Serializer.DataStream using the serializer class and sent to the peer using the Network.EndPoint.write method of the underling end point.