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

Kamaelia.Internet.TCPServer

TCP Socket Server

A building block for creating a TCP based network server. It accepts incoming connection requests and sets up a component to handle the socket which it then passes on.

This component does not handle the instantiation of components to handle an accepted connection request. Another component is needed that responds to this component and actually does something with the newly established connection. If you require a more complete implementation that does this, see Kamaelia.Internet.SingleServer or Kamaelia.Chassis.ConnectedServer.

Example Usage

See Kamaelia.Internet.SingleServer or Kamaelia.Chassis.ConnectedServer for examples of how this component can be used.

The process of using a TCPServer component can be summarised as: - Create a TCP Server - Wait for newCSA messages from the TCP Server's "protocolHandlerSignal" outbox - Send what you like to CSA's, ensure you recieve data from the CSAs - Send producerFinished to the CSA to shut it down.

How does it work?

This component creates a listener socket, bound to the specified port, and registers itself and the socket with a selectorComponent so it is notified of incoming connections. The selectorComponent is obtained by calling selectorComponent.getSelectorService(...) to look it up with the local Coordinating Assistant Tracker (CAT).

When the it recieves a new connection it performs an accept, and creates a ConnectedSocketAdapter (CSA) to handle the activity on that connection.

The CSA is passed in a newCSA(self,CSA) message to TCPServer's "protocolHandlerSignal" outbox.

The CSA is also registered with the selector service by sending it a newCSA(self,(CSA,sock)) message, to ensure the CSA is notified of incoming data on its socket.

The client component(s) using the TCPServer should handle the newly created CSA passed to it in whatever way it sees fit.

If a socketShutdown message is received on the "_feedbackFromCSA" inbox, then a shutdownCSA(self, CSA) message is sent to TCPServer's "protocolHandlerSignal" outbox to notify the client component that the connection has closed.

Also, a shutdownCSA(self, (CSA, sock)) message is sent to the selector service to deregister the CSA from receiving notifications.

This component does not terminate.


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

  • control : we expect to recieve serverShutdown messages here
  • newconnection : We expected to recieve a message here when a new connection is ready
  • _feedbackFromCSA : for feedback from ConnectedSocketAdapter (shutdown messages)

Outboxes

  • protocolHandlerSignal : For passing on newly created ConnectedSocketAdapter components
  • signal : NOT USED
  • _selectorShutdownSignal : To deregister our interest with the selector
  • _selectorSignal : For registering newly created ConnectedSocketAdapter components with a selector service

Methods defined here

Warning!

You should be using the inbox/outbox interface, not these methods (except construction). This documentation is designed as a roadmap as to their functionalilty for maintainers and new component developers.

__init__(self, listenport, socketOptions, **argd)

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

anyClosedSockets(self)

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

closeSocket(self, shutdownMessage)

Respond to a socketShutdown message by closing the socket.

Sends a removeReader and removeWriter 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.

main(self)

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).

stop(self)

Feedback

Got a problem with the documentation? Something unclear that could be clearer? Want to help improve it? Constructive criticism is very welcome - especially if you can suggest a better rewording!

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

-- Automatic documentation generator, 05 Jun 2009 at 03:01:38 UTC/GMT