Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Class Members | File Members

DCDT_Agora Class Reference

Main dcdt object, virtualize and manage threads. More...

#include <DCDT_Agora.h>

List of all members.

Public Member Functions

 DCDT_Agora (int PO_Type=1)
 DCDT_Agora (char *filename, int PO_TYPE=1)
 ~DCDT_Agora ()
void AddMember (DCDT_Member *)
void AddSysMember (DCDT_Member *, unsigned int profile)
void RemoveMember (DCDT_Member *)
int ActivateMember (DCDT_Member *, char *name=NULL)
int ActivateSysMember (DCDT_Member *, char *name=NULL)
void LetsWork ()
 Set agora status to DCDT_LETSWORK then wait for a Shutdown or a democratic termination.
void SetStatus (int NewStatus)
bool CheckMemberProfile (int MemberID, unsigned int mask)
 Check if the profile for the member MemberID is mask.
int GetStatus ()
int ReadAgoraID ()
void ReadIPStrAddr (char *addr)
int ReadIPAddr ()
int CheckIfAllMemberReady ()
 Check if all instantiated Members are initialized and ready.
int GetFirstFreeMemberTableSlot ()
 Return the first free slot or 0 if there is no room.
void DeleteMemberTableEntry (int MemberID)
 Frees the slot for the member MemberID.
void SetActive (int MembID)
void SetInactive (int MembID)

Public Attributes

bool FirstAgora
 Flag: = 1 -> First agora running on this machine.
bool commflag
 Flag: false -> STANDALONE mode, true -> NETWORK mode.

Private Member Functions

bool CommConfig (char *filename)
 Read agora configuration.

Private Attributes

char IPStrAddr [INET_ADDRSTRLEN]
int AgoraID
 Agora unique identification based on the IP address, this is valid only for an Agora that is running a Finder ( i.e. the first Agora running in network mode ).
int IPAddr
int Status
int MaxIDMember
DCDT_PostOfficePostOffice
DCDT_MsgManagerMsgManager
DCDT_FinderFinder
DCDT_InnerLinkManagerInnerLinkManager
int LastDCDT_MemberID
DCDT_MemberTableElem MemberTable [MAX_MEMBERS]
FinderDatafinder_data


Detailed Description

Main dcdt object, virtualize and manage threads.

Each project must have at least one DCDT_Agora object.
System Members started automatically:

Definition at line 103 of file DCDT_Agora.h.


Constructor & Destructor Documentation

DCDT_Agora::DCDT_Agora int  PO_Type = 1  ) 
 

Definition at line 43 of file DCDT_Agora.cpp.

References ActivateSysMember(), AddSysMember(), AgoraID, Delay(), DeleteMemberTableEntry(), Finder, FirstAgora, InnerLinkManager, IPStrAddr, DCDT_InnerLinkManager::LookForExistingAgora(), MaxIDMember, MPM_SYSTEM, MsgManager, PostOffice, Status, TRC_ADD_THREAD, TRC_INIT, and UNIT_MAX.

DCDT_Agora::DCDT_Agora char *  filename,
int  PO_TYPE = 1
 

Definition at line 110 of file DCDT_Agora.cpp.

References ActivateSysMember(), AddSysMember(), AgoraID, CommConfig(), commflag, DCDT_TRC_AGORA, Delay(), DeleteMemberTableEntry(), Finder, finder_data, FirstAgora, _FinderData::fp, InnerLinkManager, DCDT_InnerLinkManager::LookForExistingAgora(), MaxIDMember, MPM_SYSTEM, MsgManager, PostOffice, Status, TRC_ADD_THREAD, TRC_INIT, TRC_PRINT, and UNIT_MAX.

DCDT_Agora::~DCDT_Agora  ) 
 

Class destructor

Definition at line 207 of file DCDT_Agora.cpp.

References finder_data, _FinderData::fp, TRC_END, and TRC_REMOVE_THREAD.


Member Function Documentation

int DCDT_Agora::ActivateMember DCDT_Member Memb,
char *  name = NULL
 

ActivateMember

Definition at line 338 of file DCDT_Agora.cpp.

References DCDT_Member::Activate().

Referenced by DCDT_InnerLinkManager::CreateLink(), DCDT_Finder::CreateLink(), and DCDT_LinkRx::DoYourJob().

int DCDT_Agora::ActivateSysMember DCDT_Member Memb,
char *  name = NULL
 

ActivateSysMember

Definition at line 344 of file DCDT_Agora.cpp.

References DCDT_Member::Activate().

Referenced by DCDT_Agora().

void DCDT_Agora::AddMember DCDT_Member MemberPtr  ) 
 

AddMember

Definition at line 245 of file DCDT_Agora.cpp.

References _DCDT_MemberTableElem::active, DCDT_PostOffice::AddMember(), DCDT_TRC_AGORA, _DCDT_MemberTableElem::empty, GetFirstFreeMemberTableSlot(), IPStrAddr, MaxIDMember, _DCDT_MemberTableElem::MemberPtr, MemberTable, DCDT_Member::myAgoraID, DCDT_Member::myFinder, DCDT_Member::myID, DCDT_Member::myIPAddr, DCDT_Member::myPostOffice, PostOffice, _DCDT_MemberTableElem::Profile, DCDT_Member::Profile, _DCDT_MemberTableElem::status, _DCDT_MemberTableElem::system, and TRC_PRINT.

void DCDT_Agora::AddSysMember DCDT_Member MemberPtr,
unsigned int  profile
 

AddSysMember

Definition at line 279 of file DCDT_Agora.cpp.

References _DCDT_MemberTableElem::active, DCDT_PostOffice::AddSysMember(), DCDT_TRC_AGORA, _DCDT_MemberTableElem::empty, GetFirstFreeMemberTableSlot(), MaxIDMember, _DCDT_MemberTableElem::MemberPtr, MemberTable, DCDT_Member::myAgoraID, DCDT_Member::myFinder, DCDT_Member::myID, DCDT_Member::myPostOffice, PostOffice, _DCDT_MemberTableElem::Profile, DCDT_Member::Profile, _DCDT_MemberTableElem::status, _DCDT_MemberTableElem::system, and TRC_PRINT.

Referenced by DCDT_InnerLinkManager::CreateLink(), DCDT_Finder::CreateLink(), DCDT_Agora(), and DCDT_LinkRx::DoYourJob().

int DCDT_Agora::CheckIfAllMemberReady  )  [inline]
 

Check if all instantiated Members are initialized and ready.

Definition at line 497 of file DCDT_Agora.cpp.

References _DCDT_MemberTableElem::empty, _DCDT_MemberTableElem::MemberPtr, MemberTable, DCDT_Member::Status, and _DCDT_MemberTableElem::system.

bool DCDT_Agora::CheckMemberProfile int  MemberID,
unsigned int  mask
[inline]
 

Check if the profile for the member MemberID is mask.

Parameters:
MemberID Member identifier of the member to check
mask profile to check
Returns:
true - the member has the correct profile

false - the member hasn't the correct profile

Definition at line 184 of file DCDT_Agora.h.

References MemberTable, and _DCDT_MemberTableElem::Profile.

Referenced by DCDT_PostOffice_SLWDC::AddMsg(), DCDT_PostOffice_SLWDC::CleanupList(), DCDT_PostOffice_SLWSM::SetReaders(), DCDT_PostOffice_SLWDC::SetReaders(), DCDT_PostOffice_SLWBU::SetReaders(), DCDT_Member::ShareMsg(), DCDT_PostOffice_SLWSM::SubscribeMsgTypeID(), DCDT_PostOffice_SLWDC::SubscribeMsgTypeID(), DCDT_PostOffice_SLWBU::SubscribeMsgTypeID(), DCDT_PostOffice_SLWDC::UnSubscribeAll(), DCDT_PostOffice_SLWSM::UnSubscribeMsgTypeID(), DCDT_PostOffice_SLWDC::UnSubscribeMsgTypeID(), DCDT_PostOffice_SLWBU::UnSubscribeMsgTypeID(), DCDT_PostOffice_SLWSM::UpdateSubscribersMask(), DCDT_PostOffice_SLWDC::UpdateSubscribersMask(), and DCDT_PostOffice_SLWBU::UpdateSubscribersMask().

bool DCDT_Agora::CommConfig char *  filename  )  [private]
 

Read agora configuration.

The configuration file hold all the informations about network and static links, the first line must contains the ip address of the network interface, the multicast address and the multicast port where the Agorà listens for external messages.
The format of the first line is:
<NETWORK INTERFACE IP ADDRESS> <MULTICAST ADDRESS> <MULTICAST PORT>
Ex: 192.168.26.250 225.0.0.2 2002
The following lines, if any, specify static links to other Agorae, the format of this lines is:
<CHANNEL TYPE> <"link" or "bridge"> <LEVEL> <LOCAL IP> <LOCAL PORT> <REMOTE IP> <REMOTE PORT>
<CHANNEL TYPE> can be be: IP, SER ...
"link" = ( ??? )
"bridge" = ( ??? )
Ex:TCP gateway 1 131.175.127.61 1234 198.177.56.9 1444
NOTE: If the configuration file contains invalid settings the system starts in STANDALONE mode

Definition at line 457 of file DCDT_Agora.cpp.

References AgoraID, finder_data, FinderData, _FinderData::fp, _FinderData::IfNumAddr, _FinderData::IfStrAddr, IPStrAddr, _FinderData::McNumAddr, _FinderData::McPort, and _FinderData::McStrAddr.

Referenced by DCDT_Agora().

void DCDT_Agora::DeleteMemberTableEntry int  MemberID  )  [inline]
 

Frees the slot for the member MemberID.

Definition at line 207 of file DCDT_Agora.h.

References _DCDT_MemberTableElem::empty, _DCDT_MemberTableElem::FreeSlot, DCDT_Mutex::lock(), _DCDT_MemberTableElem::MemberPtr, MemberTable, _DCDT_MemberTableElem::mtx, _DCDT_MemberTableElem::num_missed_deadlines, and DCDT_Mutex::unlock().

Referenced by DCDT_Agora(), and RemoveMember().

int DCDT_Agora::GetFirstFreeMemberTableSlot  )  [inline]
 

Return the first free slot or 0 if there is no room.

Definition at line 191 of file DCDT_Agora.h.

References _DCDT_MemberTableElem::FreeSlot, DCDT_Mutex::lock(), MemberTable, _DCDT_MemberTableElem::mtx, and DCDT_Mutex::unlock().

Referenced by AddMember(), and AddSysMember().

int DCDT_Agora::GetStatus  )  [inline]
 

Definition at line 173 of file DCDT_Agora.h.

Referenced by DCDT_Member::LifeCycle(), and DCDT_Member::Run().

void DCDT_Agora::LetsWork  ) 
 

Set agora status to DCDT_LETSWORK then wait for a Shutdown or a democratic termination.

Definition at line 353 of file DCDT_Agora.cpp.

References _DCDT_MemberTableElem::active, DCDT_MemberTableElem, DCDT_TRC_AGORA, Delay(), _DCDT_MemberTableElem::empty, _DCDT_MemberTableElem::MemberPtr, MemberTable, DCDT_Member::Status, Status, _DCDT_MemberTableElem::system, and TRC_PRINT.

int DCDT_Agora::ReadAgoraID  )  [inline]
 

Definition at line 122 of file DCDT_Agora.h.

int DCDT_Agora::ReadIPAddr  )  [inline]
 

Definition at line 124 of file DCDT_Agora.h.

void DCDT_Agora::ReadIPStrAddr char *  addr  )  [inline]
 

Definition at line 123 of file DCDT_Agora.h.

Referenced by DCDT_Member::DCDT_Member().

void DCDT_Agora::RemoveMember DCDT_Member MemberPtr  ) 
 

RemoveMember

Definition at line 313 of file DCDT_Agora.cpp.

References DCDT_TRC_AGORA, Delay(), DeleteMemberTableEntry(), DCDT_PostOffice::DeleteMemberTableEntry(), DCDT_Member::myID, DCDT_Member::myThread, PostOffice, DCDT_Member::Status, and TRC_PRINT.

Referenced by DCDT_Finder::CloseLink(), DCDT_LinkRx::DoYourJob(), DCDT_InnerLinkManager::DoYourJob(), and DCDT_InnerLinkManager::Init().

void DCDT_Agora::SetActive int  MembID  )  [inline]
 

Definition at line 139 of file DCDT_Agora.h.

Referenced by DCDT_Member::LifeCycle().

void DCDT_Agora::SetInactive int  MembID  )  [inline]
 

Definition at line 140 of file DCDT_Agora.h.

Referenced by DCDT_Member::LifeCycle().

void DCDT_Agora::SetStatus int  NewStatus  ) 
 

SetStatus

Definition at line 492 of file DCDT_Agora.cpp.

References Status.

Referenced by DCDT_Member::Shutdown().


Member Data Documentation

int DCDT_Agora::AgoraID [private]
 

Agora unique identification based on the IP address, this is valid only for an Agora that is running a Finder ( i.e. the first Agora running in network mode ).

Definition at line 148 of file DCDT_Agora.h.

Referenced by CommConfig(), and DCDT_Agora().

bool DCDT_Agora::commflag
 

Flag: false -> STANDALONE mode, true -> NETWORK mode.

Definition at line 137 of file DCDT_Agora.h.

Referenced by DCDT_Agora().

DCDT_Finder* DCDT_Agora::Finder [private]
 

Definition at line 157 of file DCDT_Agora.h.

Referenced by DCDT_Agora().

FinderData* DCDT_Agora::finder_data [private]
 

Definition at line 166 of file DCDT_Agora.h.

Referenced by CommConfig(), DCDT_Agora(), and ~DCDT_Agora().

bool DCDT_Agora::FirstAgora
 

Flag: = 1 -> First agora running on this machine.

Definition at line 134 of file DCDT_Agora.h.

Referenced by DCDT_Agora().

DCDT_InnerLinkManager* DCDT_Agora::InnerLinkManager [private]
 

Definition at line 160 of file DCDT_Agora.h.

Referenced by DCDT_Agora().

int DCDT_Agora::IPAddr [private]
 

Definition at line 149 of file DCDT_Agora.h.

char DCDT_Agora::IPStrAddr[INET_ADDRSTRLEN] [private]
 

Definition at line 145 of file DCDT_Agora.h.

Referenced by AddMember(), CommConfig(), and DCDT_Agora().

int DCDT_Agora::LastDCDT_MemberID [private]
 

Definition at line 162 of file DCDT_Agora.h.

int DCDT_Agora::MaxIDMember [private]
 

Max ID of the created Members

Definition at line 153 of file DCDT_Agora.h.

Referenced by AddMember(), AddSysMember(), and DCDT_Agora().

DCDT_MemberTableElem DCDT_Agora::MemberTable[MAX_MEMBERS] [private]
 

Definition at line 164 of file DCDT_Agora.h.

Referenced by AddMember(), AddSysMember(), CheckIfAllMemberReady(), CheckMemberProfile(), DeleteMemberTableEntry(), GetFirstFreeMemberTableSlot(), and LetsWork().

DCDT_MsgManager* DCDT_Agora::MsgManager [private]
 

Definition at line 156 of file DCDT_Agora.h.

Referenced by DCDT_Agora().

DCDT_PostOffice* DCDT_Agora::PostOffice [private]
 

Definition at line 155 of file DCDT_Agora.h.

Referenced by AddMember(), AddSysMember(), DCDT_Agora(), and RemoveMember().

int DCDT_Agora::Status [private]
 

Definition at line 150 of file DCDT_Agora.h.

Referenced by DCDT_Agora(), LetsWork(), and SetStatus().


The documentation for this class was generated from the following files:
Generated on Sun Jun 19 10:35:51 2005 for dcdt by  doxygen 1.3.9.1