ecologylab.services.distributed.server.contextmanager
Class KMLGetClientManager

java.lang.Object
  extended by ecologylab.generic.Debug
      extended by ecologylab.services.distributed.server.clientmanager.AbstractClientManager
          extended by ecologylab.services.distributed.server.clientmanager.ClientManager
              extended by ecologylab.services.distributed.server.contextmanager.KMLGetClientManager
All Implemented Interfaces:
NetworkingConstants, ServerConstants

public class KMLGetClientManager
extends ClientManager

This client manager simply serves whatever object is located at KML_DATA in the ObjectRegistry. This is expected to be a Kml object.

Author:
Zach

Field Summary
 
Fields inherited from class ecologylab.services.distributed.server.clientmanager.AbstractClientManager
frontend, headerBufOutgoing, headerMap, initialized, maxPacketSize, messageWaiting, msgBufIncoming, msgBufOutgoing, registry, requestQueue, server, sessionId, socketKey, startLine, startReadIndex, translationSpace
 
Fields inherited from interface ecologylab.services.distributed.common.ServerConstants
GARBAGE_CONNECTION_CLEANUP_TIMEOUT, MAX_CONNECTIONS, MAXIMUM_TRANSMISSION_ERRORS
 
Fields inherited from interface ecologylab.services.distributed.common.NetworkingConstants
CHARACTER_ENCODING, CONTENT_LENGTH_STRING, CONTENT_LENGTH_STRING_LENGTH, DECODER, ENCODER, HTTP_HEADER_LINE_DELIMITER, HTTP_HEADER_TERMINATOR, MAX_HTTP_HEADER_LENGTH, MAX_PACKET_SIZE_BYTES, MAX_PACKET_SIZE_CHARACTERS, UNIQUE_IDENTIFIER_STRING
 
Constructor Summary
KMLGetClientManager(java.lang.Object token, int maxPacketSize, NIOServerBackend server, NIOServerFrontend frontend, java.nio.channels.SelectionKey socketKey, TranslationSpace translationSpace, Scope<?> registry)
           
 
Method Summary
protected  void clearOutgoingMessageBuffer(java.lang.StringBuilder outgoingMessageBuf)
          Clears the contents of the outgoingMessageBuffer so that it is empty and ready to recieve a new outgoing message.
protected  void clearOutgoingMessageHeaderBuffer(java.lang.StringBuilder outgoingMessageHeaderBuf)
          Clears the contents of the outgoingMessageHeaderBuffer so that it is prepared for the next outgoing message.
protected  void createHeader(java.lang.StringBuilder outgoingMessageBuf, java.lang.StringBuilder outgoingMessageHeaderBuf, RequestMessage incomingRequest, ResponseMessage outgoingResponse, long uid)
          Generates the outgoing message header.
protected  void prepareBuffers(java.lang.StringBuilder incomingMessageBuf, java.lang.StringBuilder outgoingMessageBuf, java.lang.StringBuilder outgoingMessageHeaderBuf)
          Prepares the internal buffer objects, which are passed in as parameters.
protected  void translateResponseMessageToStringBufferContents(RequestMessage requestMessage, ResponseMessage responseMessage, java.lang.StringBuilder outgoingMessageBuf)
          Translates response into an XML string and adds an HTTP-like header, then returns the result.
protected  RequestMessage translateStringToRequestMessage(java.lang.CharSequence messageSequence)
          Translates the given XML String into a RequestMessage object.
 
Methods inherited from class ecologylab.services.distributed.server.clientmanager.AbstractClientManager
enqueueRequest, getLastActivity, getNextRequest, getSocketKey, isInitialized, isMessageWaiting, parseHeader, performService, processAllMessagesAndSendResponses, processIncomingSequenceBufToQueue, setSocket, shutdown
 
Methods inherited from class ecologylab.generic.Debug
classSimpleName, closeLoggingFile, debug, debug, debug, debug, debugA, debugA, debugA, debugI, debugI, debugI, error, error, getClassName, getClassName, getInteractive, getPackageName, getPackageName, getPackageName, initialize, level, level, level, logToFile, print, print, println, println, println, println, println, println, printlnA, printlnA, printlnA, printlnI, printlnI, printlnI, printlnI, setLoggingFile, show, show, superString, toggleInteractive, toString, toString, warning, warning, weird, weird
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

KMLGetClientManager

public KMLGetClientManager(java.lang.Object token,
                           int maxPacketSize,
                           NIOServerBackend server,
                           NIOServerFrontend frontend,
                           java.nio.channels.SelectionKey socketKey,
                           TranslationSpace translationSpace,
                           Scope<?> registry)
Parameters:
token -
maxPacketSize -
server -
frontend -
socketKey -
translationSpace -
registry -
Method Detail

translateResponseMessageToStringBufferContents

protected void translateResponseMessageToStringBufferContents(RequestMessage requestMessage,
                                                              ResponseMessage responseMessage,
                                                              java.lang.StringBuilder outgoingMessageBuf)
                                                       throws XMLTranslationException
Description copied from class: ClientManager
Translates response into an XML string and adds an HTTP-like header, then returns the result. translateResponseMessageToString(RequestMessage, ResponseMessage) may be overridden to provide more specific functionality; for example, for servers that use customized messages instead of XML.

Overrides:
translateResponseMessageToStringBufferContents in class ClientManager
Parameters:
requestMessage - - the current request.
responseMessage - - the ResponseMessage generated by processing requestMessage.
outgoingMessageBuf - - buffer must be passed in to this method -- it will contain the results of the translation and will be used by the calling method to send data back to the client.
Throws:
XMLTranslationException

translateStringToRequestMessage

protected RequestMessage translateStringToRequestMessage(java.lang.CharSequence messageSequence)
                                                  throws XMLTranslationException,
                                                         java.io.UnsupportedEncodingException
Description copied from class: AbstractClientManager
Translates the given XML String into a RequestMessage object. translateStringToRequestMessage(String) may be overridden to provide specific functionality, such as a ContextManager that does not use XML Strings.

Overrides:
translateStringToRequestMessage in class AbstractClientManager
Parameters:
messageSequence - - an XML String representing a RequestMessage object.
Returns:
the RequestMessage created by translating messageString into an object.
Throws:
XMLTranslationException - if an error occurs when translating from XML into a RequestMessage.
java.io.UnsupportedEncodingException - if the String is not encoded properly.

clearOutgoingMessageBuffer

protected void clearOutgoingMessageBuffer(java.lang.StringBuilder outgoingMessageBuf)
Description copied from class: ClientManager
Clears the contents of the outgoingMessageBuffer so that it is empty and ready to recieve a new outgoing message.

Overrides:
clearOutgoingMessageBuffer in class ClientManager

clearOutgoingMessageHeaderBuffer

protected void clearOutgoingMessageHeaderBuffer(java.lang.StringBuilder outgoingMessageHeaderBuf)
Description copied from class: ClientManager
Clears the contents of the outgoingMessageHeaderBuffer so that it is prepared for the next outgoing message. This implementation leaves "content-length:" so that it can be reused for the next message.

Overrides:
clearOutgoingMessageHeaderBuffer in class ClientManager

createHeader

protected void createHeader(java.lang.StringBuilder outgoingMessageBuf,
                            java.lang.StringBuilder outgoingMessageHeaderBuf,
                            RequestMessage incomingRequest,
                            ResponseMessage outgoingResponse,
                            long uid)
Description copied from class: ClientManager
Generates the outgoing message header. This implementation assumes that the outgoingMessageHeaderBuf contains "content-length: " and will add the content length, based on the contents of msgBufOutgoing, however, custom implementations for more specific purposes may be constructed.

Overrides:
createHeader in class ClientManager
incomingRequest - TODO
outgoingResponse - TODO

prepareBuffers

protected void prepareBuffers(java.lang.StringBuilder incomingMessageBuf,
                              java.lang.StringBuilder outgoingMessageBuf,
                              java.lang.StringBuilder outgoingMessageHeaderBuf)
Description copied from class: ClientManager
Prepares the internal buffer objects, which are passed in as parameters. This is a hook method, custom subclasses may wish to override it with different (or, in some cases, no) functionality. This implementation adds "content-length: " to the outgoingMessageHeaderBuf for performance purposes. Subclasses that do not use this optimization should override this method with one that does nothing.

Overrides:
prepareBuffers in class ClientManager