Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

CODEX_Server::MessageParser Class Reference

This class provides an object abstraction for parsing routines. More...

#include <MessageParser.h>

Inheritance diagram for CODEX_Server::MessageParser:

Inheritance graph
[legend]
Collaboration diagram for CODEX_Server::MessageParser:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 MessageParser ()
 Constructor.
virtual ~MessageParser ()
 Virtual destructor.
virtual void operator() (unsigned char *server, unsigned char *mID, CODEX_Quorum::Message *m)=0
 Parse and dispatch a message.
virtual bool handler (EventAck &event)
 The base class is responsible for handling acknowledgements, which are relevant to whether the Activity is ready for deletion.

Protected Member Functions

void sendEvent (EventBase *event, Activity *source, bool failure=false)
void enableTerminate ()
 This method should be called when an Activity has received a CloseEvent or other indicator that it is no longer needed.

Protected Attributes

DeadPileType & m_deadPile
 The pile of Activity%s to be garbage-collected.
QType & m_queue
 The event queue.

Detailed Description

This class provides an object abstraction for parsing routines.

All message categories should define a MessageParser, which can then be used to read messages in marshalled form and construct appropriately typed objects from the messages. The resulting object should then be dispatched as an event, and the parser absorbs the acknowledgments.

MessageParser inherits CODEX_Events::Activity as a virtual base class so that a concrete class inheriting multiple abstract type-specific bases will have only one copy of type Activity. This eliminates ambiguity with regards to event counts and object deletion. It also allows us to use a default constructor, since the arguments forwarded to Activity::Activity() will never actually be passed. Instead, the derived class should pass arguments directly to Activity::Activity() in its constructor.

Definition at line 43 of file CODEX_Server/MessageParser.h.


Member Function Documentation

void Activity::enableTerminate  )  [protected, inherited]
 

This method should be called when an Activity has received a CloseEvent or other indicator that it is no longer needed.

Actual termination will not occur until there are no remaining events outstanding (unacknowledged).

Definition at line 63 of file Activity.cc.

Referenced by CODEX_KeyService::ClientActivity::handler(), and CODEX_KeyService::ClientActivity::processRequest().

bool Activity::handler EventAck event  )  [virtual, inherited]
 

The base class is responsible for handling acknowledgements, which are relevant to whether the Activity is ready for deletion.

If a derived class reimpliments this method, it must call this version explicitly.

Definition at line 39 of file Activity.cc.

Referenced by CODEX_Events::EventAck::handle(), and CODEX_KeyService::ClientActivity::handler().

virtual void CODEX_Server::MessageParser::operator() unsigned char *  server,
unsigned char *  mID,
CODEX_Quorum::Message m
[pure virtual]
 

Parse and dispatch a message.

The memory for all arguments is taken over by the MessageParser.

Parameters:
server Originating server
mID Unique ID for the message
m Marshalled message

Implemented in CODEX_APSS::MessageParser, CODEX_KeyService::ClientMessageParser, and CODEX_KeyService::ClientResponseParser.

void Activity::sendEvent EventBase event,
Activity source,
bool  failure = false
[protected, inherited]
 

Parameters:
event New event to be added to the queue
source Source of event just handled, to which an acknowledgement should be sent. This is accessed by the method EventBase::source().
failure Is the acknowledgment a negative ack?

Definition at line 49 of file Activity.cc.

References CODEX_Events::Activity::m_queue.

Referenced by CODEX_APSS::InitActivity::addEvidence(), CODEX_APSS::MessageDeliverer::broadcast(), CODEX_KeyService::ClientActivity::close(), CODEX_Server::UnicastRequestHandler::handler(), CODEX_Server::ShareLabelChallengeHandler::handler(), CODEX_Server::ServerResponseHandler::handler(), CODEX_Server::QuorumBuilderAct::handler(), CODEX_APSS::MessageVerifier::handler(), CODEX_APSS::MessageProcessor::handler(), CODEX_APSS::InitActivity::handler(), CODEX_KeyService::DelegateResponseVerifier::handler(), CODEX_KeyService::DelegateRequestDistributor::handler(), CODEX_KeyService::ClientResponseSigner::handler(), CODEX_KeyService::ClientMessageVerifier::handler(), CODEX_KeyService::ClientMessageSigner::handler(), CODEX_KeyService::ClientMessageAbsorber::handler(), CODEX_KeyService::ClientActivity::handler(), CODEX_Server::BroadcastRequestHandler::handler(), CODEX_KeyService::VerifyWriteCallback::operator()(), CODEX_KeyService::SignWriteCallback::operator()(), CODEX_KeyService::SignReadCallback::operator()(), CODEX_KeyService::SignCreateCallback::operator()(), CODEX_APSS::MessageParser::operator()(), CODEX_KeyService::ClientWriteCallback::operator()(), CODEX_KeyService::ClientResponseParser::operator()(), CODEX_KeyService::ClientReadCallback::operator()(), CODEX_KeyService::ClientMessageParser::operator()(), CODEX_KeyService::ClientCreateCallback::operator()(), CODEX_KeyService::ClientActivity::processRequest(), CODEX_Server::QuorumBuilderAct::QuorumBuilderAct(), CODEX_APSS::MessageDeliverer::sendTo(), CODEX_Server::ShareLabelChallengeHandler::ShareLabelChallengeHandler(), and CODEX_APSS::TriggerActivity::TriggerActivity().


The documentation for this class was generated from the following file:
Generated on Fri May 6 17:42:41 2005 for COrnell Data EXchange (CODEX) by  doxygen 1.4.1