From: <sv...@ww...> - 2004-05-10 04:35:53
|
Author: wolverine Date: 2004-05-08 05:28:22 -0700 (Sat, 08 May 2004) New Revision: 943 Modified: trunk/CSP/CSPSim/CHANGES.current trunk/CSP/CSPSim/Data/CSPSim.ini trunk/CSP/CSPSim/Include/CSPSim.h trunk/CSP/CSPSim/Include/ClientNode.h trunk/CSP/CSPSim/Include/DynamicObject.h trunk/CSP/CSPSim/Include/Networking.h trunk/CSP/CSPSim/Include/ServerNode.h trunk/CSP/CSPSim/Source/CSPSim.cpp trunk/CSP/CSPSim/Source/ClientNode.cpp trunk/CSP/CSPSim/Source/DynamicObject.cpp trunk/CSP/CSPSim/Source/Makefile.in trunk/CSP/CSPSim/Source/Networking/MessageSocketDuplex.cpp trunk/CSP/CSPSim/Source/Networking/NetworkAddress.cpp trunk/CSP/CSPSim/Source/Networking/NetworkBroadcaster.cpp trunk/CSP/CSPSim/Source/Networking/NetworkListener.cpp trunk/CSP/CSPSim/Source/Networking/NetworkMessage.cpp trunk/CSP/CSPSim/Source/Networking/NetworkMessenger.cpp trunk/CSP/CSPSim/Source/Networking/NetworkNode.cpp trunk/CSP/CSPSim/Source/Networking/NetworkSocket.cpp trunk/CSP/CSPSim/Source/Networking/ObjectUpdateMessage.cpp trunk/CSP/CSPSim/Source/ServerNode.cpp Log: Networking changes Modified: trunk/CSP/CSPSim/CHANGES.current =================================================================== --- trunk/CSP/CSPSim/CHANGES.current 2004-05-02 20:15:08 UTC (rev 942) +++ trunk/CSP/CSPSim/CHANGES.current 2004-05-08 12:28:22 UTC (rev 943) @@ -1,5 +1,9 @@ Version 0.4.0 (in progress) =========================== + +2004-05-08: Wolverine + * more updates to networking. + 2004-05-02: wolverine * Updates to the networking to use commonc++, and export a python module. Modified: trunk/CSP/CSPSim/Data/CSPSim.ini =================================================================== --- trunk/CSP/CSPSim/Data/CSPSim.ini 2004-05-02 20:15:08 UTC (rev 942) +++ trunk/CSP/CSPSim/Data/CSPSim.ini 2004-05-08 12:28:22 UTC (rev 943) @@ -33,11 +33,18 @@ MudBubbleRadius = 40000 AirBubbleRadius = 80000 VisualRadius = 40000 +Date = 2000-01-01 00:00:00.0 -; balkan theater (demeter) +[Networking] +LocalMessagePort = 3150 +LocalMessageHost = 127.0.0.1 +RemoteMessagePort = 3160 +RemoteMessageHost = 127.0.0.1 Theater = sim:theater.balkan Date = 2003-05-15 07:19:30 +; balkan theater (demeter) + ; northern CA theater (chunkedLod) ;Theater = sim:theater.nca ;Date = 2003-05-15 14:19:30 Modified: trunk/CSP/CSPSim/Include/CSPSim.h =================================================================== --- trunk/CSP/CSPSim/Include/CSPSim.h 2004-05-02 20:15:08 UTC (rev 942) +++ trunk/CSP/CSPSim/Include/CSPSim.h 2004-05-08 12:28:22 UTC (rev 943) @@ -59,8 +59,9 @@ class GameScreen; class EventMapIndex; class PyConsole; -class NetworkBroadcaster; +class NetworkMessenger; +class NetworkNode; void fillerup(void *unused, unsigned char *stream, int len); @@ -180,7 +181,8 @@ /** * The network layer */ - NetworkBroadcaster * m_NetworkBroadcaster; + NetworkMessenger * m_NetworkMessenger; + NetworkNode * m_RemoteServerNode; #ifndef CSP_OSG_094 osg::ref_ptr<Producer::RenderSurface> m_RenderSurface; Modified: trunk/CSP/CSPSim/Include/ClientNode.h =================================================================== --- trunk/CSP/CSPSim/Include/ClientNode.h 2004-05-02 20:15:08 UTC (rev 942) +++ trunk/CSP/CSPSim/Include/ClientNode.h 2004-05-08 12:28:22 UTC (rev 943) @@ -1,8 +1,6 @@ #ifndef __CLIENTNODE_H__ #define __CLIENTNODE_H__ -#include "Networking.h" - class ClientNode { Modified: trunk/CSP/CSPSim/Include/DynamicObject.h =================================================================== --- trunk/CSP/CSPSim/Include/DynamicObject.h 2004-05-02 20:15:08 UTC (rev 942) +++ trunk/CSP/CSPSim/Include/DynamicObject.h 2004-05-08 12:28:22 UTC (rev 943) @@ -34,9 +34,8 @@ #include "DataRecorder.h" #include "SystemsModel.h" -#include "Networking.h" +class NetworkMessage; - namespace osgParticle { class Geode; class ParticleSystemUpdater; Modified: trunk/CSP/CSPSim/Include/Networking.h =================================================================== --- trunk/CSP/CSPSim/Include/Networking.h 2004-05-02 20:15:08 UTC (rev 942) +++ trunk/CSP/CSPSim/Include/Networking.h 2004-05-08 12:28:22 UTC (rev 943) @@ -31,15 +31,8 @@ #include <assert.h> #include <errno.h> #include <sys/types.h> +#include <list> -#include <cc++/common.h> - -#ifndef _MSC_VER -#include <sys/socket.h> -#include <netinet/in.h> -#include <arpa/inet.h> -#endif - #include <SimData/Vector3.h> #include <SimData/String.h> #include <SimData/Uniform.h> @@ -98,26 +91,28 @@ }; -class NetworkAddress + +class NetworkNode { - private: - struct in_addr m_addr; - simdata::String m_name; - simdata::String m_IPAddress; + private: + uint32 m_node_id; + ost::InetHostAddress m_addr; + Port m_port; - public: - NetworkAddress(); - NetworkAddress(const simdata::String name); - NetworkAddress(NetworkAddress & addr); + public: + NetworkNode(); + NetworkNode(int node_id, ost::InetHostAddress addr, Port port); + + void setAddress(ost::InetHostAddress addr); + void setPort(Port port); + void setId(int node_id); + + int getId(); + Port getPort(); + ost::InetHostAddress getAddress(); - simdata::String getNetworkName(); - simdata::String getNetworkIP(); - void setByNetworkName(const simdata::String & name); - void setByNetworkIP(const simdata::String & address); - }; - class MessageSocketDuplex { ost::UDPSocket * m_UDPReceiverSocket; @@ -148,19 +143,30 @@ int sendto(NetworkMessage & message, ost::InetHostAddress * remoteAddress, Port * remotePort); int recvfrom(NetworkMessage & message, ost::InetHostAddress * remoteAddress=NULL, Port * remotePort=NULL); + int sendto(NetworkMessage & message, NetworkNode * node); + int recvfrom(NetworkMessage & message, NetworkNode * node); + ost::InetAddress * getReciverAddress() { return m_receiverAddr; } Port getReceiverPort() { return m_receiverPort; } }; + class NetworkMessenger { private: - MessageSocketDuplex m_messageSocketDuplex; + MessageSocketDuplex * m_messageSocketDuplex; + std::list<NetworkMessage*> m_messageList; public: NetworkMessenger(); + NetworkMessenger(Port port); + + void queueMessage(NetworkNode * node, NetworkMessage * message); + void sendMessages(); + void receiveMessages(); + }; class NetworkBroadcaster @@ -179,11 +185,6 @@ }; -class NetworkNode -{ - public: - NetworkNode(); -}; class NetworkSocket { @@ -193,5 +194,25 @@ }; +class NetworkAddress +{ + private: + struct in_addr m_addr; + simdata::String m_name; + simdata::String m_IPAddress; + + public: + NetworkAddress(); + NetworkAddress(const simdata::String name); + NetworkAddress(NetworkAddress & addr); + + simdata::String getNetworkName(); + simdata::String getNetworkIP(); + void setByNetworkName(const simdata::String & name); + void setByNetworkIP(const simdata::String & address); + +}; + + #endif Modified: trunk/CSP/CSPSim/Include/ServerNode.h =================================================================== --- trunk/CSP/CSPSim/Include/ServerNode.h 2004-05-02 20:15:08 UTC (rev 942) +++ trunk/CSP/CSPSim/Include/ServerNode.h 2004-05-08 12:28:22 UTC (rev 943) @@ -1,5 +1,5 @@ -#include "Networking.h" + class ServerNode { Modified: trunk/CSP/CSPSim/Source/CSPSim.cpp =================================================================== --- trunk/CSP/CSPSim/Source/CSPSim.cpp 2004-05-02 20:15:08 UTC (rev 942) +++ trunk/CSP/CSPSim/Source/CSPSim.cpp 2004-05-08 12:28:22 UTC (rev 943) @@ -48,8 +48,10 @@ #include "Theater.h" #include "ConsoleCommands.h" #include "Profile.h" + +#include <cc++/network.h> #include "Networking.h" - + #include <SimData/Types.h> #include <SimData/ExceptionBase.h> #include <SimData/DataArchive.h> @@ -147,7 +149,7 @@ m_Shell = new PyShell(); - m_NetworkBroadcaster = NULL; + m_NetworkMessenger = NULL; } @@ -412,7 +414,9 @@ m_GameScreen->onInit(); // create the networking layer - m_NetworkBroadcaster = new NetworkBroadcaster; + int localMessagePort = g_Config.getInt("Networking", "LocalMessagePort", 10000, true); + CSP_LOG(APP, DEBUG, "init() - Creating Message listener on port: " << localMessagePort); + m_NetworkMessenger = new NetworkMessenger(localMessagePort); #if 0 // set the Main Menu then start the main loop @@ -705,19 +709,21 @@ // call networking layer. // TODO the code below tests the networking section. Later it probably needs to // be moved elsewhere. Currently commenting out so we can move to subversion. -// CSP_LOG(APP, DEBUG, "CSPSim::run... beginning network updates"); + CSP_LOG(APP, DEBUG, "CSPSim::run... beginning network updates"); + + simdata::Ref<DynamicObject> dynamicObject = (simdata::Ref<DynamicObject>)m_ActiveObject; + NetworkMessage * message = dynamicObject->getUpdateMessage(); -// simdata::Ref<DynamicObject> dynamicObject = (simdata::Ref<DynamicObject>)m_ActiveObject; -// NetworkMessage * message = dynamicObject->getUpdateMessage(); + m_NetworkMessenger->queueMessage(m_RemoteServerNode, message); + m_NetworkMessenger->sendMessages(); + m_NetworkMessenger->receiveMessages(); -// m_NetworkBroadcaster->sendMessage(1, message ); - // dynamicObject->putUpdateMessage( message ); -// CSP_LOG(APP, DEBUG, "CSPSim::run... finished network updates"); + CSP_LOG(APP, DEBUG, "CSPSim::run... finished network updates"); // this may not be necessary. especially if a memory pool of messages objects is used. -// delete message; +// delete message; } Modified: trunk/CSP/CSPSim/Source/ClientNode.cpp =================================================================== --- trunk/CSP/CSPSim/Source/ClientNode.cpp 2004-05-02 20:15:08 UTC (rev 942) +++ trunk/CSP/CSPSim/Source/ClientNode.cpp 2004-05-08 12:28:22 UTC (rev 943) @@ -1,11 +1,11 @@ -#include "ClientNode.h" -#include <cc++/common.h> +#include <cc++/network.h> #include "Networking.h" #include <stdio.h> #include <stdlib.h> +#include "ClientNode.h" ClientNode::ClientNode() { Modified: trunk/CSP/CSPSim/Source/DynamicObject.cpp =================================================================== --- trunk/CSP/CSPSim/Source/DynamicObject.cpp 2004-05-02 20:15:08 UTC (rev 942) +++ trunk/CSP/CSPSim/Source/DynamicObject.cpp 2004-05-08 12:28:22 UTC (rev 943) @@ -22,7 +22,8 @@ * **/ - +#include <cc++/network.h> +#include "Networking.h" #include <DynamicObject.h> #include <Controller.h> #include <PhysicsModel.h> Modified: trunk/CSP/CSPSim/Source/Makefile.in =================================================================== --- trunk/CSP/CSPSim/Source/Makefile.in 2004-05-02 20:15:08 UTC (rev 942) +++ trunk/CSP/CSPSim/Source/Makefile.in 2004-05-08 12:28:22 UTC (rev 943) @@ -182,13 +182,13 @@ $(CXX) -c $(SWCXXF) $(@:.o=.cpp) ClientNode_StandAlone.o : ClientNode.cpp - $(CXX) -c $(CFLAGS) -DCSP_STANDALONE -o ClientNode_StandAlone.o ClientNode.cpp + $(CXX) -c $(CFLAGS) $(INCLUDE) -DCSP_STANDALONE -o ClientNode_StandAlone.o ClientNode.cpp ClientNode: $(NETWORK_OBJECTS) ClientNode_StandAlone.o $(CXX) -L/usr/local/lib -lccgnu2 -ldl -lpthread -o$(BIN)/$@ $(NETWORK_OBJECTS) ClientNode_StandAlone.o ServerNode_StandAlone.o : ServerNode.cpp - $(CXX) -c $(CFLAGS) -DCSP_STANDALONE -o ServerNode_StandAlone.o ServerNode.cpp + $(CXX) -c $(CFLAGS) $(INCLUDE) -DCSP_STANDALONE -o ServerNode_StandAlone.o ServerNode.cpp ServerNode: $(NETWORK_OBJECTS) ServerNode_StandAlone.o $(CXX) -L/usr/local/lib -lccgnu2 -ldl -lpthread -o$(BIN)/$@ $(NETWORK_OBJECTS) ServerNode_StandAlone.o Modified: trunk/CSP/CSPSim/Source/Networking/MessageSocketDuplex.cpp =================================================================== --- trunk/CSP/CSPSim/Source/Networking/MessageSocketDuplex.cpp 2004-05-02 20:15:08 UTC (rev 942) +++ trunk/CSP/CSPSim/Source/Networking/MessageSocketDuplex.cpp 2004-05-08 12:28:22 UTC (rev 943) @@ -21,11 +21,9 @@ * @file NetworkSocket.cpp: * @author Scott Flicker (Wolverine) */ -#if _MSC_VER -#include <WinSock2.h> -#endif - +#include <cc++/network.h> #include "Networking.h" +#include "Log.h" MessageSocketDuplex::MessageSocketDuplex() { @@ -81,7 +79,7 @@ int MessageSocketDuplex::sendto(NetworkMessage & message, ost::InetHostAddress * remoteAddress, Port * remotePort) { - printf("Sending Network Packet\n"); +// CSP_LOG(NETWORK, DEBUG, "Sending Network Packet"); m_UDPSenderSocket->setPeer(*remoteAddress, *remotePort); @@ -111,7 +109,7 @@ int MessageSocketDuplex::recvfrom(NetworkMessage & message, ost::InetHostAddress * remoteAddress, Port * remotePort) { - printf("Receving Network Packet\n"); +// CSP_LOG(NETWORK, DEBUG, "Receving Network Packet"); if (m_UDPReceiverSocket->isPending(ost::Socket::pendingInput, 0)) { @@ -154,3 +152,25 @@ } + +int MessageSocketDuplex::sendto(NetworkMessage & message, NetworkNode * node) +{ + +// CSP_LOG(NETWORK, DEBUG, "Sending Network Packet"); + ost::InetHostAddress address = node->getAddress(); + Port port = node->getPort(); + return sendto(message, &address, &port); +// return 0; +} + + +int MessageSocketDuplex::recvfrom(NetworkMessage & message, NetworkNode * node) +{ +// CSP_LOG(NETWORK, DEBUG, "Receiving Network Packet"); + ost::InetHostAddress address = node->getAddress(); + Port port = node->getPort(); + return recvfrom(message, &address, &port); +// return 0; +} + + Modified: trunk/CSP/CSPSim/Source/Networking/NetworkAddress.cpp =================================================================== --- trunk/CSP/CSPSim/Source/Networking/NetworkAddress.cpp 2004-05-02 20:15:08 UTC (rev 942) +++ trunk/CSP/CSPSim/Source/Networking/NetworkAddress.cpp 2004-05-08 12:28:22 UTC (rev 943) @@ -23,6 +23,8 @@ * * This class encapsulates a node in the simulation network. */ + +#include <cc++/network.h> #include "Networking.h" NetworkAddress::NetworkAddress() Modified: trunk/CSP/CSPSim/Source/Networking/NetworkBroadcaster.cpp =================================================================== --- trunk/CSP/CSPSim/Source/Networking/NetworkBroadcaster.cpp 2004-05-02 20:15:08 UTC (rev 942) +++ trunk/CSP/CSPSim/Source/Networking/NetworkBroadcaster.cpp 2004-05-08 12:28:22 UTC (rev 943) @@ -23,6 +23,7 @@ * * Broadcasts network messages */ +#include <cc++/network.h> #include "Networking.h" NetworkBroadcaster::NetworkBroadcaster() Modified: trunk/CSP/CSPSim/Source/Networking/NetworkListener.cpp =================================================================== --- trunk/CSP/CSPSim/Source/Networking/NetworkListener.cpp 2004-05-02 20:15:08 UTC (rev 942) +++ trunk/CSP/CSPSim/Source/Networking/NetworkListener.cpp 2004-05-08 12:28:22 UTC (rev 943) @@ -23,6 +23,8 @@ * * Listens for network messages */ + +#include <cc++/network.h> #include "Networking.h" Modified: trunk/CSP/CSPSim/Source/Networking/NetworkMessage.cpp =================================================================== --- trunk/CSP/CSPSim/Source/Networking/NetworkMessage.cpp 2004-05-02 20:15:08 UTC (rev 942) +++ trunk/CSP/CSPSim/Source/Networking/NetworkMessage.cpp 2004-05-08 12:28:22 UTC (rev 943) @@ -25,6 +25,7 @@ * Currently contains for header and buffer routines */ +#include <cc++/network.h> #include "Networking.h" unsigned short NetworkMessage::magicNumber = 0xFCCF; @@ -51,6 +52,7 @@ } + /** * ~NetworkMessage * Modified: trunk/CSP/CSPSim/Source/Networking/NetworkMessenger.cpp =================================================================== --- trunk/CSP/CSPSim/Source/Networking/NetworkMessenger.cpp 2004-05-02 20:15:08 UTC (rev 942) +++ trunk/CSP/CSPSim/Source/Networking/NetworkMessenger.cpp 2004-05-08 12:28:22 UTC (rev 943) @@ -21,10 +21,31 @@ * @file NetworkMessenger.cpp: * @author Scott Flicker (Wolverine) */ + +#include <cc++/network.h> #include "Networking.h" NetworkMessenger::NetworkMessenger() { - + m_messageSocketDuplex = new MessageSocketDuplex(); } +NetworkMessenger::NetworkMessenger(Port port) +{ + m_messageSocketDuplex = new MessageSocketDuplex(port); +} + +void NetworkMessenger::queueMessage(NetworkNode * node, NetworkMessage * message) +{ + m_messageList.push_back(message); +} + +void NetworkMessenger::sendMessages() +{ + +} + +void NetworkMessenger::receiveMessages() +{ + +} Modified: trunk/CSP/CSPSim/Source/Networking/NetworkNode.cpp =================================================================== --- trunk/CSP/CSPSim/Source/Networking/NetworkNode.cpp 2004-05-02 20:15:08 UTC (rev 942) +++ trunk/CSP/CSPSim/Source/Networking/NetworkNode.cpp 2004-05-08 12:28:22 UTC (rev 943) @@ -23,12 +23,51 @@ * * This class encapsulates a node in the simulation network. */ + +#include <cc++/network.h> #include "Networking.h" NetworkNode::NetworkNode() { - + m_node_id = 0; + m_addr = "0.0.0.0"; + m_port = 0; } +NetworkNode::NetworkNode(int node_id, ost::InetHostAddress addr, Port port) +{ + m_node_id = node_id; + m_addr = addr; + m_port = port; +} +void NetworkNode::setAddress(ost::InetHostAddress addr) +{ + m_addr = addr; +} +void NetworkNode::setPort(Port port) +{ + m_port = port; +} + +void NetworkNode::setId(int node_id) +{ + m_node_id = node_id; +} + +ost::InetHostAddress NetworkNode::getAddress() +{ + return m_addr; +} + +Port NetworkNode::getPort() +{ + return m_port; +} + +int NetworkNode::getId() +{ + return m_node_id; +} + Modified: trunk/CSP/CSPSim/Source/Networking/NetworkSocket.cpp =================================================================== --- trunk/CSP/CSPSim/Source/Networking/NetworkSocket.cpp 2004-05-02 20:15:08 UTC (rev 942) +++ trunk/CSP/CSPSim/Source/Networking/NetworkSocket.cpp 2004-05-08 12:28:22 UTC (rev 943) @@ -21,10 +21,8 @@ * @file NetworkSocket.cpp: * @author Scott Flicker (Wolverine) */ -#if _MSC_VER -#include <WinSock2.h> -#endif +#include <cc++/network.h> #include "Networking.h" NetworkSocket::NetworkSocket() Modified: trunk/CSP/CSPSim/Source/Networking/ObjectUpdateMessage.cpp =================================================================== --- trunk/CSP/CSPSim/Source/Networking/ObjectUpdateMessage.cpp 2004-05-02 20:15:08 UTC (rev 942) +++ trunk/CSP/CSPSim/Source/Networking/ObjectUpdateMessage.cpp 2004-05-08 12:28:22 UTC (rev 943) @@ -22,6 +22,7 @@ * @author Scott Flicker (Wolverine) */ +#include <cc++/network.h> #include "Networking.h" ObjectUpdateMessage::ObjectUpdateMessage(simdata::uint16 id, simdata::Vector3 position, simdata::Vector3 velocity) Modified: trunk/CSP/CSPSim/Source/ServerNode.cpp =================================================================== --- trunk/CSP/CSPSim/Source/ServerNode.cpp 2004-05-02 20:15:08 UTC (rev 942) +++ trunk/CSP/CSPSim/Source/ServerNode.cpp 2004-05-08 12:28:22 UTC (rev 943) @@ -1,3 +1,4 @@ +#include <cc++/network.h> #include "Networking.h" #include "ServerNode.h" #include <stdio.h> |