certi-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[certi-cvs] certi/scripts GenerateMessages.py CERTI_Network...


From: certi-cvs
Subject: [certi-cvs] certi/scripts GenerateMessages.py CERTI_Network...
Date: Sat, 30 Jan 2010 18:19:42 +0000

CVSROOT:        /sources/certi
Module name:    certi
Changes by:     Eric NOULARD <erk>      10/01/30 18:19:42

Modified files:
        scripts        : GenerateMessages.py CERTI_NetworkMessage.msg 
                         CERTI_Message.msg 

Log message:
        Update Message Spec and C++ generator

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/certi/scripts/GenerateMessages.py?cvsroot=certi&r1=1.24&r2=1.25
http://cvs.savannah.gnu.org/viewcvs/certi/scripts/CERTI_NetworkMessage.msg?cvsroot=certi&r1=1.13&r2=1.14
http://cvs.savannah.gnu.org/viewcvs/certi/scripts/CERTI_Message.msg?cvsroot=certi&r1=1.2&r2=1.3

Patches:
Index: GenerateMessages.py
===================================================================
RCS file: /sources/certi/certi/scripts/GenerateMessages.py,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- GenerateMessages.py 25 Nov 2009 21:07:51 -0000      1.24
+++ GenerateMessages.py 30 Jan 2010 18:19:41 -0000      1.25
@@ -19,11 +19,22 @@
 ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 ## USA
 ##
-## $Id: GenerateMessages.py,v 1.24 2009/11/25 21:07:51 erk Exp $
+## $Id: GenerateMessages.py,v 1.25 2010/01/30 18:19:41 erk Exp $
 ## ----------------------------------------------------------------------------
 
 """
-The CERTI Message Generator
+The CERTI Message Generator.
+CERTI is an HLA RTI (High Level Architecture RunTime Infrastructure)
+which uses in its internal a lot of message based communication.
+Those messages:
+   should be as compact as possible in terms of memory consumption
+   should be easy to implement.
+
+The CERTI developer team did develop a message specification language
+inspired from Google Protocol buffer. CERTI message have several
+specifities which make Google Protocol buffer unusable for CERTI.
+
+
 """
 
 import os
@@ -1305,6 +1316,12 @@
                                                     
     def generateHeader(self,stream,factoryOnly=False):
         # write the usual header protecting MACRO
+       supposedHeaderName=stream.name
+       if supposedHeaderName != "<stdout>":
+          supposedHeaderName=os.path.basename(supposedHeaderName)
+           supposedHeaderName=os.path.splitext(supposedHeaderName)[0]
+          headerProtectMacroName = supposedHeaderName
+       else:
         (headerProtectMacroName,ext) = os.path.splitext(self.AST.name)
         headerProtectMacroName = "%s_HH" % headerProtectMacroName.upper()
         stream.write("#ifndef %s\n"%headerProtectMacroName)
@@ -1352,6 +1369,7 @@
                 stream.write("typedef enum %s {\n" % enum.name)
                 self.indent()
                 first = True
+               lastname = (enum.values[len(enum.values)-1]).name
                 for enumval in enum.values:
                     if first:
                         stream.write(self.getIndent())
@@ -1359,6 +1377,9 @@
                         first=False
                     else:
                         stream.write(self.getIndent())
+                       if (enumval.name==lastname):
+                            stream.write("%s " % enumval.name)             
+                       else:
                         stream.write("%s, " % enumval.name)
                     self.writeComment(stream, enumval)
                 self.unIndent()      
@@ -1418,7 +1439,7 @@
                 # end private
                 
                 self.unIndent()
-                stream.write(self.getIndent() + "}\n")
+                stream.write(self.getIndent() + "};\n")
 
         # Generate Factory (if any)
         # @todo
@@ -1444,7 +1465,7 @@
             self.unIndent()
             #end private
             self.unIndent()
-            stream.write(self.getIndent()+"}\n\n")            
+            stream.write(self.getIndent()+"};\n\n")            
                         
         # may close any open namespaces 
         self.closeNamespaces(stream)
@@ -1567,10 +1588,10 @@
         self.indent()
         stream.write(self.getIndent()+self.commentLineBeginWith+" FIXME This 
is not thread safe\n")
         stream.write(self.getIndent()+"static MessageBuffer msgBuffer;\n")
-        stream.write(self.getIndent()+"NetworkMessage  msgGen;\n")
-        stream.write(self.getIndent()+"NetworkMessage* msg;\n\n")
+        stream.write(self.getIndent()+"%s  msgGen;\n" % receiver[0])
+        stream.write(self.getIndent()+"%s* msg;\n\n" % receiver[0])
         stream.write(self.getIndent()+self.commentLineBeginWith+" receive 
generic message \n")
-        stream.write(self.getIndent()+"msgGen.receive(socket,msgBuffer);\n")
+        stream.write(self.getIndent()+"msgGen.receive(stream,msgBuffer);\n")
         stream.write(self.getIndent()+self.commentLineBeginWith+" create 
specific message from type \n")
         
         stream.write(self.getIndent()+"msg = ");
@@ -1590,6 +1611,13 @@
         # add necessary standard includes
         stream.write("#include <vector>\n")
         stream.write("#include <string>\n")
+
+       # [Try to] add corresponding header include
+       supposedHeaderName=stream.name
+       if supposedHeaderName != "<stdout>":
+          supposedHeaderName=os.path.basename(supposedHeaderName)
+           supposedHeaderName=os.path.splitext(supposedHeaderName)[0]
+       stream.write("#include \""+supposedHeaderName+".hh\"\n")
         # Generate namespace for specified package package 
         # we may have nested namespace
         self.openNamespaces(stream)

Index: CERTI_NetworkMessage.msg
===================================================================
RCS file: /sources/certi/certi/scripts/CERTI_NetworkMessage.msg,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14

Index: CERTI_Message.msg
===================================================================
RCS file: /sources/certi/certi/scripts/CERTI_Message.msg,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- CERTI_Message.msg   30 Jan 2010 15:24:44 -0000      1.2
+++ CERTI_Message.msg   30 Jan 2010 18:19:42 -0000      1.3
@@ -49,21 +49,168 @@
 
 }
 
+message M_Register_Federation_Synchronization_Point : merge Message {
 
-
-message M_Enable_Time_Regulation {
+}
+message M_Synchronization_Point_Registration_Failed : merge Message {}
+message M_Synchronization_Point_Registration_Succeeded : merge Message {}
+message M_Announce_Synchronization_Point : merge Message {}
+message M_Synchronization_Point_Achieved : merge Message {}
+message M_Federation_Synchronized : merge Message {}
+message M_Request_Federation_Save : merge Message {}
+message M_Initiate_Federate_Save : merge Message {}
+message M_Federate_Save_Begun : merge Message {}
+message M_Federate_Save_Complete : merge Message {}
+message M_Federate_Save_Not_Complete : merge Message {}
+message M_Federation_Saved : merge Message {}
+message M_Federation_Not_Saved : merge Message {}
+message M_Request_Federation_Restore : merge Message {}
+message M_Request_Federation_Restore_Failed : merge Message {}
+message M_Request_Federation_Restore_Succeeded : merge Message {}
+message M_Initiate_Federate_Restore : merge Message {}
+message M_Federate_Restore_Complete : merge Message {}
+message M_Federate_Restore_Not_Complete : merge Message {}
+message M_Federation_Restored : merge Message {}
+message M_Federation_Not_Restored : merge Message {}
+message M_Federation_Restore_Begun : merge Message {}
+
+ // Declaration
+message M_Publish_Object_Class : merge Message {}
+message M_Unpublish_Object_Class : merge Message {}
+message M_Publish_Interaction_Class : merge Message {}
+message M_Unpublish_Interaction_Class : merge Message {}
+message M_Subscribe_Object_Class_Attributes : merge Message {}
+message M_Unsubscribe_Object_Class : merge Message {}
+message M_Subscribe_Interaction_Class : merge Message {}
+message M_Unsubscribe_Interaction_Class : merge Message {}
+message M_Start_Registration_For_Object_Class : merge Message {}
+message M_Stop_Registration_For_Object_Class : merge Message {}
+message M_Turn_Interactions_On : merge Message {}
+message M_Turn_Interactions_Off : merge Message {}
+
+        // Object
+message M_Register_Object_Instance : merge Message {}
+message M_Update_Attribute_Values : merge Message {}
+message M_Discover_Object_Instance : merge Message {}
+message M_Reflect_Attribute_Values : merge Message {}
+message M_Send_Interaction : merge Message {}
+message M_Receive_Interaction : merge Message {}
+message M_Delete_Object_Instance : merge Message {}
+message M_Local_Delete_Object_Instance : merge Message {}
+message M_Remove_Object_Instance : merge Message {}
+message M_Change_Attribute_Transportation_Type : merge Message {}
+message M_Change_Interaction_Transportation_Type : merge Message {}
+message M_Request_Object_Attribute_Value_Update : merge Message {}
+message M_Request_Class_Attribute_Value_Update : merge Message {}
+message M_Provide_Attribute_Value_Update : merge Message {}
+message M_Attributes_In_Scope : merge Message {}
+message M_Attributes_Out_Of_Scope : merge Message {}
+message M_Turn_Updates_On_For_Object_Instance : merge Message {}
+message M_Turn_Updates_Off_For_Object_Instance : merge Message {}
+
+        // Ownership
+message M_Request_Attribute_Ownership_Divestiture : merge Message {}
+message M_Request_Attribute_Ownership_Assumption : merge Message {}
+message M_Negotiated_Attribute_Ownership_Divestiture : merge Message {}
+message M_Attribute_Ownership_Divestiture_Notification : merge Message {}
+message M_Attribute_Ownership_Acquisition_Notification : merge Message {}
+message M_Request_Attribute_Ownership_Acquisition : merge Message {}
+message M_Request_Attribute_Ownership_Release : merge Message {}
+message M_Query_Attribute_Ownership : merge Message {}
+message M_Inform_Attribute_Ownership : merge Message {}
+message M_Is_Attribute_Owned_By_Federate : merge Message {}
+message M_Attribute_Is_Not_Owned : merge Message {}
+message M_Attribute_Owned_By_Rti : merge Message {}
+message M_Attribute_Ownership_Acquisition_If_Available : merge Message {}
+message M_Attribute_Ownership_Unavailable : merge Message {}
+message M_Unconditional_Attribute_Ownership_Divestiture : merge Message {}
+message M_Attribute_Ownership_Acquisition : merge Message {}
+message M_Cancel_Negotiated_Attribute_Ownership_Divestiture : merge Message {}
+message M_Attribute_Ownership_Release_Response : merge Message {}
+message M_Cancel_Attribute_Ownership_Acquisition : merge Message {}
+message M_Confirm_Attribute_Ownership_Acquisition_Cancellation : merge Message 
{}
+
+        // Time
+message M_Change_Attribute_Order_Type : merge Message {}
+message M_Change_Interaction_Order_Type : merge Message {}
+message M_Enable_Time_Regulation : merge Message {
     required double fedTime
     required double lookahead
 }
+message M_Disable_Time_Regulation : merge Message {}
+message M_Enable_Time_Constrained : merge Message {}
+message M_Disable_Time_Constrained : merge Message {}
+message M_Query_Lbts : merge Message {}
+message M_Query_Federate_Time : merge Message {}
+message M_Query_Min_Next_Event_Time : merge Message {}
+message M_Modify_Lookahead : merge Message {}
+message M_Query_Lookahead : merge Message {}
+message M_Retract : merge Message {}
+message M_Request_Retraction : merge Message {}
+message M_Time_Advance_Request : merge Message {}
+message M_Time_Advance_Request_Available : merge Message {}
+message M_Next_Event_Request : merge Message {}
+message M_Next_Event_Request_Available : merge Message {}
+message M_Flush_Queue_Request : merge Message {}
+message M_Time_Advance_Grant : merge Message {}
+message M_Enable_Asynchronous_Delivery : merge Message {}
+message M_Disable_Asynchronous_Delivery : merge Message {}
+message M_Time_Regulation_Enabled : merge Message {}
+message M_Time_Constrained_Enabled : merge Message {}
+
+        // Data Distribution Management
+message M_Ddm_Create_Region : merge Message {}
+message M_Ddm_Modify_Region : merge Message {}
+message M_Ddm_Delete_Region : merge Message {}
+message M_Ddm_Register_Object : merge Message {}
+message M_Ddm_Associate_Region : merge Message {}
+message M_Ddm_Unassociate_Region : merge Message {}
+message M_Ddm_Subscribe_Attributes : merge Message {}
+message M_Ddm_Unsubscribe_Attributes : merge Message {}
+message M_Ddm_Subscribe_Interaction : merge Message {}
+message M_Ddm_Unsubscribe_Interaction : merge Message {}
+message M_Ddm_Request_Update : merge Message {}
+
+        // Support Services
+message M_Get_Object_Class_Handle : merge Message {}
+message M_Get_Object_Class_Name : merge Message {}
+message M_Get_Attribute_Handle : merge Message {}
+message M_Get_Attribute_Name : merge Message {}
+message M_Get_Interaction_Class_Handle : merge Message {}
+message M_Get_Interaction_Class_Name : merge Message {}
+message M_Get_Parameter_Handle : merge Message {}
+message M_Get_Parameter_Name : merge Message {}
+message M_Get_Object_Instance_Handle : merge Message {}
+message M_Get_Object_Instance_Name : merge Message {}
+message M_Get_Space_Handle : merge Message {}
+message M_Get_Space_Name : merge Message {}
+message M_Get_Dimension_Handle : merge Message {}
+message M_Get_Dimension_Name : merge Message {}
+message M_Get_Attribute_Space_Handle : merge Message {}
+message M_Get_Object_Class : merge Message {}
+message M_Get_Interaction_Space_Handle : merge Message {}
+message M_Get_Transportation_Handle : merge Message {}
+message M_Get_Transportation_Name : merge Message {}
+message M_Get_Ordering_Handle : merge Message {}
+message M_Get_Ordering_Name : merge Message {}
+message M_Enable_Class_Relevance_Advisory_Switch : merge Message {}
+message M_Disable_Class_Relevance_Advisory_Switch : merge Message {}
+message M_Enable_Attribute_Relevance_Advisory_Switch : merge Message {}
+message M_Disable_Attribute_Relevance_Advisory_Switch : merge Message {}
+message M_Enable_Attribute_Scope_Advisory_Switch : merge Message {}
+message M_Disable_Attribute_Scope_Advisory_Switch : merge Message {}
+message M_Enable_Interaction_Relevance_Advisory_Switch : merge Message {}
+message M_Disable_Interaction_Relevance_Advisory_Switch : merge Message {}
+message M_Tick_Request : merge Message {}
+message M_Tick_Request_Next : merge Message {}
+message M_Tick_Request_Stop : merge Message {}
 
-message M_Disable_Time_Regulation { }
-
-message M_Enable_Time_Constrained { }
-
-message M_Disable_Time_Constrained { }
+native SocketUN {
+    language CXX [#include "SocketUN.hh"]
+}
 
 native StreamType {
-    language CXX [typedef Socket* StreamType;]
+    language CXX [typedef SocketUN* StreamType;]
 }
 
 native M_Type {
@@ -72,6 +219,6 @@
 
 factory M_Factory {
 
-       factoryCreator  NetworkMessage create(M_Type)
-       factoryReceiver NetworkMessage receive(StreamType)
+       factoryCreator  Message create(M_Type)
+       factoryReceiver Message receive(StreamType)
 }
\ No newline at end of file




reply via email to

[Prev in Thread] Current Thread [Next in Thread]