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

CODEX_Server::QuorumBuilderAct Class Reference

This activity attempts to maintain connectivity with other servers in the quorum system. More...

#include <QuorumBuilderAct.h>

Inheritance diagram for CODEX_Server::QuorumBuilderAct:

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

Collaboration graph
[legend]
List of all members.

Public Member Functions

 QuorumBuilderAct (CODEX_Events::DeadPileType &deadPile, CODEX_Events::QType &eventQueue)
 The constructor builds the activity and generates a QuorumBuilderEvent.
virtual ~QuorumBuilderAct ()
 Virtual destructor.
bool handler (QuorumBuilderEvent &event)
 Handle a QuorumBuilderEvent.
bool handler (QuorumBuilderExpectNonceEvent &event)
 Handle a QuorumBuilderExpectNonceEvent.
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 activity attempts to maintain connectivity with other servers in the quorum system.

It generates and handles its own event, which acts as a trigger and contains no actual data, aside from enough state to prevent deadlock. Every time the handler is called, it will check for missing servers in the quorum system's list and attempt to contact them. An additional event controls the authentication protocol stages.

Definition at line 39 of file QuorumBuilderAct.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().

bool QuorumBuilderAct::handler QuorumBuilderExpectNonceEvent event  ) 
 

Handle a QuorumBuilderExpectNonceEvent.

This handler waits for the remote server to send a nonce challenge, at which point it computes the response and sends it to the server.

Parameters:
event The event containing the connection protocol state.
Return values:
true The remote server has sent the challenge and a suitable response has been returned to it.
false The remote server has not yet responded.

Definition at line 102 of file QuorumBuilderAct.cc.

References CODEX_Server::ServerState::addQuorumServer(), CODEX_Quorum::Message::fill(), CODEX_Server::ServerState::hashFunc(), CODEX_Server::ServerState::hostNum(), CODEX_ASN1::Base::initialized(), CODEX_Server::ServerState::instance(), CODEX_Quorum::RemoteServer::isset_fd(), CODEX_ASN1::BigNumber::marshal(), CODEX_Server::ServerState::privateKey(), CODEX_Quorum::RemoteServer::sendTo(), CODEX_Quorum::RemoteServer::set_fd(), CODEX_Ciphers::RSAPrivateKey::sign(), and CODEX_ASN1::BigNumber::unmarshal().

bool QuorumBuilderAct::handler QuorumBuilderEvent event  ) 
 

Handle a QuorumBuilderEvent.

This event is just a trigger for the handler to try to make any outstanding connections to other servers in the quorum system.

Parameters:
event The triggering event
Returns:
false, which will keep this event perpetually in the queue.

Definition at line 51 of file QuorumBuilderAct.cc.

References CODEX_Server::ServerState::haveQuorumServer(), CODEX_Server::ServerState::hostName(), CODEX_Server::ServerState::hostNum(), CODEX_Server::ServerState::instance(), CODEX_Events::Activity::sendEvent(), CODEX_Server::ServerState::serverOutSocketBuilder(), and CODEX_Server::ServerState::serverPort().

Referenced by CODEX_Server::QuorumBuilderExpectNonceEvent::handle(), and CODEX_Server::QuorumBuilderEvent::handle().

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(), 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(), QuorumBuilderAct(), CODEX_APSS::MessageDeliverer::sendTo(), CODEX_Server::ShareLabelChallengeHandler::ShareLabelChallengeHandler(), and CODEX_APSS::TriggerActivity::TriggerActivity().


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