[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[certi-cvs] certi/libCERTI RootObject.hh ObjectClass.cc Obj...
From: |
certi-cvs |
Subject: |
[certi-cvs] certi/libCERTI RootObject.hh ObjectClass.cc Obj... |
Date: |
Thu, 30 Oct 2008 16:01:39 +0000 |
CVSROOT: /sources/certi
Module name: certi
Changes by: Eric NOULARD <erk> 08/10/30 16:01:39
Modified files:
libCERTI : RootObject.hh ObjectClass.cc
ObjectClassAttribute.cc XmlParser.cc
ObjectClassAttribute.hh fed.cc Named.hh
ObjectClass.hh RootObject.cc
Log message:
Improver Parsing architecture (to be continued)
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/RootObject.hh?cvsroot=certi&r1=3.29&r2=3.30
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/ObjectClass.cc?cvsroot=certi&r1=3.53&r2=3.54
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/ObjectClassAttribute.cc?cvsroot=certi&r1=3.28&r2=3.29
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/XmlParser.cc?cvsroot=certi&r1=3.26&r2=3.27
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/ObjectClassAttribute.hh?cvsroot=certi&r1=3.23&r2=3.24
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/fed.cc?cvsroot=certi&r1=3.17&r2=3.18
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/Named.hh?cvsroot=certi&r1=3.6&r2=3.7
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/ObjectClass.hh?cvsroot=certi&r1=3.37&r2=3.38
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/RootObject.cc?cvsroot=certi&r1=3.34&r2=3.35
Patches:
Index: RootObject.hh
===================================================================
RCS file: /sources/certi/certi/libCERTI/RootObject.hh,v
retrieving revision 3.29
retrieving revision 3.30
diff -u -b -r3.29 -r3.30
--- RootObject.hh 13 Jun 2008 10:55:13 -0000 3.29
+++ RootObject.hh 30 Oct 2008 16:01:37 -0000 3.30
@@ -19,7 +19,7 @@
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA
//
-// $Id: RootObject.hh,v 3.29 2008/06/13 10:55:13 erk Exp $
+// $Id: RootObject.hh,v 3.30 2008/10/30 16:01:37 erk Exp $
// ----------------------------------------------------------------------------
#ifndef LIBCERTI_ROOT_OBJECT
@@ -51,15 +51,33 @@
/**
* The RootObject is literally the "root" object
* of the HLA object class hierarchy.
- * It contains
+ * One RootObject is created for each federation both
+ * on the RTIG and on each RTIA instance of corresponding
+ * federate which has joined the federation.
+ * It contains the object (resp. interaction) classes
+ * hierarchy with the attached attributes (resp. parameters).
+ * It contains the object instances which has been registered
+ * by all federate (if on RTIG) or by local federate (if on RTIA).
*/
class CERTI_EXPORT RootObject
{
public:
- RootObject(SecurityServer *);
+
+ /**
+ * RootObject constructor.
+ * @param[in] security_server the SocketServer proxy which is used to
+ * retrieve the socket link between RTIG and RTIA.
+ * This may be NULL on the RTIA.
+ */
+ RootObject(SecurityServer *security_server);
+
+ /**
+ * RootObject destructor.
+ * Will delete all object or interaction classes.
+ */
~RootObject();
- void display() const ;
+ void display() const;
SecurityLevelID GetSecurityLevelID(const char *the_name);
@@ -108,14 +126,43 @@
ObjectClassAttribute *getObjectClassAttribute(ObjectHandle,
AttributeHandle);
- // -- Attributes
- ObjectClassSet *ObjectClasses ;
- InteractionSet *Interactions ;
- ObjectSet *objects ;
+ /**
+ * Add an object class to the ObjectRoot
+ * @param[in,out] currentOC the object class to be added
+ * @param[in,out] parentOC the parent object class of currentOC
+ * this may be NULL.
+ */
+ void addObjectClass(ObjectClass* currentOC,ObjectClass* parentOC);
+
+ /**
+ * Add an interaction class to the ObjectRoot
+ * @param[in] currentIC the interaction class to be added.
+ */
+ void addInteractionClass(Interaction* currentIC);
+
+ /**
+ * The set of object classes.
+ * This is created when parsing the FOM.
+ */
+ ObjectClassSet *ObjectClasses;
+
+ /**
+ * The set of interactions classes found
+ * This is created when parsing the FOM.
+ */
+ InteractionSet *Interactions;
+ /**
+ * The set of registered object instance.
+ */
+ ObjectSet *objects;
private:
- std::vector<RoutingSpace> spaces ;
- SecurityServer *server ;
+
+ std::vector<RoutingSpace> spaces;
+ /**
+ * The associated socket server.
+ */
+ SecurityServer *server;
// Regions
std::list<RTIRegion *> regions ;
@@ -126,4 +173,4 @@
#endif // LIBCERTI_ROOT_OBJECT
-// $Id: RootObject.hh,v 3.29 2008/06/13 10:55:13 erk Exp $
+// $Id: RootObject.hh,v 3.30 2008/10/30 16:01:37 erk Exp $
Index: ObjectClass.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/ObjectClass.cc,v
retrieving revision 3.53
retrieving revision 3.54
diff -u -b -r3.53 -r3.54
--- ObjectClass.cc 18 Sep 2008 14:41:29 -0000 3.53
+++ ObjectClass.cc 30 Oct 2008 16:01:38 -0000 3.54
@@ -19,7 +19,7 @@
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA
//
-// $Id: ObjectClass.cc,v 3.53 2008/09/18 14:41:29 gotthardp Exp $
+// $Id: ObjectClass.cc,v 3.54 2008/10/30 16:01:38 erk Exp $
// ----------------------------------------------------------------------------
#include "Object.hh"
@@ -286,8 +286,8 @@
}
// ----------------------------------------------------------------------------
-ObjectClass::ObjectClass()
- : server(NULL), handle(0), maxSubscriberHandle(0), levelId(PublicLevelID),
+ObjectClass::ObjectClass(std::string name, ObjectClassHandle handle)
+ : Named(name), server(NULL), handle(handle), maxSubscriberHandle(0),
levelId(PublicLevelID),
superClass(0), subClasses(NULL)
{
subClasses = new ObjectClassSet(NULL);
@@ -1732,13 +1732,6 @@
}
// ----------------------------------------------------------------------------
-void
-ObjectClass::setHandle(ObjectClassHandle new_handle)
-{
- handle = new_handle ;
-}
-
-// ----------------------------------------------------------------------------
ObjectClassHandle
ObjectClass::getHandle() const
{
@@ -1826,4 +1819,4 @@
} // namespace certi
-// $Id: ObjectClass.cc,v 3.53 2008/09/18 14:41:29 gotthardp Exp $
+// $Id: ObjectClass.cc,v 3.54 2008/10/30 16:01:38 erk Exp $
Index: ObjectClassAttribute.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/ObjectClassAttribute.cc,v
retrieving revision 3.28
retrieving revision 3.29
diff -u -b -r3.28 -r3.29
--- ObjectClassAttribute.cc 26 Apr 2008 14:59:40 -0000 3.28
+++ ObjectClassAttribute.cc 30 Oct 2008 16:01:38 -0000 3.29
@@ -19,7 +19,7 @@
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA
//
-// $Id: ObjectClassAttribute.cc,v 3.28 2008/04/26 14:59:40 erk Exp $
+// $Id: ObjectClassAttribute.cc,v 3.29 2008/10/30 16:01:38 erk Exp $
// ----------------------------------------------------------------------------
#include "ObjectClassAttribute.hh"
@@ -40,6 +40,11 @@
static pdCDebug D("OBJECTCLASSATTRIBUTE", "(Obj.Cl.Attr) ");
+ObjectClassAttribute::ObjectClassAttribute(const std::string name,
TransportType transport, OrderType order)
+ : order(order), transport(transport) {
+ setName(name);
+
+}
// ----------------------------------------------------------------------------
//! No parameters constructor.
/*! This constructor initialize the attribute with default parameters.
@@ -209,4 +214,4 @@
} // namespace
-// $Id: ObjectClassAttribute.cc,v 3.28 2008/04/26 14:59:40 erk Exp $
+// $Id: ObjectClassAttribute.cc,v 3.29 2008/10/30 16:01:38 erk Exp $
Index: XmlParser.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/XmlParser.cc,v
retrieving revision 3.26
retrieving revision 3.27
diff -u -b -r3.26 -r3.27
--- XmlParser.cc 26 Apr 2008 14:59:40 -0000 3.26
+++ XmlParser.cc 30 Oct 2008 16:01:38 -0000 3.27
@@ -161,56 +161,42 @@
D[pdTrace] << "New Object Class" << endl ;
xmlNodePtr prev = cur ;
- ObjectClass* current = new ObjectClass();
- current->setName(CleanXmlGetProp(cur,ATTRIBUTE_NAME));
- current->setHandle(freeObjectClassHandle++);
-
- if (parent != 0)
- root->ObjectClasses->buildParentRelation(current, parent);
+ /* note how objectHandle counter is incremented */
+ ObjectClass* current = new
ObjectClass(std::string(CleanXmlGetProp(cur,ATTRIBUTE_NAME)),freeObjectClassHandle++);
- /* FIXME EN we must add the class to object root
- * after we did build the parent relation
- * this is awkward but we need it for
- * the "server" link to be OK
- * We need to fix this.
- */
- root->ObjectClasses->addClass(current);
+ root->addObjectClass(current, parent);
cur = cur->xmlChildrenNode ;
while (cur != NULL) {
// Attributes
if ((!xmlStrcmp(cur->name, NODE_ATTRIBUTE))) {
- ObjectClassAttribute *attr = new ObjectClassAttribute();
-
- // Name
- attr->setName(CleanXmlGetProp(cur,ATTRIBUTE_NAME));
-
- // Handle
- attr->setHandle(freeAttributeHandle++);
+ std::string name =
std::string(CleanXmlGetProp(cur,ATTRIBUTE_NAME));
+ TransportType transport;
+ OrderType order;
// Transportation
- xmlChar* transport = xmlGetProp(cur, ATTRIBUTE_TRANSPORTATION);
- if (!xmlStrcmp(transport,VALUE_RELIABLE)) {
- attr->transport = RELIABLE ;
+ xmlChar* xtransport = xmlGetProp(cur, ATTRIBUTE_TRANSPORTATION);
+ if (!xmlStrcmp(xtransport,VALUE_RELIABLE)) {
+ transport = RELIABLE ;
}
else {
- if (!xmlStrcmp(transport,VALUE_BESTEFFORT)) {
- attr->transport = BEST_EFFORT ;
+ if (!xmlStrcmp(xtransport,VALUE_BESTEFFORT)) {
+ transport = BEST_EFFORT ;
}
}
- xmlFree(transport);
+ xmlFree(xtransport);
// Order
- xmlChar* order = xmlGetProp(cur, ATTRIBUTE_ORDER);
- if (!xmlStrcmp(order, VALUE_TSO)) {
- attr->order = TIMESTAMP ;
+ xmlChar* xorder = xmlGetProp(cur, ATTRIBUTE_ORDER);
+ if (!xmlStrcmp(xorder, VALUE_TSO)) {
+ order = TIMESTAMP ;
}
else {
- if (!xmlStrcmp(order, VALUE_RO)) {
- attr->order = RECEIVE ;
+ if (!xmlStrcmp(xorder, VALUE_RO)) {
+ order = RECEIVE ;
}
}
- xmlFree(order);
-
+ xmlFree(xorder);
+ ObjectClassAttribute *attr = new
ObjectClassAttribute(name,transport,order);
// Routing space
char *space = (char *) xmlGetProp(cur, ATTRIBUTE_SPACE);
if (space) {
Index: ObjectClassAttribute.hh
===================================================================
RCS file: /sources/certi/certi/libCERTI/ObjectClassAttribute.hh,v
retrieving revision 3.23
retrieving revision 3.24
diff -u -b -r3.23 -r3.24
--- ObjectClassAttribute.hh 31 Oct 2007 10:30:22 -0000 3.23
+++ ObjectClassAttribute.hh 30 Oct 2008 16:01:38 -0000 3.24
@@ -19,7 +19,7 @@
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA
//
-// $Id: ObjectClassAttribute.hh,v 3.23 2007/10/31 10:30:22 erk Exp $
+// $Id: ObjectClassAttribute.hh,v 3.24 2008/10/30 16:01:38 erk Exp $
// ----------------------------------------------------------------------------
#ifndef CERTI_OBJECT_CLASS_ATTRIBUTE_HH
@@ -48,7 +48,7 @@
class CERTI_EXPORT ObjectClassAttribute : public Subscribable {
public:
- ObjectClassAttribute();
+ ObjectClassAttribute(const std::string name, TransportType transport,
OrderType order);
ObjectClassAttribute(ObjectClassAttribute *source);
virtual ~ObjectClassAttribute();
@@ -79,6 +79,11 @@
SecurityServer *server ;
private:
+ /*
+ * private default constructor with no code
+ * one should not call it.
+ */
+ ObjectClassAttribute();
void deletePublisher(FederateHandle);
AttributeHandle handle ; //!< The attribute handle.
@@ -93,4 +98,4 @@
#endif // CERTI_OBJECT_CLASS_ATTRIBUTE_HH
-// $Id: ObjectClassAttribute.hh,v 3.23 2007/10/31 10:30:22 erk Exp $
+// $Id: ObjectClassAttribute.hh,v 3.24 2008/10/30 16:01:38 erk Exp $
Index: fed.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/fed.cc,v
retrieving revision 3.17
retrieving revision 3.18
diff -u -b -r3.17 -r3.18
--- fed.cc 30 Oct 2008 10:49:29 -0000 3.17
+++ fed.cc 30 Oct 2008 16:01:38 -0000 3.18
@@ -19,7 +19,7 @@
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA
//
-// $Id: fed.cc,v 3.17 2008/10/30 10:49:29 erk Exp $
+// $Id: fed.cc,v 3.18 2008/10/30 16:01:38 erk Exp $
// ----------------------------------------------------------------------------
// CERTI header
@@ -65,7 +65,10 @@
static int indentation = 0 ;
const char *fed_filename ;
+/* this is the current object stack */
static std::list<ObjectClass *> objects ;
+
+/* this is the current interaction stack */
static std::list<Interaction *> interactions ;
static string federate ;
static ObjectClassAttribute *attribute ;
@@ -233,18 +236,22 @@
void
startObject()
{
- ObjectClass *object = new ObjectClass();
+ ObjectClass *parent = NULL;
/* note how objectHandle counter is incremented */
- object->setHandle(objectHandle++);
- object->setName(arg.c_str());
+ ObjectClass *object = new ObjectClass(arg,objectHandle++);
+ /*
+ * Does this object class have a parent [object] class?
+ */
if (objects.size() > 0) {
- ObjectClass *parent = objects.back();
- root_object->ObjectClasses->buildParentRelation(object, parent);
+ parent = objects.back();
}
+ /* add current on object stack */
objects.push_back(object);
- root_object->ObjectClasses->addClass(object);
+
+ /* add new object to the RootObject */
+ root_object->addObjectClass(object,parent);
indent();
if(verbose) {
@@ -270,10 +277,7 @@
void
addAttribute()
{
- attribute = new ObjectClassAttribute();
- attribute->setName(arg.c_str());
- attribute->transport = transport ;
- attribute->order = order ;
+ attribute = new ObjectClassAttribute(arg,transport,order);
objects.back()->addAttribute(attribute);
indent();
@@ -447,4 +451,4 @@
}} // namespaces
-// $Id: fed.cc,v 3.17 2008/10/30 10:49:29 erk Exp $
+// $Id: fed.cc,v 3.18 2008/10/30 16:01:38 erk Exp $
Index: Named.hh
===================================================================
RCS file: /sources/certi/certi/libCERTI/Named.hh,v
retrieving revision 3.6
retrieving revision 3.7
diff -u -b -r3.6 -r3.7
--- Named.hh 30 Oct 2008 10:11:41 -0000 3.6
+++ Named.hh 30 Oct 2008 16:01:38 -0000 3.7
@@ -19,7 +19,7 @@
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA
//
-// $Id: Named.hh,v 3.6 2008/10/30 10:11:41 erk Exp $
+// $Id: Named.hh,v 3.7 2008/10/30 16:01:38 erk Exp $
// ----------------------------------------------------------------------------
#ifndef LIBCERTI_NAMED_HH
@@ -30,7 +30,7 @@
namespace certi {
/**
- * A based class used for CERTI named object.
+ * A base class used for CERTI named object.
* This class should be used to handle HLA named object
* the setName method should enforce HLA rules for naming
* scheme as specified in
@@ -135,4 +135,4 @@
#endif // LIBCERTI_NAMED_HH
-// $Id: Named.hh,v 3.6 2008/10/30 10:11:41 erk Exp $
+// $Id: Named.hh,v 3.7 2008/10/30 16:01:38 erk Exp $
Index: ObjectClass.hh
===================================================================
RCS file: /sources/certi/certi/libCERTI/ObjectClass.hh,v
retrieving revision 3.37
retrieving revision 3.38
diff -u -b -r3.37 -r3.38
--- ObjectClass.hh 18 Sep 2008 14:41:29 -0000 3.37
+++ ObjectClass.hh 30 Oct 2008 16:01:38 -0000 3.38
@@ -19,7 +19,7 @@
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA
//
-// $Id: ObjectClass.hh,v 3.37 2008/09/18 14:41:29 gotthardp Exp $
+// $Id: ObjectClass.hh,v 3.38 2008/10/30 16:01:38 erk Exp $
// ----------------------------------------------------------------------------
#ifndef _CERTI_OBJECT_CLASS_HH
@@ -68,12 +68,20 @@
class CERTI_EXPORT ObjectClass : public Named {
public:
- ObjectClass();
+ /**
+ * Create an objectClass.
+ * @param[in] name the object class name
+ * @param[in] handle the object class handle value
+ */
+ ObjectClass(const std::string name, ObjectClassHandle handle);
+
+ /**
+ * Destroy an object class.
+ */
~ObjectClass();
void display() const ;
- void setHandle(ObjectClassHandle new_handle);
ObjectClassHandle getHandle() const ;
void setSuperclass(ObjectClassHandle h) { superClass = h ; };
@@ -221,6 +229,11 @@
SecurityServer *server ;
private:
+ /*
+ * private default constructor with no code
+ * one should not call it.
+ */
+ ObjectClass();
void sendToFederate(NetworkMessage *msg, FederateHandle theFederate);
void sendToOwners(CDiffusion *diffusionList,
@@ -262,4 +275,4 @@
#endif // _CERTI_OBJECT_CLASS_HH
-// $Id: ObjectClass.hh,v 3.37 2008/09/18 14:41:29 gotthardp Exp $
+// $Id: ObjectClass.hh,v 3.38 2008/10/30 16:01:38 erk Exp $
Index: RootObject.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/RootObject.cc,v
retrieving revision 3.34
retrieving revision 3.35
diff -u -b -r3.34 -r3.35
--- RootObject.cc 12 Jun 2008 07:39:48 -0000 3.34
+++ RootObject.cc 30 Oct 2008 16:01:38 -0000 3.35
@@ -19,7 +19,7 @@
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA
//
-// $Id: RootObject.cc,v 3.34 2008/06/12 07:39:48 erk Exp $
+// $Id: RootObject.cc,v 3.35 2008/10/30 16:01:38 erk Exp $
// ----------------------------------------------------------------------------
#include "Object.hh"
@@ -54,8 +54,7 @@
static pdCDebug D("ROOTOBJECT", "(RootObject) ");
static PrettyDebug G("GENDOC",__FILE__);
-// ----------------------------------------------------------------------------
-//! The SocketServer can be NULL on the RTIA.
+
RootObject::RootObject(SecurityServer *security_server)
: server(security_server), regionHandles(1)
{
@@ -64,8 +63,6 @@
objects = new ObjectSet(server);
}
-// ----------------------------------------------------------------------------
-//! Delete object classes, interactions, objects
RootObject::~RootObject()
{
delete ObjectClasses ;
@@ -344,6 +341,26 @@
}
+void
+RootObject::addObjectClass(ObjectClass* currentOC,ObjectClass* parentOC) {
+ if (NULL != parentOC) {
+ ObjectClasses->buildParentRelation(currentOC, parentOC);
+ }
+ /*
+ * FIXME EN we must add the class to object root
+ * after we did build the parent relation
+ * this is awkward but we need it for
+ * the "server" link to be OK
+ * We need to fix this.
+ */
+ ObjectClasses->addClass(currentOC);
+} /* end of addObjectClass */
+
+void
+RootObject::addInteractionClass(Interaction* currentIC) {
+
+}
+
} // namespace certi
-// $Id: RootObject.cc,v 3.34 2008/06/12 07:39:48 erk Exp $
+// $Id: RootObject.cc,v 3.35 2008/10/30 16:01:38 erk Exp $
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [certi-cvs] certi/libCERTI RootObject.hh ObjectClass.cc Obj...,
certi-cvs <=