本文将以CERTI中的RTIG对某联邦成员发出的设定其自身的时间管理机制为Regulating类型的请求的处理过程为例,详细说明RTIG的整个处理过程,而对于其他的请求的处理过程则与本例极为相似,不再赘述。
在CERTI中,联邦成员federate与其对应的RTIA一般位于同一主机上,因此federate与RTIA之间一般通过进程间通信进行消息的传递和请求的发出和接收;而RTIA和RTIG一般部署在不同的主机上,它们之间进行消息的传递时,一般通过网络通信实现。因此,CERTI为此专门设计了供RTIA和RTIG之间网络通信使用的消息类NetworkMessage,而NetworkMessage是一个抽象类,它有许多的派生类,每个派生类代表了一种具体类型的消息。
在本文中,RTIA发出的设定其时间管理机制为Regulating的消息类为NM_Set_Time_Regulating,而RTIG接收该消息并将其转入相应的消息处理模块的过程为:
(1)RTIA向RTIG的socketServer的TCP监听端口或者UDP监听端口发送一个类型为NM_Set_Time_Regulating的消息实例;
(2)RITG进程中的myRTIG.execute()线程负责持续监听TCP端口和UDP端口;
(3)当检测到有消息被发送到TCP或者UDP端口时,利用语句link = socketServer.getActiveSocket(&fd)获取接收到消息的socket(也即是语句中的link);
(4)利用processIncomingMessage(link)中的msg = NM_Factory: