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.
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.
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.
TCPServer(listenport) -> TCPServer component listening on the specified port.
Creates a TCPServer component that accepts all connection requests on the specified port.
Methods defined here
x.__init__(...) initializes x; see x.__class__.__doc__ for signature
Check "_feedbackFromCSA" inbox for socketShutdown messages, and close sockets in response.
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.
Accepts the connection request on the specified socket and returns a ConnectedSocketAdapter component for it.
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.
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).
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
This is an ongoing community based development site. As a result the contents of this page is the opinions of the contributors of the pages involved not the organisations involved. Specificially, this page may contain personal views which are not the views of the BBC. (the site is powered by a wiki engine)
(C) Copyright 2008 Kamaelia Contributors, including the British Broadcasting Corporation, All Rights Reserved.