April 2024 - This site, and Kamaelia are being updated. There is significant work needed, and PRs are welcome.

Kamaelia.Internet.TCPServer.TCPServer

class TCPServer(Axon.Component.component)

TCPServer(listenport) -> TCPServer component listening on the specified port.

Creates a TCPServer component that accepts all connection requests on the specified port.

Inboxes

Outboxes

Methods defined here

Warning!

__init__(self, listenport)

x.__init__(...) initializes x; see x.__class__.__doc__ for signature

checkForClosedSockets(self)

Check "_csa_feedback" inbox for socketShutdown messages, and close sockets in response.

closeSocket(self, shutdownMessage)

Respond to a socketShutdown message by closing the socket.

Sends a shutdownCSA(self, (theCSA, sock)) message to the selectorComponent. Sends a shutdownCSA(self, theCSA) message to "protocolHandlerSignal" outbox.

createConnectedSocket(self, sock)

Accepts the connection request on the specified socket and returns a ConnectedSocketAdapter component for it.

handleNewConnection(self)

Handle notifications from the selector service of new connection requests.

Accepts and sets up new connections, wiring them up and passing them on via the "protocolHandlerSignal" outbox.

initialiseComponent(self)

Obtains a selector service and wires up to it, registering self to be notified of incoming connection requests on a socket bound to the port its supposed to be listening to.

mainBody(self)

Main loop

makeTCPServerPort(self, suppliedport, HOST, minrange, maxrange, maxlisten)

Returns (socket,port) - a bound TCP listener socket and the port number it is listening on.

If suppliedPort is not specified, then a random port is chosen between minrange and maxrange inclusive.

maxlisten is the max number of pending requests the server will allow (queue up).


Feedback

Got a problem with the documentation? Something unclear, could be clearer? Want to help with improving? Constructive criticism, preferably in the form of suggested rewording is very welcome.

Please leave the feedback here, in reply to the documentation thread in the Kamaelia blog.