ObjectClassBroadcastList.hh

Go to the documentation of this file.
00001 // ----------------------------------------------------------------------------
00002 // CERTI - HLA RunTime Infrastructure
00003 // Copyright (C) 2002, 2003  ONERA
00004 //
00005 // This file is part of CERTI-libCERTI
00006 //
00007 // CERTI-libCERTI is free software ; you can redistribute it and/or
00008 // modify it under the terms of the GNU Lesser General Public License
00009 // as published by the Free Software Foundation ; either version 2 of
00010 // the License, or (at your option) any later version.
00011 //
00012 // CERTI-libCERTI is distributed in the hope that it will be useful, but
00013 // WITHOUT ANY WARRANTY ; without even the implied warranty of
00014 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
00015 // Lesser General Public License for more details.
00016 //
00017 // You should have received a copy of the GNU Lesser General Public
00018 // License along with this program ; if not, write to the Free Software
00019 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
00020 // USA
00021 //
00022 // $Id: ObjectClassBroadcastList.hh,v 3.10 2008/06/11 15:19:22 rousse Exp $
00023 // ----------------------------------------------------------------------------
00024 
00025 #ifndef CERTI_OBJECT_CLASS_BROADCAST_LIST_HH
00026 #define CERTI_OBJECT_CLASS_BROADCAST_LIST_HH
00027 
00028 #include "certi.hh"
00029 #include "NetworkMessage.hh"
00030 #include "SecurityServer.hh"
00031 
00032 #include <list>
00033 
00034 #define MAX_STATE_SIZE 1024
00035 
00036 namespace certi {
00037 
00038 class ObjectBroadcastLine {
00039 public:
00040     enum State { sent, waiting, notSub };
00041 
00042     ObjectBroadcastLine(FederateHandle fed, State init = notSub);
00043 
00044     FederateHandle Federate ;
00045 
00046     State state[MAX_STATE_SIZE+1] ;
00047 
00048 };
00049 
00053 class ObjectClassBroadcastList {
00054 
00055 public:
00056     ObjectClassBroadcastList(NetworkMessage *, AttributeHandle = 0);
00057     ~ObjectClassBroadcastList();
00058 
00059     void clear();
00060     void addFederate(FederateHandle, AttributeHandle = 0);
00061     void sendPendingMessage(SecurityServer *server);
00062 
00063     NetworkMessage *message ;
00064 
00065 private:
00066     NetworkMessage *adaptMessage(ObjectBroadcastLine *line);
00067 
00069     ObjectBroadcastLine *getLineWithFederate(FederateHandle theFederate);
00070 
00071     bool isWaiting(ObjectBroadcastLine *line);
00072 
00077     void sendPendingDOMessage(SecurityServer *server);
00078     void sendPendingRAVMessage(SecurityServer *server);
00079 
00080     AttributeHandle maxHandle ;
00081     std::list<ObjectBroadcastLine *> lines ;
00082     /* The message buffer used to send Network messages */
00083     MessageBuffer NM_msgBufSend;
00084 };
00085 
00086 } // namespace certi
00087 
00088 #endif // CERTI_OBJECT_CLASS_BROADCAST_LIST_HH
00089 
00090 // $Id: ObjectClassBroadcastList.hh,v 3.10 2008/06/11 15:19:22 rousse Exp $

Generated on Thu Apr 30 15:53:49 2009 for CERTIDeveloperDocumentation by doxygen 1.5.5