From: <sv...@ww...> - 2004-06-12 20:52:43
|
Author: wolverine Date: 2004-06-12 13:52:36 -0700 (Sat, 12 Jun 2004) New Revision: 1023 Modified: trunk/CSP/CSPSim/Source/ClientNode.cpp trunk/CSP/CSPSim/Source/Networking/EchoMessageHandler.cpp trunk/CSP/CSPSim/Source/Networking/NetworkMessenger.cpp trunk/CSP/CSPSim/Source/Networking/PrintMessageHandler.cpp trunk/CSP/CSPSim/Source/ServerNode.cpp Log: Added a NetworkMessenger parameter to the process method of NetworkMessageHandler Modified: trunk/CSP/CSPSim/Source/ClientNode.cpp =================================================================== --- trunk/CSP/CSPSim/Source/ClientNode.cpp 2004-06-12 20:52:25 UTC (rev 1022) +++ trunk/CSP/CSPSim/Source/ClientNode.cpp 2004-06-12 20:52:36 UTC (rev 1023) @@ -60,6 +60,9 @@ NetworkNode * remoteNode = new NetworkNode(1, remoteHost.c_str(), remotePort ); NetworkNode * localNode = new NetworkNode(1, localHost.c_str(), localPort); NetworkMessenger * networkMessenger = new NetworkMessenger(localNode); + PrintMessageHandler * printMessageHandler = new PrintMessageHandler(); + printMessageHandler->setFrequency(1); + networkMessenger->registerReceiveHandler(printMessageHandler); unsigned short messageType = 2; unsigned short payloadLen = sizeof(int) + sizeof(double) + 3*sizeof(simdata::Vector3) + @@ -116,8 +119,12 @@ ptrPayload->dump(); networkMessenger->queueMessage(remoteNode, message); - networkMessenger->sendQueuedMessages(); + while(1) + { + networkMessenger->sendQueuedMessages(); + networkMessenger->receiveMessages(); + } return 0; } Modified: trunk/CSP/CSPSim/Source/Networking/EchoMessageHandler.cpp =================================================================== --- trunk/CSP/CSPSim/Source/Networking/EchoMessageHandler.cpp 2004-06-12 20:52:25 UTC (rev 1022) +++ trunk/CSP/CSPSim/Source/Networking/EchoMessageHandler.cpp 2004-06-12 20:52:36 UTC (rev 1023) @@ -29,9 +29,20 @@ #include "Networking.h" -void EchoMessageHandler::process(NetworkMessage * message) +void EchoMessageHandler::process(NetworkMessage * message, NetworkMessenger * messenger) { + NetworkNode * originatorNode = message->getOriginatorNode(); + + // must make a copy of the message since the buffer in the parameter will be returned + // to the pool after this function exists. + NetworkMessage * messageCopy = messenger->allocMessageBuffer(); + memcpy( (void*)messageCopy, (void*)message, 512); + + MessageHeader * header = (MessageHeader*)messageCopy; + ObjectUpdateMessagePayload * ptrPayload = (ObjectUpdateMessagePayload*)messageCopy->getPayloadPtr(); + + messenger->queueMessage(originatorNode, messageCopy); } Modified: trunk/CSP/CSPSim/Source/Networking/NetworkMessenger.cpp =================================================================== --- trunk/CSP/CSPSim/Source/Networking/NetworkMessenger.cpp 2004-06-12 20:52:25 UTC (rev 1022) +++ trunk/CSP/CSPSim/Source/Networking/NetworkMessenger.cpp 2004-06-12 20:52:36 UTC (rev 1023) @@ -139,7 +139,7 @@ NetworkMessage * networkMessage = receiveMessage(); if ( networkMessage ) { if ( m_ReceiveHandler ) - m_ReceiveHandler->process(networkMessage); + m_ReceiveHandler->process(networkMessage, this); } else return; Modified: trunk/CSP/CSPSim/Source/Networking/PrintMessageHandler.cpp =================================================================== --- trunk/CSP/CSPSim/Source/Networking/PrintMessageHandler.cpp 2004-06-12 20:52:25 UTC (rev 1022) +++ trunk/CSP/CSPSim/Source/Networking/PrintMessageHandler.cpp 2004-06-12 20:52:36 UTC (rev 1023) @@ -30,7 +30,7 @@ #include "Networking.h" #include <stdio.h> -void PrintMessageHandler::process(NetworkMessage * message) +void PrintMessageHandler::process(NetworkMessage * message, NetworkMessenger * messenger) { if (m_count % m_frequency == 0) { Modified: trunk/CSP/CSPSim/Source/ServerNode.cpp =================================================================== --- trunk/CSP/CSPSim/Source/ServerNode.cpp 2004-06-12 20:52:25 UTC (rev 1022) +++ trunk/CSP/CSPSim/Source/ServerNode.cpp 2004-06-12 20:52:36 UTC (rev 1023) @@ -48,9 +48,12 @@ NetworkNode * localNode = new NetworkNode(1, localHost.c_str(), localPort); NetworkMessenger * networkMessenger = new NetworkMessenger(localNode); - PrintMessageHandler * printMessageHandler = new PrintMessageHandler(); - printMessageHandler->setFrequency(1); - networkMessenger->registerReceiveHandler(printMessageHandler); +// PrintMessageHandler * printMessageHandler = new PrintMessageHandler(); +// printMessageHandler->setFrequency(1); +// networkMessenger->registerReceiveHandler(printMessageHandler); + + EchoMessageHandler * echoMessageHandler = new EchoMessageHandler(); + networkMessenger->registerReceiveHandler(echoMessageHandler); //MessageSocketDuplex * socketDuplex = new MessageSocketDuplex(localPort); NetworkMessage * message=NULL; @@ -60,7 +63,7 @@ networkMessenger->receiveMessages(); networkMessenger->sendQueuedMessages(); #ifndef WIN32 - ::sleep(1); + // ::sleep(1); #endif } |