[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[certi-cvs] certi RTIG/FederationsList.cc RTIG/Federation.c...
From: |
certi-cvs |
Subject: |
[certi-cvs] certi RTIG/FederationsList.cc RTIG/Federation.c... |
Date: |
Wed, 18 Nov 2009 18:50:49 +0000 |
CVSROOT: /sources/certi
Module name: certi
Changes by: Eric NOULARD <erk> 09/11/18 18:50:49
Modified files:
RTIG : FederationsList.cc Federation.cc
FederationsList.hh RTIG_processing.cc
Federation.hh
RTIA : Statistics.cc FederationManagement.cc
FederationManagement.hh RTIA.cc
RTIA_federate.cc
scripts : NW_MessageType.txt GenerateMessages.py
CERTI_NetworkMessage.msg
libCERTI : Interaction.cc ObjectClass.cc Interaction.hh
ObjectClass.hh RoutingSpace.hh
ObjectClassAttribute.cc PrettyDebEx.cc
RootObject.hh NM_Classes.cc NM_Classes.hh
NetworkMessage.hh RootObject.cc
Log message:
Merge-in
patch #6939: Send object model information as binary encoding
from Mathias
There are some improvement to to after this patch
but the overall idea is OK.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/certi/RTIG/FederationsList.cc?cvsroot=certi&r1=3.64&r2=3.65
http://cvs.savannah.gnu.org/viewcvs/certi/RTIG/Federation.cc?cvsroot=certi&r1=3.114&r2=3.115
http://cvs.savannah.gnu.org/viewcvs/certi/RTIG/FederationsList.hh?cvsroot=certi&r1=3.48&r2=3.49
http://cvs.savannah.gnu.org/viewcvs/certi/RTIG/RTIG_processing.cc?cvsroot=certi&r1=3.89&r2=3.90
http://cvs.savannah.gnu.org/viewcvs/certi/RTIG/Federation.hh?cvsroot=certi&r1=3.58&r2=3.59
http://cvs.savannah.gnu.org/viewcvs/certi/RTIA/Statistics.cc?cvsroot=certi&r1=3.19&r2=3.20
http://cvs.savannah.gnu.org/viewcvs/certi/RTIA/FederationManagement.cc?cvsroot=certi&r1=3.75&r2=3.76
http://cvs.savannah.gnu.org/viewcvs/certi/RTIA/FederationManagement.hh?cvsroot=certi&r1=3.25&r2=3.26
http://cvs.savannah.gnu.org/viewcvs/certi/RTIA/RTIA.cc?cvsroot=certi&r1=3.30&r2=3.31
http://cvs.savannah.gnu.org/viewcvs/certi/RTIA/RTIA_federate.cc?cvsroot=certi&r1=3.100&r2=3.101
http://cvs.savannah.gnu.org/viewcvs/certi/scripts/NW_MessageType.txt?cvsroot=certi&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/certi/scripts/GenerateMessages.py?cvsroot=certi&r1=1.22&r2=1.23
http://cvs.savannah.gnu.org/viewcvs/certi/scripts/CERTI_NetworkMessage.msg?cvsroot=certi&r1=1.11&r2=1.12
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/Interaction.cc?cvsroot=certi&r1=3.54&r2=3.55
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/ObjectClass.cc?cvsroot=certi&r1=3.68&r2=3.69
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/Interaction.hh?cvsroot=certi&r1=3.36&r2=3.37
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/ObjectClass.hh?cvsroot=certi&r1=3.45&r2=3.46
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/RoutingSpace.hh?cvsroot=certi&r1=3.10&r2=3.11
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/ObjectClassAttribute.cc?cvsroot=certi&r1=3.33&r2=3.34
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/PrettyDebEx.cc?cvsroot=certi&r1=4.7&r2=4.8
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/RootObject.hh?cvsroot=certi&r1=3.32&r2=3.33
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/NM_Classes.cc?cvsroot=certi&r1=3.19&r2=3.20
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/NM_Classes.hh?cvsroot=certi&r1=3.14&r2=3.15
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/NetworkMessage.hh?cvsroot=certi&r1=3.49&r2=3.50
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/RootObject.cc?cvsroot=certi&r1=3.42&r2=3.43
Patches:
Index: RTIG/FederationsList.cc
===================================================================
RCS file: /sources/certi/certi/RTIG/FederationsList.cc,v
retrieving revision 3.64
retrieving revision 3.65
diff -u -b -r3.64 -r3.65
--- RTIG/FederationsList.cc 21 Oct 2009 20:04:45 -0000 3.64
+++ RTIG/FederationsList.cc 18 Nov 2009 18:50:48 -0000 3.65
@@ -18,7 +18,7 @@
// along with this program ; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
-// $Id: FederationsList.cc,v 3.64 2009/10/21 20:04:45 erk Exp $
+// $Id: FederationsList.cc,v 3.65 2009/11/18 18:50:48 erk Exp $
// ----------------------------------------------------------------------------
#include <config.h>
@@ -281,7 +281,8 @@
FederateHandle
FederationsList::addFederate(Handle handle,
const char *name,
- SocketTCP *tcp_link)
+ SocketTCP *tcp_link,
+ NM_Join_Federation_Execution& objectModelData)
throw (FederationExecutionDoesNotExist,
FederateAlreadyExecutionMember,
MemoryExhausted,
@@ -303,6 +304,8 @@
// adding the federate and return its handle
FederateHandle federate = federation->add(name, tcp_link);
+ federation->getFOM(objectModelData);
+
G.Out(pdGendoc,"exit FederationsList::addFederate");
return federate ;
@@ -526,7 +529,7 @@
bool &is_syncing,
SocketMC* &comm_mc)
#else
- std::string FederationsList::info(Handle handle,
+ void FederationsList::info(Handle handle,
int &nb_federates,
int &nb_regulators,
bool &is_syncing)
@@ -551,8 +554,6 @@
comm_mc = federation->MCLink ;
#endif
G.Out(pdGendoc,"exit FederationsList::info");
- // Return FEDid
- return FED_Filename ;
}
// ----------------------------------------------------------------------------
@@ -1749,5 +1750,5 @@
}} // certi::rtig
-// EOF $Id: FederationsList.cc,v 3.64 2009/10/21 20:04:45 erk Exp $
+// EOF $Id: FederationsList.cc,v 3.65 2009/11/18 18:50:48 erk Exp $
Index: RTIG/Federation.cc
===================================================================
RCS file: /sources/certi/certi/RTIG/Federation.cc,v
retrieving revision 3.114
retrieving revision 3.115
diff -u -b -r3.114 -r3.115
--- RTIG/Federation.cc 21 Oct 2009 20:04:45 -0000 3.114
+++ RTIG/Federation.cc 18 Nov 2009 18:50:48 -0000 3.115
@@ -18,7 +18,7 @@
// along with this program ; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
-// $Id: Federation.cc,v 3.114 2009/10/21 20:04:45 erk Exp $
+// $Id: Federation.cc,v 3.115 2009/11/18 18:50:48 erk Exp $
// ----------------------------------------------------------------------------
#include <config.h>
@@ -751,6 +751,12 @@
this->broadcastAnyMessage(&msg, 0);
}
+void
+Federation::getFOM(NM_Join_Federation_Execution& objectModelData)
+{
+ root->getFOM(objectModelData);
+}
+
// ----------------------------------------------------------------------------
//! Broadcast 'msg' to all Federate except the specified one
void
@@ -2606,5 +2612,5 @@
}} // namespace certi/rtig
-// $Id: Federation.cc,v 3.114 2009/10/21 20:04:45 erk Exp $
+// $Id: Federation.cc,v 3.115 2009/11/18 18:50:48 erk Exp $
Index: RTIG/FederationsList.hh
===================================================================
RCS file: /sources/certi/certi/RTIG/FederationsList.hh,v
retrieving revision 3.48
retrieving revision 3.49
diff -u -b -r3.48 -r3.49
--- RTIG/FederationsList.hh 20 Nov 2008 18:21:56 -0000 3.48
+++ RTIG/FederationsList.hh 18 Nov 2009 18:50:48 -0000 3.49
@@ -18,7 +18,7 @@
// along with this program ; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
-// $Id: FederationsList.hh,v 3.48 2008/11/20 18:21:56 approx Exp $
+// $Id: FederationsList.hh,v 3.49 2009/11/18 18:50:48 erk Exp $
// ----------------------------------------------------------------------------
#ifndef _CERTI_RTIG_FEDERATIONS_LIST_HH
@@ -79,7 +79,7 @@
bool &is_syncing,
SocketMC* &comm_mc)
#else
- std::string info(Handle theHandle,
+ void info(Handle theHandle,
int &nb_federes,
int &nb_regulateurs,
bool &is_syncing)
@@ -154,7 +154,8 @@
// -------------------------
FederateHandle addFederate(Handle theHandle,
const char *theFederateName,
- SocketTCP *theTCPLink)
+ SocketTCP *theTCPLink,
+ NM_Join_Federation_Execution& objectModelData)
throw (FederationExecutionDoesNotExist,
FederateAlreadyExecutionMember,
MemoryExhausted,
@@ -649,4 +650,4 @@
#endif // _CERTI_RTIG_FEDERATIONS_LIST_HH
-// $Id: FederationsList.hh,v 3.48 2008/11/20 18:21:56 approx Exp $
+// $Id: FederationsList.hh,v 3.49 2009/11/18 18:50:48 erk Exp $
Index: RTIG/RTIG_processing.cc
===================================================================
RCS file: /sources/certi/certi/RTIG/RTIG_processing.cc,v
retrieving revision 3.89
retrieving revision 3.90
diff -u -b -r3.89 -r3.90
--- RTIG/RTIG_processing.cc 21 Oct 2009 20:04:45 -0000 3.89
+++ RTIG/RTIG_processing.cc 18 Nov 2009 18:50:48 -0000 3.90
@@ -18,7 +18,7 @@
// along with this program ; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
-// $Id: RTIG_processing.cc,v 3.89 2009/10/21 20:04:45 erk Exp $
+// $Id: RTIG_processing.cc,v 3.90 2009/11/18 18:50:48 erk Exp $
// ----------------------------------------------------------------------------
#include <config.h>
@@ -130,7 +130,6 @@
{
std::string federation = req->getFederationName();
std::string federate = req->getFederateName();
- std::string filename ;
unsigned int peer = req->bestEffortPeer ;
unsigned long address = req->bestEffortAddress ;
@@ -145,7 +144,7 @@
G.Out(pdGendoc,"BEGIN ** JOIN FEDERATION SERVICE **");
G.Out(pdGendoc,"enter RTIG::processJoinFederation");
- if ((federation.length()==0) || (federate.length() == 0))
+ if (federation.empty() || federate.empty())
throw RTIinternalError("Invalid Federation/Federate Name.");
auditServer << "Federate \"" << federate.c_str() << "\" joins Federation
\""
@@ -153,27 +152,19 @@
federations.exists(federation.c_str(), num_federation);
+ // Need to dump the fom into that
+ NM_Join_Federation_Execution rep ;
try
{
num_federe = federations.addFederate(num_federation,
federate.c_str(),
- static_cast<SocketTCP*>(link));
+ static_cast<SocketTCP*>(link),
+ rep);
}
catch (FederateAlreadyExecutionMember &e)
{
- // Federate yet has joined this federation(same or another with same
name)
- // RTIG has to return something to RTIA
- // RTIA waits a GET_FED_FILE message
- // RTIG says not OK to RTIA in a GET_FED_FILE message
- NM_Get_FED_File repFED ;
- repFED.setException(e_FederateAlreadyExecutionMember);
- repFED.exceptionReason="Federate with same name has yet joined the
federation";
- G.Out(pdGendoc,"processJoinFederation==>Answer to RTIA GFF ERROR
%s",repFED.exceptionReason.c_str());
- repFED.send(link,NM_msgBufSend);
-
G.Out(pdGendoc,"exit RTIG::processJoinFederation on Error");
G.Out(pdGendoc,"END ** JOIN FEDERATION (BAD) SERVICE **");
- // FIXME strange to send 2 messages?
// Prepare answer about JoinFederationExecution
NM_Join_Federation_Execution rep ;
rep.setException(e_FederateAlreadyExecutionMember);
@@ -192,7 +183,7 @@
pause, com_mc);
assert(com_mc != NULL);
#else
- filename = federations.info(num_federation, nb_federes, nb_regulateurs,
pause);
+ federations.info(num_federation, nb_federes, nb_regulateurs, pause);
#endif
// Store Federate <->Socket reference.
@@ -206,8 +197,6 @@
<< ". Socket " << int(link->returnSocket());
// Prepare answer about JoinFederationExecution
- // This answer wille be made AFTER FED file processing
- NM_Join_Federation_Execution rep ;
rep.setFederationName(federation);
rep.federate = num_federe ;
rep.federation = num_federation ;
@@ -215,81 +204,7 @@
rep.bestEffortPeer = peer ;
rep.bestEffortAddress = address ;
- // Here begin FED file processing i.e. RTIG gives FED file contents to RTIA
- TypeException e = e_NO_EXCEPTION ;
- // Open FED file and says to RTIA if success
- std::ifstream fedFile(filename.c_str());
- if ( !fedFile.is_open()) {
- // Problem : file has been opened during create federation and now we
can't
- // May be file has been deleted
- cout << "processJoinFederation : FED file " << filename << " has
vanished." << endl;
- e = e_RTIinternalError ;
- }
-
- // RTIG says OK or not to RTIA
- NM_Get_FED_File repFED ;
- repFED.federate = num_federe ;
- repFED.federation = num_federation ;
- repFED.setLineno(0);
- repFED.setFEDid(filename);
- repFED.setException(e);
- // Send answer
- D.Out(pdTrace,"send NetworkMessage of Type %d after open \"%s\"",
- repFED.getType(),repFED.getFEDid().c_str());
- G.Out(pdGendoc,"processJoinFederation====>Begin FED file transfer");
-
- repFED.send(link,NM_msgBufSend);
-
- if ( e == e_NO_EXCEPTION )
- {
- // Wait for OK from RTIA
- NM_Get_FED_File msg ;
- D.Out(pdTrace,"wait NetworkMessage of Type %d",msg.getType());
- msg.receive(link,NM_msgBufReceive);
- assert ( msg.getLineno() == 0 );
- // RTIA has opened working file then RTIG has to transfer file contents
- // line by line
- std::string fileLine;
- unsigned int num_line = 0 ;
- while (!fedFile.eof())
- {
- num_line++;
- // Read a line
- std::getline(fedFile,fileLine);
- fileLine = fileLine+"\n";
- // RTIG sends line to RTIA and number gives line number
- repFED.setException(e_NO_EXCEPTION);
- repFED.federate = num_federe ;
- repFED.federation = num_federation ;
- repFED.setLineno(num_line);
- repFED.setFEDid(filename);
- // line transfered
- repFED.setFEDLine(fileLine);
- // Send answer
- repFED.send(link,NM_msgBufSend);
-
- // Wait for OK from RTIA
- msg.receive(link,NM_msgBufReceive);
- assert ( msg.getLineno() == num_line );
- }
-
- // close
- fedFile.close();
- repFED.setException(e_NO_EXCEPTION);
- repFED.federate = num_federe ;
- repFED.federation = num_federation ;
- repFED.setLineno(0) ;
- repFED.setFEDid(filename);
- // Send answer
-
- G.Out(pdGendoc,"processJoinFederation====>End FED file transfer");
-
- repFED.send(link,NM_msgBufSend);
- }
- // END of FED file processing
-
// Now we have to answer about JoinFederationExecution
-
#ifdef FEDERATION_USES_MULTICAST
rep.AdresseMulticast = com_mc->returnAdress();
#endif
@@ -1554,4 +1469,4 @@
}} // namespace certi/rtig
-// $Id: RTIG_processing.cc,v 3.89 2009/10/21 20:04:45 erk Exp $
+// $Id: RTIG_processing.cc,v 3.90 2009/11/18 18:50:48 erk Exp $
Index: RTIG/Federation.hh
===================================================================
RCS file: /sources/certi/certi/RTIG/Federation.hh,v
retrieving revision 3.58
retrieving revision 3.59
diff -u -b -r3.58 -r3.59
--- RTIG/Federation.hh 16 Sep 2009 07:55:58 -0000 3.58
+++ RTIG/Federation.hh 18 Nov 2009 18:50:48 -0000 3.59
@@ -18,7 +18,7 @@
// along with this program ; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
-// $Id: Federation.hh,v 3.58 2009/09/16 07:55:58 erk Exp $
+// $Id: Federation.hh,v 3.59 2009/11/18 18:50:48 erk Exp $
// ----------------------------------------------------------------------------
#ifndef _CERTI_RTIG_FEDERATION_HH
@@ -649,6 +649,9 @@
RestoreInProgress,
RTIinternalError);
+ void getFOM(NM_Join_Federation_Execution& objectModelData);
+
+
private:
// Private methods
void broadcastAnyMessage(NetworkMessage *msg, FederateHandle Except);
@@ -684,4 +687,4 @@
#endif // _CERTI_RTIG_FEDERATION_HH
-// $Id: Federation.hh,v 3.58 2009/09/16 07:55:58 erk Exp $
+// $Id: Federation.hh,v 3.59 2009/11/18 18:50:48 erk Exp $
Index: RTIA/Statistics.cc
===================================================================
RCS file: /sources/certi/certi/RTIA/Statistics.cc,v
retrieving revision 3.19
retrieving revision 3.20
diff -u -b -r3.19 -r3.20
--- RTIA/Statistics.cc 8 Apr 2009 10:47:18 -0000 3.19
+++ RTIA/Statistics.cc 18 Nov 2009 18:50:48 -0000 3.20
@@ -297,7 +297,6 @@
RTI_MSG_NAME(NetworkMessage::DDM_SUBSCRIBE_INTERACTION);
RTI_MSG_NAME(NetworkMessage::DDM_UNSUBSCRIBE_INTERACTION);
RTI_MSG_NAME(NetworkMessage::PROVIDE_ATTRIBUTE_VALUE_UPDATE);
- RTI_MSG_NAME(NetworkMessage::GET_FED_FILE);
RTI_MSG_NAME(NetworkMessage::SET_CLASS_RELEVANCE_ADVISORY_SWITCH);
RTI_MSG_NAME(NetworkMessage::SET_INTERACTION_RELEVANCE_ADVISORY_SWITCH);
RTI_MSG_NAME(NetworkMessage::SET_ATTRIBUTE_RELEVANCE_ADVISORY_SWITCH);
@@ -374,4 +373,4 @@
#undef FED_MSG_NAME
#undef RTI_MSG_NAME
-// $Id: Statistics.cc,v 3.19 2009/04/08 10:47:18 approx Exp $
+// $Id: Statistics.cc,v 3.20 2009/11/18 18:50:48 erk Exp $
Index: RTIA/FederationManagement.cc
===================================================================
RCS file: /sources/certi/certi/RTIA/FederationManagement.cc,v
retrieving revision 3.75
retrieving revision 3.76
diff -u -b -r3.75 -r3.76
--- RTIA/FederationManagement.cc 21 Oct 2009 18:56:28 -0000 3.75
+++ RTIA/FederationManagement.cc 18 Nov 2009 18:50:48 -0000 3.76
@@ -18,7 +18,7 @@
// along with this program ; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
-// $Id: FederationManagement.cc,v 3.75 2009/10/21 18:56:28 erk Exp $
+// $Id: FederationManagement.cc,v 3.76 2009/11/18 18:50:48 erk Exp $
// ----------------------------------------------------------------------------
#include <config.h>
@@ -70,7 +70,6 @@
_nom_federation = "";
_nom_federe = "";
- //_FEDid = NULL;is now a string then...
G.Out(pdGendoc,"exit FederationManagement::FederationManagement");
}
@@ -96,7 +95,6 @@
cout << "RTIA: Federate destroyed" << endl ;
//}
- //delete[] _FEDid ;
G.Out(pdGendoc,"exit ~FederationManagement");
}
@@ -104,7 +102,8 @@
//! createFederationExecution.
void
FederationManagement::
-createFederationExecution(std::string theName,
+createFederationExecution(const std::string& theName,
+ const std::string& fedId,
TypeException &e)
throw ( FederationExecutionAlreadyExists,
CouldNotOpenFED,ErrorReadingFED,
@@ -126,7 +125,7 @@
if (e == e_NO_EXCEPTION)
{
requete.setFederationName(theName);
- requete.setFEDid(_FEDid);
+ requete.setFEDid(fedId);
G.Out(pdGendoc,"createFederationExecution====> send Message to
RTIG");
@@ -217,25 +216,6 @@
if (reponse->getException() == e_NO_EXCEPTION) {
_nom_federation = "" ;
_numero_federation = 0 ;
- // Now, remove temporary file (if not yet done)
- if ( _FEDid.c_str() != NULL )
- {
- if ( _FEDid[0] != '\0' )
- {
- // If RTIA end (abort ?) before join don't remove file if
not temporary
- // temporary file name begins with _RT ( yes, but...)
- if ( _FEDid[0] == '_' || _FEDid[1] == 'R' || _FEDid[2] ==
'T')
- {
- std::cout<<"Removing temporary file "<<_FEDid<<" on
destroy federation."<<std::endl;
- std::remove(_FEDid.c_str());
- _FEDid[0] = '\0' ;
- }
- else
- {
- std::cout<<"** W ** I don't remove file
"<<_FEDid<<std::endl;
- }
- }
- }
}
else
{
@@ -253,13 +233,11 @@
FederationManagement::
joinFederationExecution(std::string Federate,
std::string Federation,
+ RootObject* rootObject,
TypeException &e)
{
NM_Join_Federation_Execution requete;
- NM_Get_FED_File requeteFED;
-
int i, nb ;
- string filename ; // Needed for working file name
G.Out(pdGendoc,"enter FederationManagement::joinFederationExecution");
D.Out(pdInit, "Join Federation %s as %s.", Federation.c_str(),
Federate.c_str());
@@ -284,110 +262,15 @@
comm->sendMessage(&requete);
- // Waiting RTIG answer for FED file opened
- std::auto_ptr<NetworkMessage>
reponse(comm->waitMessage(NetworkMessage::GET_FED_FILE, 0));
- NM_Get_FED_File* getFedMsg =
static_cast<NM_Get_FED_File*>(reponse.get());
-
- if ( reponse->getException() != e_NO_EXCEPTION)
- {
- // Bad answer from RTIG
- e = reponse->getException() ;
- }
- else
- {
- stat->rtiService(NetworkMessage::GET_FED_FILE);
- // RTIA have to open a new file for working
- // We have to build a name for working file, name begins by _RTIA_
(6 char)
- // First pid converted in char and added
- // Then federation name
- // File type (4)
- char pid_name[10];
- sprintf(pid_name,"%d_",getpid());
-
- #ifdef _WIN32 //Write the file into
- char *theDir;
-
- theDir= getenv("TMP"); if (theDir == NULL) theDir= getenv("TEMP");
- if (theDir) { filename+= theDir; filename+= "\\";}
- #endif
-
- filename+= "_RTIA_";
- filename+= pid_name ;
- filename+= Federation ;
- // Last file type : fed or xml ?
-
- string filename_RTIG = getFedMsg->getFEDid();
- int nbcar_filename_RTIG=filename_RTIG.length();
- string extension = filename_RTIG.substr(nbcar_filename_RTIG-3,3) ;
- if ( !strcasecmp(extension.c_str(),"fed") )
- {
- filename += ".fed";
- }
- else if ( !strcasecmp(extension.c_str(),"xml") )
- {
- filename += ".xml";
- }
- else
- throw CouldNotOpenFED("nor .fed nor .xml");
- // FED filename for working must be stored
- _FEDid = filename ;
- // RTIA opens working file
- std::ofstream fedWorkFile(filename.c_str());
- if ( !fedWorkFile.is_open()) {
- throw RTIinternalError("FED file has vanished.") ;
- }
-
- // RTIA says RTIG OK for file transfer
- requeteFED.setFederateName(Federate);
- requeteFED.setFEDid(filename);
- if ( e == e_NO_EXCEPTION)
- requeteFED.setLineno(0); // OK for open
- else
- requeteFED.setLineno(1);
-
- G.Out(pdGendoc,"joinFederationExecution====> begin FED file get
from RTIG");
-
- comm->sendMessage(&requeteFED);
-
- // Now read loop from RTIG to get line contents and then write it
into file
- unsigned int num_line = 0 ; // no line read
- for (;;)
- {
- reponse.reset(comm->waitMessage(NetworkMessage::GET_FED_FILE,
0));
- getFedMsg = static_cast<NM_Get_FED_File*>(reponse.get());
- if ( reponse->getException() != e_NO_EXCEPTION)
- {
- cout << "Bad answer from RTIG" << endl ;
- e = e_RTIinternalError ;
- break ;
- }
- stat->rtiService(NetworkMessage::GET_FED_FILE);
- // Line read
- num_line++ ;
- // Check for EOF
- if ( getFedMsg->getLineno() == 0 ) break;
-
- assert ( num_line == getFedMsg->getLineno() ) ;
- reponse->handleArraySize = 1 ;
- fedWorkFile << getFedMsg->getFEDLine();
- // RTIA says OK to RTIG
- requeteFED.setFederateName(Federate);
- requeteFED.setLineno(num_line);
- requeteFED.setFEDid(filename);
- comm->sendMessage(&requeteFED);
- }
- // close working file
- fedWorkFile.close();
- }
-
- G.Out(pdGendoc,"joinFederationExecution====> end FED file get from
RTIG");
-
- // Waiting RTIG answer (from any federate)
-
reponse.reset(comm->waitMessage(NetworkMessage::JOIN_FEDERATION_EXECUTION, 0));
+ // Waiting RTIG answer
+ std::auto_ptr<NetworkMessage>
reponse(comm->waitMessage(NetworkMessage::JOIN_FEDERATION_EXECUTION, 0));
// If OK, regulators number is inside the answer.
// Then we except a NULL message from each.
if (reponse->getException() == e_NO_EXCEPTION) {
+ NM_Join_Federation_Execution* joinResponse =
static_cast<NM_Join_Federation_Execution*>(reponse.get());
+ rootObject->setFOM(*joinResponse);
+
_nom_federation = std::string(Federation);
_nom_federe = std::string(Federate);
_numero_federation = reponse->federation ;
@@ -455,16 +338,6 @@
_est_membre_federation = false ;
_numero_federation = 0 ;
federate = 0 ;
- // Now, remove temporary file (if not yet done)
- if ( _FEDid.c_str() != NULL)
- {
- if ( _FEDid[0] != '\0' )
- {
- std::cout<<"Removing temporary file "<<_FEDid<<" on resign
federation."<<std::endl;
- std::remove(_FEDid.c_str());
- _FEDid[0] = '\0' ;
- }
- }
G.Out(pdGendoc,"exit
FederationManagement::resignFederationExecution");
}
else
Index: RTIA/FederationManagement.hh
===================================================================
RCS file: /sources/certi/certi/RTIA/FederationManagement.hh,v
retrieving revision 3.25
retrieving revision 3.26
diff -u -b -r3.25 -r3.26
--- RTIA/FederationManagement.hh 11 Oct 2009 11:22:55 -0000 3.25
+++ RTIA/FederationManagement.hh 18 Nov 2009 18:50:48 -0000 3.26
@@ -18,7 +18,7 @@
// along with this program ; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
-// $Id: FederationManagement.hh,v 3.25 2009/10/11 11:22:55 erk Exp $
+// $Id: FederationManagement.hh,v 3.26 2009/11/18 18:50:48 erk Exp $
// ----------------------------------------------------------------------------
#ifndef _CERTI_RTIA_FEDERATION_MANAGEMENT
@@ -30,6 +30,9 @@
#include "Statistics.hh"
namespace certi {
+
+class RootObject;
+
namespace rtia {
class TimeManagement ;
@@ -44,7 +47,8 @@
void checkFederationRestoring(void) throw (RestoreInProgress);
// -- Create/Destroy --
- void createFederationExecution(std::string theName, TypeException &e)
+ void createFederationExecution(const std::string& theName,
+ const std::string& fedId, TypeException &e)
throw ( FederationExecutionAlreadyExists,
CouldNotOpenFED,ErrorReadingFED,
RTIinternalError);
@@ -53,6 +57,7 @@
// -- Join/Resign --
FederateHandle joinFederationExecution(std::string Federate,
std::string Federation,
+ RootObject* rootObject,
TypeException &e);
void resignFederationExecution(RTI::ResignAction action,
@@ -101,7 +106,6 @@
Handle _numero_federation ;
FederateHandle federate ;
bool _fin_execution ;
- std::string _FEDid ;
private:
Communications *comm ;
@@ -124,4 +128,4 @@
#endif // _CERTI_RTIA_FEDERATION_MANAGEMENT
-// $Id: FederationManagement.hh,v 3.25 2009/10/11 11:22:55 erk Exp $
+// $Id: FederationManagement.hh,v 3.26 2009/11/18 18:50:48 erk Exp $
Index: RTIA/RTIA.cc
===================================================================
RCS file: /sources/certi/certi/RTIA/RTIA.cc,v
retrieving revision 3.30
retrieving revision 3.31
diff -u -b -r3.30 -r3.31
--- RTIA/RTIA.cc 21 Oct 2009 18:56:28 -0000 3.30
+++ RTIA/RTIA.cc 18 Nov 2009 18:50:48 -0000 3.31
@@ -18,7 +18,7 @@
// along with this program ; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
-// $Id: RTIA.cc,v 3.30 2009/10/21 18:56:28 erk Exp $
+// $Id: RTIA.cc,v 3.31 2009/11/18 18:50:48 erk Exp $
// ----------------------------------------------------------------------------
#include <config.h>
@@ -60,26 +60,6 @@
RTIA::~RTIA() {
- // Remove temporary file (if not yet done)
- if ( fm->_FEDid.c_str() != NULL)
- {
- if ( fm->_FEDid[0] != '\0' )
- {
- // If RTIA end (abort ?) before join don't remove file if not
temporary
- // temporary file name begins with _RT ( yes, but...)
- if ( fm->_FEDid[0] != '_' || fm->_FEDid[1] != 'R' || fm->_FEDid[2]
!= 'T')
- {
- std::cout<<"** W ** I don't remove file
"<<fm->_FEDid<<std::endl;
- }
- else
- {
- std::cout<<"*** W ** Removing temporary file "<<fm->_FEDid<<" on
RTIA stop."<<std::endl;
- std::remove(fm->_FEDid.c_str());
- }
- fm->_FEDid[0] = '\0' ;
- }
- }
-
/*
* FIXME Erk
* this is may be a design issue
@@ -200,4 +180,4 @@
}} // namespace certi/rtia
-// $Id: RTIA.cc,v 3.30 2009/10/21 18:56:28 erk Exp $
+// $Id: RTIA.cc,v 3.31 2009/11/18 18:50:48 erk Exp $
Index: RTIA/RTIA_federate.cc
===================================================================
RCS file: /sources/certi/certi/RTIA/RTIA_federate.cc,v
retrieving revision 3.100
retrieving revision 3.101
diff -u -b -r3.100 -r3.101
--- RTIA/RTIA_federate.cc 21 Oct 2009 20:04:47 -0000 3.100
+++ RTIA/RTIA_federate.cc 18 Nov 2009 18:50:48 -0000 3.101
@@ -117,8 +117,8 @@
D.Out(pdTrace,
"Receiving Message from Federate, type CreateFederation.");
// Store FEDid for future usage (JOIN_FEDERATION_EXECUTION) into fm
- fm->_FEDid = req->getFEDid() ;
- fm->createFederationExecution(req->getFederationName(), e);
+ fm->createFederationExecution(req->getFederationName(),
+ req->getFEDid(), e);
if ( e == e_RTIinternalError )
{
rep.setException(e,"Federate is yet a creator or a member !");
@@ -126,7 +126,7 @@
D.Out(pdTrace, "Receiving Message from Federate, "
"type CreateFederation done.");
// RTIA needs FEDid into the answer (rep Message) to federate
- rep.setFEDid(fm->_FEDid) ;
+ rep.setFEDid(req->getFEDid()) ;
// RTIA needs federation name into the answer (rep Message) to federate
rep.setFederationName(req->getFederationName());
break ;
@@ -144,73 +144,25 @@
rep.setFederationName(req->getFederationName());
break ;
- case Message::JOIN_FEDERATION_EXECUTION: {
+ case Message::JOIN_FEDERATION_EXECUTION:
D.Out(pdTrace,
"Receiving Message from Federate, type JoinFederation.");
rep.setFederate(fm->joinFederationExecution(req->getFederateName(),
req->getFederationName(),
- e));
+ rootObject, e));
if ( e == e_NO_EXCEPTION )
{
/// Set RTIA PrettyDebug federate name
PrettyDebug::setFederateName(req->getFederateName());
// Set federation name for the answer message (rep)
rep.setFederationName(req->getFederationName());
-
- string filename = fm->_FEDid ;
- int nbcar_filename=filename.length();
- bool is_a_fed = false ;
- bool is_an_xml = false ;
-
- // Hope there is a . before fed or xml
- if ( filename.at(nbcar_filename-4) != '.' )
- throw CouldNotOpenFED(". missing or not in place");
-
- string extension = filename.substr(nbcar_filename-3,3) ;
- if ( !strcasecmp(extension.c_str(),"fed") )
- {
- is_a_fed = true ;
- D.Out(pdTrace, "Trying to use .fed file");
- }
- else if ( !strcasecmp(extension.c_str(),"xml") )
- {
- is_an_xml = true ;
- D.Out(pdTrace, "Trying to use .xml file");
- }
- else
- throw CouldNotOpenFED("nor .fed nor .xml");
-
- ifstream fdd(filename.c_str());
- if (fdd.is_open())
- {
- if ( is_a_fed )
- {
- int result = certi::fedparser::build(filename.c_str(),
- rootObject, false);
- if (result != 0 ) throw ErrorReadingFED("invalid .fed");
- }
- else if ( is_an_xml )
- {
- if (XmlParser::exists())
- {
- XmlParser parser(rootObject);
- parser.parse(filename);
- }
- else
- throw CouldNotOpenFED("no XmlParser");
- }
- }
- else
- throw CouldNotOpenFED("File not found");
- break ;
}
else
{
// JOIN FAILED
throw FederateAlreadyExecutionMember("Federate yet joined or
same name");
- break;
- }
}
+ break;
case Message::RESIGN_FEDERATION_EXECUTION:
D.Out(pdTrace,
"Receiving Message from Federate, type ResignFederation.");
Index: scripts/NW_MessageType.txt
===================================================================
RCS file: /sources/certi/certi/scripts/NW_MessageType.txt,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- scripts/NW_MessageType.txt 12 May 2008 12:17:04 -0000 1.2
+++ scripts/NW_MessageType.txt 18 Nov 2009 18:50:48 -0000 1.3
@@ -82,5 +82,4 @@
DDM_SUBSCRIBE_INTERACTION
DDM_UNSUBSCRIBE_INTERACTION
PROVIDE_ATTRIBUTE_VALUE_UPDATE
-GET_FED_FILE
LAST
Index: scripts/GenerateMessages.py
===================================================================
RCS file: /sources/certi/certi/scripts/GenerateMessages.py,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -b -r1.22 -r1.23
--- scripts/GenerateMessages.py 16 Sep 2009 09:57:29 -0000 1.22
+++ scripts/GenerateMessages.py 18 Nov 2009 18:50:48 -0000 1.23
@@ -19,7 +19,7 @@
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
## USA
##
-## $Id: GenerateMessages.py,v 1.22 2009/09/16 09:57:29 erk Exp $
+## $Id: GenerateMessages.py,v 1.23 2009/11/18 18:50:48 erk Exp $
## ----------------------------------------------------------------------------
"""
@@ -1181,46 +1181,66 @@
if field.typeid.name == "onoff":
if field.qualifier == "repeated":
stream.write(self.getIndent())
+ stream.write("uint32_t getNum"+self.upperFirst(field.name)+"()
const")
+ stream.write(" {return "+field.name+".size();}\n")
+
+ stream.write(self.getIndent())
+ stream.write("void
setNum"+self.upperFirst(field.name)+"(uint32_t num)")
+ stream.write(" {"+field.name+".resize(num);}\n")
+
+ stream.write(self.getIndent())
stream.write("void "+field.name+"On(uint32_t rank)")
- stream.write(" {"+field.name+"[rank] = true;};\n")
+ stream.write(" {"+field.name+"[rank] = true;}\n")
stream.write(self.getIndent())
stream.write("void "+field.name+"Off(uint32_t rank)")
- stream.write(" {"+field.name+"[rank] = false;};\n")
+ stream.write(" {"+field.name+"[rank] = false;}\n")
stream.write(self.getIndent())
- stream.write(targetTypeName+ "
is"+self.upperFirst(field.name)+"On(uint32_t rank)")
- stream.write(" {return "+field.name+"[rank];};\n")
+ stream.write(targetTypeName+ "
is"+self.upperFirst(field.name)+"On(uint32_t rank) const")
+ stream.write(" {return "+field.name+"[rank];}\n")
else:
stream.write(self.getIndent())
stream.write("void "+field.name+"On()")
- stream.write(" {"+field.name+" = true;};\n")
+ stream.write(" {"+field.name+" = true;}\n")
stream.write(self.getIndent())
stream.write("void "+field.name+"Off()")
- stream.write(" {"+field.name+" = false;};\n")
+ stream.write(" {"+field.name+" = false;}\n")
stream.write(self.getIndent())
- stream.write(targetTypeName+ "
is"+self.upperFirst(field.name)+"On()")
- stream.write(" {return "+field.name+";};\n")
+ stream.write(targetTypeName+ "
is"+self.upperFirst(field.name)+"On() const")
+ stream.write(" {return "+field.name+";}\n")
else:
if field.qualifier == "repeated":
stream.write(self.getIndent())
- stream.write(targetTypeName + "
get"+self.upperFirst(field.name)+"(uint32_t rank)")
- stream.write(" {return "+field.name+"[rank];};\n")
+ stream.write("uint32_t getNum"+self.upperFirst(field.name)+"()
const")
+ stream.write(" {return "+field.name+".size();}\n")
+
+ stream.write(self.getIndent())
+ stream.write("void
setNum"+self.upperFirst(field.name)+"(uint32_t num)")
+ stream.write(" {"+field.name+".resize(num);}\n")
+
+ stream.write(self.getIndent())
+ stream.write("const "+targetTypeName+"&
get"+self.upperFirst(field.name)+"(uint32_t rank) const")
+ stream.write(" {return "+field.name+"[rank];}\n")
+
+ stream.write(self.getIndent())
+ stream.write(targetTypeName+"&
get"+self.upperFirst(field.name)+"(uint32_t rank)")
+ stream.write(" {return "+field.name+"[rank];}\n")
stream.write(self.getIndent())
- stream.write("void set"+self.upperFirst(field.name)+"(")
- stream.write(targetTypeName+"
new"+self.upperFirst(field.name)+", uint32_t rank)")
- stream.write("
{"+field.name+"[rank]=new"+self.upperFirst(field.name)+";};\n")
+ stream.write("void set"+self.upperFirst(field.name)+"(const ")
+ stream.write(targetTypeName+"&
new"+self.upperFirst(field.name)+", uint32_t rank)")
+ stream.write("
{"+field.name+"[rank]=new"+self.upperFirst(field.name)+";}\n")
else:
stream.write(self.getIndent())
- stream.write(targetTypeName + "
get"+self.upperFirst(field.name)+"()")
- stream.write(" {return "+field.name+";};\n")
+ stream.write("const "+targetTypeName+"&
get"+self.upperFirst(field.name)+"() const")
+ stream.write(" {return "+field.name+";}\n")
stream.write(self.getIndent())
- stream.write("void set"+self.upperFirst(field.name)+"(")
- stream.write(targetTypeName+"
new"+self.upperFirst(field.name)+") {")
+ stream.write("void set"+self.upperFirst(field.name)+"(const ")
+ stream.write(targetTypeName+"&
new"+self.upperFirst(field.name)+") {")
if field.qualifier == "optional":
stream.write("\n")
self.indent();
@@ -1230,7 +1250,7 @@
stream.write(self.getIndent())
else:
stream.write(field.name+"=new"+self.upperFirst(field.name)+";")
- stream.write("};\n")
+ stream.write("}\n")
def writeDeclarationFieldStatement(self,stream,field):
stream.write(self.getIndent())
@@ -1315,8 +1335,10 @@
stream.write("class CERTI_EXPORT %s" % msg.name)
if msg.hasMerge():
stream.write(" : public %s {\n" % msg.merge.name)
+ virtual = "virtual "
else:
stream.write(" {\n")
+ virtual = ""
self.indent()
@@ -1327,14 +1349,14 @@
stream.write(self.getIndent()+"typedef %s
Super;\n"%msg.merge.name)
# now write constructor/destructor
stream.write(self.getIndent()+msg.name+"();\n")
- stream.write(self.getIndent()+"virtual ~"+msg.name+"();\n")
+ stream.write(self.getIndent()+virtual+"~"+msg.name+"();\n")
# write virtual serialize and deserialize
# if we have some specific field
if len(msg.fields)>0:
# serialize/deserialize
- stream.write(self.getIndent()+"virtual void
serialize(MessageBuffer& msgBuffer);\n")
- stream.write(self.getIndent()+"virtual void
deserialize(MessageBuffer& msgBuffer);\n")
+ stream.write(self.getIndent()+virtual+"void
serialize(MessageBuffer& msgBuffer);\n")
+ stream.write(self.getIndent()+virtual+"void
deserialize(MessageBuffer& msgBuffer);\n")
# specific getter/setter
stream.write(self.getIndent()+self.commentLineBeginWith+"
specific Getter(s)/Setter(s)\n")
for field in msg.fields:
Index: scripts/CERTI_NetworkMessage.msg
===================================================================
RCS file: /sources/certi/certi/scripts/CERTI_NetworkMessage.msg,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- scripts/CERTI_NetworkMessage.msg 16 Sep 2009 09:57:29 -0000 1.11
+++ scripts/CERTI_NetworkMessage.msg 18 Nov 2009 18:50:48 -0000 1.12
@@ -43,6 +43,73 @@
language CXX [#include "certi.hh"]
}
+native DimensionHandle {
+ language CXX [#include "certi.hh"]
+}
+
+native InteractionClassHandle {
+ language CXX [#include "certi.hh"]
+}
+
+native ObjectClassHandle {
+ language CXX [#include "certi.hh"]
+}
+
+native ParameterHandle {
+ language CXX [#include "certi.hh"]
+}
+
+native SpaceHandle {
+ language CXX [#include "certi.hh"]
+}
+
+native TransportType {
+ language CXX [#include "certi.hh"]
+}
+
+native OrderType {
+ language CXX [#include "certi.hh"]
+}
+
+message NM_FOM_Dimension {
+ required DimensionHandle handle
+ required string name
+}
+
+message NM_FOM_Rounting_Space {
+ required SpaceHandle space
+ required string name
+ repeated NM_FOM_Dimension dimensions
+}
+
+message NM_FOM_Attribute {
+ required AttributeHandle handle
+ required string name
+ required SpaceHandle spaceHandle
+ required OrderType order
+ required TransportType transport
+}
+
+message NM_FOM_Object_Class {
+ required ObjectClassHandle handle
+ required ObjectClassHandle superClass
+ required string name
+ repeated NM_FOM_Attribute attributes
+}
+
+message NM_FOM_Parameter {
+ required ParameterHandle handle
+ required string name
+}
+
+message NM_FOM_Interaction_Class {
+ required InteractionClassHandle handle
+ required SpaceHandle space
+ required OrderType order
+ required TransportType transport
+ repeated NM_FOM_Parameter parameters
+}
+
message NM_Close_Connexion : merge NetworkMessage {}
message NM_Message_Null : merge NetworkMessage {}
@@ -66,6 +133,9 @@
required uint32 bestEffortPeer
required string federationName // the federation name
required string federateName // the federate name (should be unique
within a federation)
+ repeated NM_FOM_Rounting_Space routingSpaces
+ repeated NM_FOM_Object_Class objectClasses
+ repeated NM_FOM_Interaction_Class interactionClasses
}
// Resign from federation
@@ -83,11 +153,6 @@
message NM_Time_Constrained_Enabled : merge NetworkMessage {}
-native ObjectClassHandle {
- language CXX [#include "certi.hh"]
-}
-
-
message NM_Set_Class_Relevance_Advisory_Switch : merge NetworkMessage {
required onoff classRelevanceAdvisorySwitch // value of CRA switch
}
@@ -152,10 +217,6 @@
message NM_Unpublish_Object_Class : merge NetworkMessage {}
-native InteractionClassHandle {
- language CXX [#include "certi.hh"]
-}
-
message NM_Publish_Interaction_Class : merge NetworkMessage {
required InteractionClassHandle interactionClass // the interaction
class
}
@@ -244,10 +305,6 @@
message NM_Confirm_Attribute_Ownership_Acquisition_Cancellation : merge
NM_Request_Object_Attribute_Value_Update {}
-native SpaceHandle {
- language CXX [#include "certi.hh"]
-}
-
message NM_DDM_Create_Region : merge NM_DDM_Base {
required SpaceHandle space
required int32 region
@@ -277,13 +334,6 @@
message NM_Provide_Attribute_Value_Update : merge
NM_Request_Object_Attribute_Value_Update {}
-message NM_Get_FED_File : merge NetworkMessage {
- required string federateName // the Federate name
- required string FEDid // the FED identifier
- required uint32 lineno // the line number, 0 means open the file
- required string line // one line of the FED file
-}
-
message NM_Start_Registration_For_Object_Class : merge NetworkMessage {
required ObjectClassHandle objectClass
}
Index: libCERTI/Interaction.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/Interaction.cc,v
retrieving revision 3.54
retrieving revision 3.55
diff -u -b -r3.54 -r3.55
--- libCERTI/Interaction.cc 21 Oct 2009 20:04:46 -0000 3.54
+++ libCERTI/Interaction.cc 18 Nov 2009 18:50:48 -0000 3.55
@@ -19,7 +19,7 @@
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA
//
-// $Id: Interaction.cc,v 3.54 2009/10/21 20:04:46 erk Exp $
+// $Id: Interaction.cc,v 3.55 2009/11/18 18:50:48 erk Exp $
// ----------------------------------------------------------------------------
@@ -45,7 +45,7 @@
Interaction::Interaction(const std::string& theName, InteractionClassHandle
theHandle, TransportType theTransport, OrderType theOrder)
: parent(0), depth(0), transport(theTransport), order(theOrder),
handle(theHandle),
-id(PublicLevelID)
+ superClass(0), id(PublicLevelID), space(0)
{
setName(theName);
/*
@@ -547,4 +547,4 @@
} // namespace certi
-// $Id: Interaction.cc,v 3.54 2009/10/21 20:04:46 erk Exp $
+// $Id: Interaction.cc,v 3.55 2009/11/18 18:50:48 erk Exp $
Index: libCERTI/ObjectClass.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/ObjectClass.cc,v
retrieving revision 3.68
retrieving revision 3.69
diff -u -b -r3.68 -r3.69
--- libCERTI/ObjectClass.cc 21 Oct 2009 20:04:46 -0000 3.68
+++ libCERTI/ObjectClass.cc 18 Nov 2009 18:50:48 -0000 3.69
@@ -19,7 +19,7 @@
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA
//
-// $Id: ObjectClass.cc,v 3.68 2009/10/21 20:04:46 erk Exp $
+// $Id: ObjectClass.cc,v 3.69 2009/11/18 18:50:48 erk Exp $
// ----------------------------------------------------------------------------
#include "Object.hh"
@@ -1827,11 +1827,11 @@
// }
// }
-ObjectClass::AttributeList_t
+const ObjectClass::AttributeList_t&
ObjectClass::getAttributeList(void) {
return attributeSet;
}
} // namespace certi
-// $Id: ObjectClass.cc,v 3.68 2009/10/21 20:04:46 erk Exp $
+// $Id: ObjectClass.cc,v 3.69 2009/11/18 18:50:48 erk Exp $
Index: libCERTI/Interaction.hh
===================================================================
RCS file: /sources/certi/certi/libCERTI/Interaction.hh,v
retrieving revision 3.36
retrieving revision 3.37
diff -u -b -r3.36 -r3.37
--- libCERTI/Interaction.hh 9 Nov 2008 12:41:40 -0000 3.36
+++ libCERTI/Interaction.hh 18 Nov 2009 18:50:48 -0000 3.37
@@ -19,7 +19,7 @@
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA
//
-// $Id: Interaction.hh,v 3.36 2008/11/09 12:41:40 gotthardp Exp $
+// $Id: Interaction.hh,v 3.37 2009/11/18 18:50:48 erk Exp $
// ----------------------------------------------------------------------------
#ifndef _CERTI_INTERACTION_HH
@@ -70,6 +70,12 @@
* @param[in] transport the transport type
* @param[in] order the receive order type
*/
+
+ /**
+ * The type for the parameter list.
+ */
+ typedef std::list<Parameter*> ParameterList_t;
+
Interaction(const std::string& theName, InteractionClassHandle theHandle,
TransportType theTransport, OrderType theOrder);
/**
* Destructor.
@@ -184,6 +190,12 @@
void broadcastInteractionMessage(InteractionBroadcastList *, const
RTIRegion *);
+ /**
+ * Getter for the parameter list of the interaction class.
+ * param[out] ParameterList_t @see Interaction::ParameterList_t
+ */
+ const ParameterList_t& getParameterList(void) const { return parameterSet;
}
+
//! This Object helps to find a TCPLink given a Federate Handle.
SecurityServer *server ;
/**
@@ -236,7 +248,7 @@
SpaceHandle space ;
//! List of this Interaction Class' Parameters.
- std::list<Parameter *> parameterSet ;
+ ParameterList_t parameterSet ;
typedef std::set<FederateHandle> PublishersList ;
PublishersList publishers ;
@@ -246,4 +258,4 @@
#endif // _CERTI_INTERACTION.HH
-// $Id: Interaction.hh,v 3.36 2008/11/09 12:41:40 gotthardp Exp $
+// $Id: Interaction.hh,v 3.37 2009/11/18 18:50:48 erk Exp $
Index: libCERTI/ObjectClass.hh
===================================================================
RCS file: /sources/certi/certi/libCERTI/ObjectClass.hh,v
retrieving revision 3.45
retrieving revision 3.46
diff -u -b -r3.45 -r3.46
--- libCERTI/ObjectClass.hh 16 Dec 2008 07:08:29 -0000 3.45
+++ libCERTI/ObjectClass.hh 18 Nov 2009 18:50:48 -0000 3.46
@@ -19,7 +19,7 @@
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA
//
-// $Id: ObjectClass.hh,v 3.45 2008/12/16 07:08:29 approx Exp $
+// $Id: ObjectClass.hh,v 3.46 2009/11/18 18:50:48 erk Exp $
// ----------------------------------------------------------------------------
#ifndef _CERTI_OBJECT_CLASS_HH
@@ -269,7 +269,7 @@
* Getter for the attribute list of the object class.
* param[out] AttributeList_t @see ObjectClass::AttributeList_t
*/
- AttributeList_t getAttributeList(void);
+ const AttributeList_t& getAttributeList(void);
//! This Object help to find a TCPLink from a Federate Handle.
SecurityServer *server ;
@@ -334,4 +334,4 @@
#endif // _CERTI_OBJECT_CLASS_HH
-// $Id: ObjectClass.hh,v 3.45 2008/12/16 07:08:29 approx Exp $
+// $Id: ObjectClass.hh,v 3.46 2009/11/18 18:50:48 erk Exp $
Index: libCERTI/RoutingSpace.hh
===================================================================
RCS file: /sources/certi/certi/libCERTI/RoutingSpace.hh,v
retrieving revision 3.10
retrieving revision 3.11
diff -u -b -r3.10 -r3.11
--- libCERTI/RoutingSpace.hh 31 Oct 2007 10:30:22 -0000 3.10
+++ libCERTI/RoutingSpace.hh 18 Nov 2009 18:50:48 -0000 3.11
@@ -19,7 +19,7 @@
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA
//
-// $Id: RoutingSpace.hh,v 3.10 2007/10/31 10:30:22 erk Exp $
+// $Id: RoutingSpace.hh,v 3.11 2009/11/18 18:50:48 erk Exp $
// ----------------------------------------------------------------------------
#ifndef _CERTI_ROUTING_SPACE
@@ -86,6 +86,8 @@
Extent createExtent() const ;
+ const std::vector<Dimension>& getDimensions() const { return dimensions; }
+
private:
std::vector<Dimension> dimensions ;
};
@@ -94,5 +96,5 @@
#endif // _CERTI_ROUTING_SPACE
-// $Id: RoutingSpace.hh,v 3.10 2007/10/31 10:30:22 erk Exp $
+// $Id: RoutingSpace.hh,v 3.11 2009/11/18 18:50:48 erk Exp $
Index: libCERTI/ObjectClassAttribute.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/ObjectClassAttribute.cc,v
retrieving revision 3.33
retrieving revision 3.34
diff -u -b -r3.33 -r3.34
--- libCERTI/ObjectClassAttribute.cc 21 Oct 2009 20:04:46 -0000 3.33
+++ libCERTI/ObjectClassAttribute.cc 18 Nov 2009 18:50:49 -0000 3.34
@@ -19,7 +19,7 @@
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA
//
-// $Id: ObjectClassAttribute.cc,v 3.33 2009/10/21 20:04:46 erk Exp $
+// $Id: ObjectClassAttribute.cc,v 3.34 2009/11/18 18:50:49 erk Exp $
// ----------------------------------------------------------------------------
#include "ObjectClassAttribute.hh"
@@ -41,7 +41,7 @@
static PrettyDebug D("OBJECTCLASSATTRIBUTE", "(Obj.Cl.Attr) ");
ObjectClassAttribute::ObjectClassAttribute(const std::string theName,
TransportType theTransport, OrderType theOrder)
- : order(theOrder), transport(theTransport) {
+ : level(PublicLevelID), order(theOrder), transport(theTransport), server(0),
handle(0), space(0) {
setName(theName);
}
@@ -219,4 +219,4 @@
} // namespace
-// $Id: ObjectClassAttribute.cc,v 3.33 2009/10/21 20:04:46 erk Exp $
+// $Id: ObjectClassAttribute.cc,v 3.34 2009/11/18 18:50:49 erk Exp $
Index: libCERTI/PrettyDebEx.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/PrettyDebEx.cc,v
retrieving revision 4.7
retrieving revision 4.8
diff -u -b -r4.7 -r4.8
--- libCERTI/PrettyDebEx.cc 21 Oct 2009 19:51:13 -0000 4.7
+++ libCERTI/PrettyDebEx.cc 18 Nov 2009 18:50:49 -0000 4.8
@@ -19,7 +19,7 @@
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA
//
-// $Id: PrettyDebEx.cc,v 4.7 2009/10/21 19:51:13 erk Exp $
+// $Id: PrettyDebEx.cc,v 4.8 2009/11/18 18:50:49 erk Exp $
// ----------------------------------------------------------------------------
@@ -309,7 +309,6 @@
case certi::NetworkMessage::DDM_UNSUBSCRIBE_ATTRIBUTES :
strcat(theMessage,"DDM_UNSUBSCRIBE_ATTRIBUTES"); break;
case certi::NetworkMessage::DDM_SUBSCRIBE_INTERACTION :
strcat(theMessage,"DDM_SUBSCRIBE_INTERACTION"); break;
case certi::NetworkMessage::DDM_UNSUBSCRIBE_INTERACTION :
strcat(theMessage,"DDM_UNSUBSCRIBE_INTERACTION"); break;
- case certi::NetworkMessage::GET_FED_FILE :
strcat(theMessage,"GET_FED_FILE"); break;
default:
sprintf(theMessage,"NETWORK
UNKNOWED MESSAGE %hd",testMess);
}
}
@@ -318,4 +317,4 @@
}
#endif // NDEBUG
-// $Id: PrettyDebEx.cc,v 4.7 2009/10/21 19:51:13 erk Exp $
+// $Id: PrettyDebEx.cc,v 4.8 2009/11/18 18:50:49 erk Exp $
Index: libCERTI/RootObject.hh
===================================================================
RCS file: /sources/certi/certi/libCERTI/RootObject.hh,v
retrieving revision 3.32
retrieving revision 3.33
diff -u -b -r3.32 -r3.33
--- libCERTI/RootObject.hh 8 Nov 2008 11:08:03 -0000 3.32
+++ libCERTI/RootObject.hh 18 Nov 2009 18:50:49 -0000 3.33
@@ -19,7 +19,7 @@
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA
//
-// $Id: RootObject.hh,v 3.32 2008/11/08 11:08:03 erk Exp $
+// $Id: RootObject.hh,v 3.33 2009/11/18 18:50:49 erk Exp $
// ----------------------------------------------------------------------------
#ifndef LIBCERTI_ROOT_OBJECT
@@ -37,6 +37,7 @@
class InteractionSet;
class RTIRegion;
class RoutingSpace;
+ class NM_Join_Federation_Execution;
} // namespace certi
#include "certi.hh"
@@ -166,6 +167,16 @@
*/
ObjectSet *objects;
+ /**
+ * Serialize the federate object model into a message buffer.
+ */
+ void getFOM(NM_Join_Federation_Execution& message);
+
+ /**
+ * Deserialize the federate object model from a message buffer.
+ */
+ void setFOM(const NM_Join_Federation_Execution& message);
+
private:
std::vector<RoutingSpace> spaces;
@@ -183,4 +194,4 @@
#endif // LIBCERTI_ROOT_OBJECT
-// $Id: RootObject.hh,v 3.32 2008/11/08 11:08:03 erk Exp $
+// $Id: RootObject.hh,v 3.33 2009/11/18 18:50:49 erk Exp $
Index: libCERTI/NM_Classes.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/NM_Classes.cc,v
retrieving revision 3.19
retrieving revision 3.20
diff -u -b -r3.19 -r3.20
--- libCERTI/NM_Classes.cc 14 Sep 2009 21:21:31 -0000 3.19
+++ libCERTI/NM_Classes.cc 18 Nov 2009 18:50:49 -0000 3.20
@@ -301,9 +301,6 @@
case NetworkMessage::PROVIDE_ATTRIBUTE_VALUE_UPDATE:
msg = new NM_Provide_Attribute_Value_Update();
break;
- case NetworkMessage::GET_FED_FILE:
- msg = new NM_Get_FED_File();
- break;
case NetworkMessage::LAST:
throw RTIinternalError("LAST message type should not be
used!!");
msg = new NM_Last();
@@ -419,6 +416,112 @@
}
/*<END>---------- Message_Null ------------<END>*/
+/*<BEGIN>---------- FOM_Dimension ------------<BEGIN>*/
+void NM_FOM_Dimension::serialize(MessageBuffer& msgBuffer) {
+ msgBuffer.write_uint32(_handle);
+ msgBuffer.write_string(_name);
+}
+void NM_FOM_Dimension::deserialize(MessageBuffer& msgBuffer) {
+ _handle = msgBuffer.read_uint32();
+ _name = msgBuffer.read_string();
+}
+/*<END>---------- FOM_Dimension ------------<END>*/
+
+/*<BEGIN>---------- FOM_Routing_Space ------------<BEGIN>*/
+void NM_FOM_Routing_Space::serialize(MessageBuffer& msgBuffer) {
+ msgBuffer.write_uint32(_handle);
+ msgBuffer.write_string(_name);
+ uint32_t size = _dimensions.size();
+ msgBuffer.write_uint32(size);
+ for (uint32_t i = 0; i < size; ++i)
+ _dimensions[i].serialize(msgBuffer);
+} /* end of serialize */
+void NM_FOM_Routing_Space::deserialize(MessageBuffer& msgBuffer) {
+ _handle = msgBuffer.read_uint32();
+ _name = msgBuffer.read_string();
+ uint32_t size = msgBuffer.read_uint32();
+ _dimensions.resize(size);
+ for (uint32_t i = 0; i < size; ++i)
+ _dimensions[i].deserialize(msgBuffer);
+} /* end of deserialize */
+/*<END>---------- FOM_Routing_Space ------------<END>*/
+
+/*<BEGIN>---------- FOM_Attribute ------------<BEGIN>*/
+void NM_FOM_Attribute::serialize(MessageBuffer& msgBuffer) {
+ msgBuffer.write_uint32(_handle);
+ msgBuffer.write_string(_name);
+ msgBuffer.write_uint32(_spaceHandle);
+ msgBuffer.write_uint8(_order);
+ msgBuffer.write_uint8(_transport);
+}
+void NM_FOM_Attribute::deserialize(MessageBuffer& msgBuffer) {
+ _handle = msgBuffer.read_uint32();
+ _name = msgBuffer.read_string();
+ _spaceHandle = msgBuffer.read_uint32();
+ _order = msgBuffer.read_uint8();
+ _transport = msgBuffer.read_uint8();
+}
+/*<END>---------- FOM_Attribute ------------<END>*/
+
+/*<BEGIN>---------- FOM_Object_Class ------------<BEGIN>*/
+void NM_FOM_Object_Class::serialize(MessageBuffer& msgBuffer) {
+ msgBuffer.write_uint32(_handle);
+ msgBuffer.write_string(_name);
+ msgBuffer.write_uint32(_superclassHandle);
+ uint32_t size = _attributes.size();
+ msgBuffer.write_uint32(size);
+ for (uint32_t i = 0; i < size; ++i)
+ _attributes[i].serialize(msgBuffer);
+} /* end of serialize */
+void NM_FOM_Object_Class::deserialize(MessageBuffer& msgBuffer) {
+ _handle = msgBuffer.read_uint32();
+ _name = msgBuffer.read_string();
+ _superclassHandle = msgBuffer.read_uint32();
+ uint32_t size = msgBuffer.read_uint32();
+ _attributes.resize(size);
+ for (uint32_t i = 0; i < size; ++i)
+ _attributes[i].deserialize(msgBuffer);
+} /* end of deserialize */
+/*<END>---------- FOM_Object_Class ------------<END>*/
+
+/*<BEGIN>---------- FOM_FOM_Parameter ------------<BEGIN>*/
+void NM_FOM_Parameter::serialize(MessageBuffer& msgBuffer) {
+ msgBuffer.write_uint32(_handle);
+ msgBuffer.write_string(_name);
+}
+void NM_FOM_Parameter::deserialize(MessageBuffer& msgBuffer) {
+ _handle = msgBuffer.read_uint32();
+ _name = msgBuffer.read_string();
+}
+/*<END>---------- FOM_FOM_Parameter ------------<END>*/
+
+/*<BEGIN>---------- FOM_Interaction_Class ------------<BEGIN>*/
+void NM_FOM_Interaction_Class::serialize(MessageBuffer& msgBuffer) {
+ msgBuffer.write_uint32(_handle);
+ msgBuffer.write_string(_name);
+ msgBuffer.write_uint32(_superclassHandle);
+ msgBuffer.write_uint32(_spaceHandle);
+ msgBuffer.write_uint8(_order);
+ msgBuffer.write_uint8(_transport);
+ uint32_t size = _parameters.size();
+ msgBuffer.write_uint32(size);
+ for (uint32_t i = 0; i < size; ++i)
+ _parameters[i].serialize(msgBuffer);
+} /* end of serialize */
+void NM_FOM_Interaction_Class::deserialize(MessageBuffer& msgBuffer) {
+ _handle = msgBuffer.read_uint32();
+ _name = msgBuffer.read_string();
+ _superclassHandle = msgBuffer.read_uint32();
+ _spaceHandle = msgBuffer.read_uint32();
+ _order = msgBuffer.read_uint8();
+ _transport = msgBuffer.read_uint8();
+ uint32_t size = msgBuffer.read_uint32();
+ _parameters.resize(size);
+ for (uint32_t i = 0; i < size; ++i)
+ _parameters[i].deserialize(msgBuffer);
+} /* end of deserialize */
+/*<END>---------- FOM_Interaction_Class ------------<END>*/
+
/*<BEGIN>---------- Create_Federation_Execution ------------<BEGIN>*/
NM_Create_Federation_Execution::NM_Create_Federation_Execution() {
this->name = "CREATE_FEDERATION_EXECUTION";
@@ -469,7 +572,6 @@
NM_Join_Federation_Execution::NM_Join_Federation_Execution() {
this->name = "JOIN_FEDERATION_EXECUTION";
this->type = NetworkMessage::JOIN_FEDERATION_EXECUTION;
- federateName = std::string("");
/* specific field init */
}
NM_Join_Federation_Execution::~NM_Join_Federation_Execution() {
@@ -484,6 +586,18 @@
msgBuffer.write_uint32(bestEffortPeer);
msgBuffer.write_string(federationName);
msgBuffer.write_string(federateName);
+ uint32_t size = _routingSpaces.size();
+ msgBuffer.write_uint32(size);
+ for (uint32_t i = 0; i < size; ++i)
+ _routingSpaces[i].serialize(msgBuffer);
+ size = _objectClasses.size();
+ msgBuffer.write_uint32(size);
+ for (uint32_t i = 0; i < size; ++i)
+ _objectClasses[i].serialize(msgBuffer);
+ size = _interactionClasses.size();
+ msgBuffer.write_uint32(size);
+ for (uint32_t i = 0; i < size; ++i)
+ _interactionClasses[i].serialize(msgBuffer);
} /* end of serialize */
void NM_Join_Federation_Execution::deserialize(MessageBuffer& msgBuffer) {
/* call mother class */
@@ -495,6 +609,18 @@
bestEffortPeer = msgBuffer.read_uint32();
federationName = msgBuffer.read_string();
federateName = msgBuffer.read_string();
+ uint32_t size = msgBuffer.read_uint32();
+ _routingSpaces.resize(size);
+ for (uint32_t i = 0; i < size; ++i)
+ _routingSpaces[i].deserialize(msgBuffer);
+ size = msgBuffer.read_uint32();
+ _objectClasses.resize(size);
+ for (uint32_t i = 0; i < size; ++i)
+ _objectClasses[i].deserialize(msgBuffer);
+ size = msgBuffer.read_uint32();
+ _interactionClasses.resize(size);
+ for (uint32_t i = 0; i < size; ++i)
+ _interactionClasses[i].deserialize(msgBuffer);
} /* end of deserialize */
/*<END>---------- Join_Federation_Execution ------------<END>*/
@@ -1779,38 +1905,6 @@
}
/*<END>---------- Provide_Attribute_Value_Update ------------<END>*/
-/*<BEGIN>---------- Get_FED_File ------------<BEGIN>*/
-NM_Get_FED_File::NM_Get_FED_File() {
- this->name = "GET_FED_FILE";
- this->type = NetworkMessage::GET_FED_FILE;
- /* specific field init */
-}
-NM_Get_FED_File::~NM_Get_FED_File() {
-}
-void NM_Get_FED_File::serialize(MessageBuffer& msgBuffer) {
- /* call mother class */
- Super::serialize(msgBuffer);
- /* specific code (if any) goes here */
- msgBuffer.write_string(federateName);
- msgBuffer.write_string(FEDid);
- msgBuffer.write_int16(lineno);
- if (lineno>0) {
- msgBuffer.write_string(line);
- }
-} /* end of serialize */
-void NM_Get_FED_File::deserialize(MessageBuffer& msgBuffer) {
- /* call mother class */
- Super::deserialize(msgBuffer);
- /* specific code (if any) goes here */
- federateName = msgBuffer.read_string();
- FEDid = msgBuffer.read_string();
- lineno = msgBuffer.read_int16();
- if (lineno>0) {
- line = msgBuffer.read_string();
- }
-} /* end of deserialize */
-/*<END>---------- Get_FED_File ------------<END>*/
-
/*<BEGIN>---------- Last ------------<BEGIN>*/
NM_Last::NM_Last() {
this->name = "LAST";
Index: libCERTI/NM_Classes.hh
===================================================================
RCS file: /sources/certi/certi/libCERTI/NM_Classes.hh,v
retrieving revision 3.14
retrieving revision 3.15
diff -u -b -r3.14 -r3.15
--- libCERTI/NM_Classes.hh 11 Oct 2009 11:13:15 -0000 3.14
+++ libCERTI/NM_Classes.hh 18 Nov 2009 18:50:49 -0000 3.15
@@ -124,6 +124,168 @@
/*<END>---------- Message_Null ------------<END>*/
+/*<BEGIN>---------- FOM_Dimension ------------<BEGIN>*/
+class CERTI_EXPORT NM_FOM_Dimension {
+public:
+ NM_FOM_Dimension() : _handle(0) {}
+ void serialize(MessageBuffer& msgBuffer);
+ void deserialize(MessageBuffer& msgBuffer);
+ /* specific Getter/Setter */
+ const DimensionHandle& getHandle() const {return _handle;}
+ void setHandle(const DimensionHandle& handle) {_handle=handle;}
+ const std::string& getName() const {return _name;}
+ void setName(const std::string& name) {_name=name;}
+protected:
+ /* specific field */
+ DimensionHandle _handle;
+ std::string _name;
+private:
+};
+
+/*<END>---------- FOM_Dimension ------------<END>*/
+
+/*<BEGIN>---------- FOM_Routing_Space ------------<BEGIN>*/
+class CERTI_EXPORT NM_FOM_Routing_Space {
+public:
+ NM_FOM_Routing_Space() : _handle(0) {}
+ void serialize(MessageBuffer& msgBuffer);
+ void deserialize(MessageBuffer& msgBuffer);
+ /* specific Getter/Setter */
+ const SpaceHandle& getHandle() const {return _handle;}
+ void setHandle(const SpaceHandle& handle) {_handle=handle;}
+ const std::string& getName() const {return _name;}
+ void setName(const std::string& name) {_name=name;}
+ uint32_t getNumDimensions() const { return _dimensions.size(); }
+ void setNumDimensions(uint32_t num) { _dimensions.resize(num); }
+ const NM_FOM_Dimension& getDimension(uint32_t index) const { return
_dimensions[index]; }
+ NM_FOM_Dimension& getDimension(uint32_t index) { return
_dimensions[index]; }
+ void setDimension(uint32_t index, const NM_FOM_Dimension& dimension) {
_dimensions[index] = dimension; }
+protected:
+ /* specific field */
+ SpaceHandle _handle;
+ std::string _name;
+ std::vector<NM_FOM_Dimension> _dimensions;
+private:
+};
+
+/*<END>---------- FOM_Routing_Space ------------<END>*/
+
+/*<BEGIN>---------- FOM_Attribute ------------<BEGIN>*/
+class CERTI_EXPORT NM_FOM_Attribute {
+public:
+ NM_FOM_Attribute() : _handle(0), _spaceHandle(0), _order(0),
_transport(0) {}
+ void serialize(MessageBuffer& msgBuffer);
+ void deserialize(MessageBuffer& msgBuffer);
+ /* specific Getter/Setter */
+ const AttributeHandle& getHandle() const {return _handle;}
+ void setHandle(const AttributeHandle& handle) {_handle=handle;}
+ const std::string& getName() const {return _name;}
+ void setName(const std::string& name) {_name=name;}
+ const SpaceHandle& getSpaceHandle() const {return _spaceHandle;}
+ void setSpaceHandle(const SpaceHandle& spaceHandle)
{_spaceHandle=spaceHandle;}
+ const OrderType& getOrder() const {return _order;}
+ void setOrder(const OrderType& order) {_order=order;}
+ const TransportType& getTransport() const {return _transport;}
+ void setTransport(const TransportType& transport)
{_transport=transport;}
+protected:
+ /* specific field */
+ AttributeHandle _handle;
+ std::string _name;
+ SpaceHandle _spaceHandle;
+ OrderType _order;
+ TransportType _transport;
+private:
+};
+
+/*<END>---------- FOM_Attribute ------------<END>*/
+
+/*<BEGIN>---------- FOM_Object_Class ------------<BEGIN>*/
+class CERTI_EXPORT NM_FOM_Object_Class {
+public:
+ NM_FOM_Object_Class() : _handle(0), _superclassHandle(0) {}
+ void serialize(MessageBuffer& msgBuffer);
+ void deserialize(MessageBuffer& msgBuffer);
+ /* specific Getter/Setter */
+ const ObjectClassHandle& getHandle() const {return _handle;}
+ void setHandle(const ObjectClassHandle& handle) {_handle=handle;}
+ const std::string& getName() const {return _name;}
+ void setName(const std::string& name) {_name=name;}
+ const ObjectClassHandle& getSuperclassHandle() const {return
_superclassHandle;}
+ void setSuperclassHandle(const ObjectClassHandle& superclassHandle)
{_superclassHandle=superclassHandle;}
+ uint32_t getNumAttributes() const { return _attributes.size(); }
+ void setNumAttributes(uint32_t num) { _attributes.resize(num); }
+ const NM_FOM_Attribute& getAttribute(uint32_t index) const { return
_attributes[index]; }
+ NM_FOM_Attribute& getAttribute(uint32_t index) { return
_attributes[index]; }
+ void setAttribute(uint32_t index, const NM_FOM_Attribute& attribute) {
_attributes[index] = attribute; }
+protected:
+ /* specific field */
+ ObjectClassHandle _handle;
+ std::string _name;
+ ObjectClassHandle _superclassHandle;
+ std::vector<NM_FOM_Attribute> _attributes;
+private:
+};
+
+/*<END>---------- FOM_Object_Class ------------<END>*/
+
+/*<BEGIN>---------- FOM_Parameter ------------<BEGIN>*/
+class CERTI_EXPORT NM_FOM_Parameter {
+public:
+ NM_FOM_Parameter() : _handle(0) {}
+ void serialize(MessageBuffer& msgBuffer);
+ void deserialize(MessageBuffer& msgBuffer);
+ /* specific Getter/Setter */
+ const ParameterHandle& getHandle() const {return _handle;}
+ void setHandle(const ParameterHandle& handle) {_handle=handle;}
+ const std::string& getName() const {return _name;}
+ void setName(const std::string& name) {_name=name;}
+protected:
+ /* specific field */
+ ParameterHandle _handle;
+ std::string _name;
+private:
+};
+
+/*<END>---------- FOM_Parameter ------------<END>*/
+
+/*<BEGIN>---------- FOM_Interaction_Class ------------<BEGIN>*/
+class CERTI_EXPORT NM_FOM_Interaction_Class {
+public:
+ NM_FOM_Interaction_Class() : _handle(0), _superclassHandle(0),
_spaceHandle(0), _order(0), _transport(0) {}
+ void serialize(MessageBuffer& msgBuffer);
+ void deserialize(MessageBuffer& msgBuffer);
+ /* specific Getter/Setter */
+ const InteractionClassHandle& getHandle() const {return _handle;}
+ void setHandle(const InteractionClassHandle& handle) {_handle=handle;}
+ const std::string& getName() const {return _name;}
+ void setName(const std::string& name) {_name=name;}
+ const InteractionClassHandle& getSuperclassHandle() const {return
_superclassHandle;}
+ void setSuperclassHandle(const InteractionClassHandle&
superclassHandle) {_superclassHandle=superclassHandle;}
+ const SpaceHandle& getSpaceHandle() const {return _spaceHandle;}
+ void setSpaceHandle(const SpaceHandle& spaceHandle)
{_spaceHandle=spaceHandle;}
+ const OrderType& getOrder() const {return _order;}
+ void setOrder(const OrderType& order) {_order=order;}
+ const TransportType& getTransport() const {return _transport;}
+ void setTransport(const TransportType& transport)
{_transport=transport;}
+ uint32_t getNumParameters() const { return _parameters.size(); }
+ void setNumParameters(uint32_t num) { _parameters.resize(num); }
+ const NM_FOM_Parameter& getParameter(uint32_t index) const { return
_parameters[index]; }
+ NM_FOM_Parameter& getParameter(uint32_t index) { return
_parameters[index]; }
+ void setParameter(uint32_t index, const NM_FOM_Parameter& parameter) {
_parameters[index] = parameter; }
+protected:
+ /* specific field */
+ InteractionClassHandle _handle;
+ std::string _name;
+ InteractionClassHandle _superclassHandle;
+ SpaceHandle _spaceHandle;
+ OrderType _order;
+ TransportType _transport;
+ std::vector<NM_FOM_Parameter> _parameters;
+private:
+};
+
+/*<END>---------- FOM_Interaction_Class ------------<END>*/
+
/*<BEGIN>---------- Create_Federation_Execution ------------<BEGIN>*/
class CERTI_EXPORT NM_Create_Federation_Execution : public NetworkMessage {
public:
@@ -178,6 +340,21 @@
std::string getFederationName() {return federationName;};
void setFederationName(std::string newFederationName)
{federationName=newFederationName;};
/* specific Getter/Setter */
+ uint32_t getNumRoutingSpaces() const { return _routingSpaces.size(); }
+ void setNumRoutingSpaces(uint32_t num) { _routingSpaces.resize(num); }
+ const NM_FOM_Routing_Space& getRoutingSpace(uint32_t index) const {
return _routingSpaces[index]; }
+ NM_FOM_Routing_Space& getRoutingSpace(uint32_t index) { return
_routingSpaces[index]; }
+ void setRoutingSpace(uint32_t index, const NM_FOM_Routing_Space&
routingSpace) { _routingSpaces[index] = routingSpace; }
+ uint32_t getNumObjectClasses() const { return _objectClasses.size(); }
+ void setNumObjectClasses(uint32_t num) { _objectClasses.resize(num); }
+ const NM_FOM_Object_Class& getObjectClass(uint32_t index) const {
return _objectClasses[index]; }
+ NM_FOM_Object_Class& getObjectClass(uint32_t index) { return
_objectClasses[index]; }
+ void setObjectClass(uint32_t index, const NM_FOM_Object_Class&
objectClass) { _objectClasses[index] = objectClass; }
+ uint32_t getNumInteractionClasses() const { return
_interactionClasses.size(); }
+ void setNumInteractionClasses(uint32_t num) {
_interactionClasses.resize(num); }
+ const NM_FOM_Interaction_Class& getInteractionClass(uint32_t index)
const { return _interactionClasses[index]; }
+ NM_FOM_Interaction_Class& getInteractionClass(uint32_t index) { return
_interactionClasses[index]; }
+ void setInteractionClass(uint32_t index, const
NM_FOM_Interaction_Class& interactionClass) { _interactionClasses[index] =
interactionClass; }
protected:
/* specific field */
// int32_t numberOfRegulators;
@@ -186,6 +363,9 @@
// uint32_t bestEffortPeer;
std::string federationName;
std::string federateName;
+ std::vector<NM_FOM_Routing_Space> _routingSpaces;
+ std::vector<NM_FOM_Object_Class> _objectClasses;
+ std::vector<NM_FOM_Interaction_Class> _interactionClasses;
private:
};
@@ -1522,35 +1702,6 @@
/*<END>---------- Provide_Attribute_Value_Update ------------<END>*/
-/*<BEGIN>---------- Get_Fed_File ------------<BEGIN>*/
-class CERTI_EXPORT NM_Get_FED_File : public NetworkMessage {
-public:
- typedef NetworkMessage Super;
- NM_Get_FED_File();
- virtual ~NM_Get_FED_File();
- virtual void serialize(MessageBuffer& msgBuffer);
- virtual void deserialize(MessageBuffer& msgBuffer);
- /* specific Getter/Setter */
- std::string getFederateName() {return federateName;};
- void setFederateName(std::string newFederateName)
{federateName=newFederateName;};
- void setFEDid(std::string newFEDid) {FEDid=newFEDid;};
- const std::string getFEDid() const {return FEDid;};
- uint32_t getLineno() {return lineno;};
- void setLineno(uint32_t newLineno) {lineno=newLineno;};
- void setFEDLine(std::string newLine) {line=newLine;};
- std::string getFEDLine() {return line;};
-protected:
- /* specific field */
- std::string federateName;// the Federate name
- std::string FEDid;
- uint32_t lineno;
- std::string line;
-
-private:
-};
-
-/*<END>---------- Get_Fed_File ------------<END>*/
-
/*<BEGIN>---------- Last ------------<BEGIN>*/
class CERTI_EXPORT NM_Last : public NetworkMessage {
public:
Index: libCERTI/NetworkMessage.hh
===================================================================
RCS file: /sources/certi/certi/libCERTI/NetworkMessage.hh,v
retrieving revision 3.49
retrieving revision 3.50
diff -u -b -r3.49 -r3.50
--- libCERTI/NetworkMessage.hh 14 Sep 2009 21:21:32 -0000 3.49
+++ libCERTI/NetworkMessage.hh 18 Nov 2009 18:50:49 -0000 3.50
@@ -17,7 +17,7 @@
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA
//
-// $Id: NetworkMessage.hh,v 3.49 2009/09/14 21:21:32 erk Exp $
+// $Id: NetworkMessage.hh,v 3.50 2009/11/18 18:50:49 erk Exp $
// ----------------------------------------------------------------------------
#ifndef CERTI_NETWORK_MESSAGE_HH
@@ -138,7 +138,6 @@
DDM_SUBSCRIBE_INTERACTION,
DDM_UNSUBSCRIBE_INTERACTION,
PROVIDE_ATTRIBUTE_VALUE_UPDATE,
- GET_FED_FILE,
SET_CLASS_RELEVANCE_ADVISORY_SWITCH,
SET_INTERACTION_RELEVANCE_ADVISORY_SWITCH,
SET_ATTRIBUTE_RELEVANCE_ADVISORY_SWITCH,
@@ -346,4 +345,4 @@
#endif // CERTI_NETWORK_MESSAGE_HH
-// $Id: NetworkMessage.hh,v 3.49 2009/09/14 21:21:32 erk Exp $
+// $Id: NetworkMessage.hh,v 3.50 2009/11/18 18:50:49 erk Exp $
Index: libCERTI/RootObject.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/RootObject.cc,v
retrieving revision 3.42
retrieving revision 3.43
diff -u -b -r3.42 -r3.43
--- libCERTI/RootObject.cc 21 Oct 2009 18:56:28 -0000 3.42
+++ libCERTI/RootObject.cc 18 Nov 2009 18:50:49 -0000 3.43
@@ -19,7 +19,7 @@
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA
//
-// $Id: RootObject.cc,v 3.42 2009/10/21 18:56:28 erk Exp $
+// $Id: RootObject.cc,v 3.43 2009/11/18 18:50:49 erk Exp $
// ----------------------------------------------------------------------------
#include "Object.hh"
@@ -34,6 +34,7 @@
#include "RoutingSpace.hh"
#include "RootObject.hh"
#include "PrettyDebug.hh"
+#include "NM_Classes.hh"
#include "helper.hh"
#include <string>
@@ -358,6 +359,228 @@
Interactions->addClass(currentIC,parentIC);
} /* end of addInteractionClass */
+void
+RootObject::getFOM(NM_Join_Federation_Execution& message)
+{
+ // The rounting spaces
+ uint32_t routingSpaceCount = spaces.size();
+ message.setNumRoutingSpaces(routingSpaceCount);
+ for (uint32_t i = 0; i < routingSpaceCount; ++i) {
+ const RoutingSpace& rs = spaces[i];
+ NM_FOM_Routing_Space& mrs = message.getRoutingSpace(i);
+
+ mrs.setHandle(rs.getHandle());
+ mrs.setName(rs.getName());
+
+ uint32_t dimensionCount = rs.getDimensions().size();
+ mrs.setNumDimensions(dimensionCount);
+ for (uint32_t j = 0; j < dimensionCount; ++j) {
+ const Dimension& d = rs.getDimensions()[j];
+ NM_FOM_Dimension& md = mrs.getDimension(j);
+
+ md.setHandle(d.getHandle());
+ md.setName(d.getName());
+ }
+ }
+
+ // The object classes
+ message.setNumObjectClasses(ObjectClasses->size());
+ uint32_t idx = 0;
+ for (ObjectClassSet::handled_const_iterator i =
ObjectClasses->handled_begin();
+ i != ObjectClasses->handled_end(); ++i, ++idx) {
+ const ObjectClass* objectClass = i->second;
+ NM_FOM_Object_Class& moc = message.getObjectClass(idx);
+
+ moc.setHandle(objectClass->getHandle());
+ std::string name = objectClass->getName();
+ ObjectClassHandle superclassHandle =
objectClass->getSuperclass();
+ moc.setSuperclassHandle(superclassHandle);
+
+ // Dump only those attributes from the list that are not
alreay in the parent
+ ObjectClass::AttributeList_t attributeList =
i->second->getAttributeList();
+ if (0 < superclassHandle) {
+ ObjectClass* parent = getObjectClass(superclassHandle);
+
+ // strip the common substring from the parents name.
+ if (name.find(parent->getName() + ".") == 0)
+ name = name.substr(parent->getName().size() +
1);
+
+ // remove the parents attributes from the transfered
list
+ ObjectClass::AttributeList_t parentAttributeList =
parent->getAttributeList();
+ ObjectClass::AttributeList_t::const_iterator j =
parentAttributeList.begin();
+ for (; j != parentAttributeList.end(); ++j) {
+ ObjectClass::AttributeList_t::iterator k =
attributeList.begin();
+ for (; k != attributeList.end(); ++k) {
+ if ((*k)->getHandle() !=
(*j)->getHandle())
+ continue;
+ attributeList.erase(k);
+ break;
+ }
+ }
+ }
+
+ // Transfer the short name
+ moc.setName(name);
+
+ // Transfer the attributes that are not inheritted
+ moc.setNumAttributes(attributeList.size());
+ uint32_t jdx = 0;
+ ObjectClass::AttributeList_t::const_reverse_iterator j =
attributeList.rbegin();
+ for (; j != attributeList.rend(); ++j, ++jdx) {
+ const ObjectClassAttribute* attribute = *j;
+
+ NM_FOM_Attribute& ma = moc.getAttribute(jdx);
+ ma.setHandle(attribute->getHandle());
+ ma.setName(attribute->getName());
+ ma.setSpaceHandle(attribute->getSpace());
+ ma.setOrder(attribute->order);
+ ma.setTransport(attribute->transport);
+ }
+ }
+
+
+ // The interaction classes
+ message.setNumInteractionClasses(Interactions->size());
+ idx = 0;
+ for (InteractionSet::handled_const_iterator i =
Interactions->handled_begin();
+ i != Interactions->handled_end(); ++i, ++idx) {
+ Interaction* interactionClass = i->second;
+ NM_FOM_Interaction_Class& mic =
message.getInteractionClass(idx);
+
+ mic.setHandle(interactionClass->getHandle());
+ std::string name = interactionClass->getName();
+ InteractionClassHandle superclassHandle =
interactionClass->getSuperclass();
+ mic.setSuperclassHandle(superclassHandle);
+ mic.setSpaceHandle(interactionClass->getSpace());
+ mic.setOrder(interactionClass->order);
+ mic.setTransport(interactionClass->transport);
+
+ // Dump only those attributes from the list that are not
alreay in the parent
+ Interaction::ParameterList_t parameterList =
i->second->getParameterList();
+ if (0 < superclassHandle) {
+ Interaction* parent =
getInteractionClass(superclassHandle);
+
+ // strip the common substring from the parents name.
+ if (name.find(parent->getName() + ".") == 0)
+ name = name.substr(parent->getName().size() +
1);
+
+ // remove the parents attributes from the transfered
list
+ Interaction::ParameterList_t parentParameterList =
parent->getParameterList();
+ Interaction::ParameterList_t::const_iterator j =
parentParameterList.begin();
+ for (; j != parentParameterList.end(); ++j) {
+ Interaction::ParameterList_t::iterator k =
parameterList.begin();
+ for (; k != parameterList.end(); ++k) {
+ if ((*k)->getHandle() !=
(*j)->getHandle())
+ continue;
+ parameterList.erase(k);
+ break;
+ }
+ }
+ }
+
+ // Transfer the simple name
+ mic.setName(name);
+
+ // Transfer the new parameters
+ mic.setNumParameters(parameterList.size());
+ Interaction::ParameterList_t::const_reverse_iterator j =
parameterList.rbegin();
+ uint32_t jdx = 0;
+ for (; j != parameterList.rend(); ++j, ++jdx) {
+ const Parameter* parameter = *j;
+ NM_FOM_Parameter& mp = mic.getParameter(jdx);
+
+ mp.setHandle(parameter->getHandle());
+ mp.setName(parameter->getName());
+ }
+ }
+}
+
+void
+RootObject::setFOM(const NM_Join_Federation_Execution& message)
+{
+ // The number of routing space records to read
+ uint32_t routingSpaceCount = message.getNumRoutingSpaces();
+ for (uint32_t i = 0; i < routingSpaceCount; ++i) {
+ const NM_FOM_Routing_Space& mrs = message.getRoutingSpace(i);
+
+ RoutingSpace current;
+ current.setHandle(mrs.getHandle());
+ current.setName(mrs.getName());
+
+ uint32_t dimensionCount = mrs.getNumDimensions();
+ for (uint32_t j = 0; j < dimensionCount; ++j) {
+ const NM_FOM_Dimension& md = mrs.getDimension(j);
+
+ Dimension dimension(md.getHandle());
+ dimension.setName(md.getName());
+ current.addDimension(dimension);
+ }
+
+ addRoutingSpace(current);
+ }
+
+ // The number of object class records to read
+ uint32_t objectClassCount = message.getNumObjectClasses();
+ for (uint32_t i = 0; i < objectClassCount; ++i) {
+ const NM_FOM_Object_Class& moc = message.getObjectClass(i);
+
+ // add the object class to the root object
+ ObjectClass* current = new ObjectClass(moc.getName(),
moc.getHandle());
+ ObjectClass* parent = 0;
+ ObjectClassHandle superclassHandle = moc.getSuperclassHandle();
+ if (0 < superclassHandle) {
+ parent = getObjectClass(superclassHandle);
+ }
+ addObjectClass(current, parent);
+
+ uint32_t attributeCount = moc.getNumAttributes();
+ for (uint32_t j = 0; j < attributeCount; ++j) {
+ const NM_FOM_Attribute& ma = moc.getAttribute(j);
+
+ OrderType order = ma.getOrder();
+ TransportType transport = ma.getTransport();
+ ObjectClassAttribute *attribute = new
ObjectClassAttribute(ma.getName(), transport, order);
+ current->addAttribute(attribute);
+ attribute->setSpace(ma.getSpaceHandle());
+ assert(attribute->getHandle() == ma.getHandle());
+ }
+ }
+
+ // The number of interactions records to read
+ uint32_t interactionsCount = message.getNumInteractionClasses();
+ for (uint32_t i = 0; i < interactionsCount; ++i) {
+ const NM_FOM_Interaction_Class& mic =
message.getInteractionClass(i);
+
+ Interaction* current = new Interaction(mic.getName(),
mic.getHandle(), mic.getTransport(), mic.getOrder());
+ current->setSpace(mic.getSpaceHandle());
+ Interaction* parent = 0;
+ InteractionClassHandle superclassHandle =
mic.getSuperclassHandle();
+ if (0 < superclassHandle) {
+ parent = getInteractionClass(superclassHandle);
+ }
+
+ addInteractionClass(current, parent);
+
+ if (parent) {
+ const Interaction::ParameterList_t& parameterList =
parent->getParameterList();
+ for
(Interaction::Interaction::ParameterList_t::const_iterator j =
parameterList.begin();
+ j != parameterList.end(); ++j) {
+ current->addParameter(new Parameter(**j));
+ }
+ }
+
+ uint32_t parameterCount = mic.getNumParameters();
+ for (uint32_t j = 0; j < parameterCount; ++j) {
+ const NM_FOM_Parameter& mp = mic.getParameter(j);
+
+ Parameter *parameter = new Parameter;
+ parameter->setName(mp.getName());
+ parameter->setHandle(mp.getHandle());
+ current->addParameter(parameter);
+ }
+ }
+} /* end of setFOM */
+
} // namespace certi
-// $Id: RootObject.cc,v 3.42 2009/10/21 18:56:28 erk Exp $
+// $Id: RootObject.cc,v 3.43 2009/11/18 18:50:49 erk Exp $
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [certi-cvs] certi RTIG/FederationsList.cc RTIG/Federation.c...,
certi-cvs <=