From: <sv...@ww...> - 2004-05-10 04:35:51
|
Author: wolverine Date: 2004-05-02 13:11:00 -0700 (Sun, 02 May 2004) New Revision: 938 Modified: trunk/CSP/CSPSim/CHANGES.current trunk/CSP/CSPSim/Include/DynamicObject.h trunk/CSP/CSPSim/Include/Networking.h trunk/CSP/CSPSim/Makefile.in trunk/CSP/CSPSim/Source/Makefile.in trunk/CSP/CSPSim/Source/Networking/NetworkBroadcaster.cpp trunk/CSP/CSPSim/Source/Networking/NetworkListener.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/cCSP.i Log: Changes to Networking to use Common C++ and support Python Modified: trunk/CSP/CSPSim/CHANGES.current =================================================================== --- trunk/CSP/CSPSim/CHANGES.current 2004-05-02 19:58:05 UTC (rev 937) +++ trunk/CSP/CSPSim/CHANGES.current 2004-05-02 20:11:00 UTC (rev 938) @@ -1,5 +1,8 @@ Version 0.4.0 (in progress) =========================== +2004-05-02: wolverine + * Updates to the networking to use commonc++, and export a python module. + 2004-05-02: delta * Corrected a PYTHONPATH instead of PYTHON_PATH in the debug vs project file. Modified: trunk/CSP/CSPSim/Include/DynamicObject.h =================================================================== --- trunk/CSP/CSPSim/Include/DynamicObject.h 2004-05-02 19:58:05 UTC (rev 937) +++ trunk/CSP/CSPSim/Include/DynamicObject.h 2004-05-02 20:11:00 UTC (rev 938) @@ -41,7 +41,7 @@ class Geode; class ParticleSystemUpdater; class ModularEmitter; -} +}; class VirtualBattlefield; Modified: trunk/CSP/CSPSim/Include/Networking.h =================================================================== --- trunk/CSP/CSPSim/Include/Networking.h 2004-05-02 19:58:05 UTC (rev 937) +++ trunk/CSP/CSPSim/Include/Networking.h 2004-05-02 20:11:00 UTC (rev 938) @@ -32,6 +32,8 @@ #include <errno.h> #include <sys/types.h> +#include <cc++/common.h> + #ifndef _MSC_VER #include <sys/socket.h> #include <netinet/in.h> @@ -39,17 +41,22 @@ #endif #include <SimData/Vector3.h> +#include <SimData/String.h> +#include <SimData/Uniform.h> +typedef int SockFd; +typedef simdata::uint16 Port; + class NetworkMessage { protected: - unsigned char * m_Buf; - unsigned char * m_PayloadBuf; - unsigned short m_BufferLen; - unsigned short m_MessageType; - unsigned short m_PayloadLen; + simdata::uint8 * m_Buf; + simdata::uint8 * m_PayloadBuf; + simdata::uint16 m_BufferLen; + simdata::uint16 m_MessageType; + simdata::uint16 m_PayloadLen; bool m_Initialized; static unsigned short magicNumber; @@ -60,16 +67,16 @@ NetworkMessage(); virtual ~NetworkMessage(); - bool initialize(unsigned short type, unsigned short payloadLength); + bool initialize(simdata::uint16 type, simdata::uint16 payloadLength); - unsigned short getType(); + simdata::uint16 getType(); void * getBufferPtr(); void * getPayloadPtr(); - unsigned short getBufferLen(); - unsigned short getPayloadLen(); - unsigned short getHeaderLen(); + simdata::uint16 getBufferLen(); + simdata::uint16 getPayloadLen(); + simdata::uint16 getHeaderLen(); bool isInitialized(); bool isHeaderValid(); @@ -86,46 +93,80 @@ { public: - ObjectUpdateMessage(unsigned int id, simdata::Vector3 position, simdata::Vector3 velocity); + ObjectUpdateMessage(simdata::uint16 id, simdata::Vector3 position, simdata::Vector3 velocity); }; -class NetworkNode +class NetworkAddress { + private: + struct in_addr m_addr; + simdata::String m_name; + simdata::String m_IPAddress; public: - NetworkNode(); + NetworkAddress(); + NetworkAddress(const simdata::String name); + NetworkAddress(NetworkAddress & addr); - char * getNetworkName(); + simdata::String getNetworkName(); + simdata::String getNetworkIP(); + void setByNetworkName(const simdata::String & name); + void setByNetworkIP(const simdata::String & address); }; -class NetworkSocket + +class MessageSocketDuplex { - int m_sockfd; - struct sockaddr_in * m_servaddr; + ost::UDPSocket * m_UDPReceiverSocket; + ost::UDPSocket * m_UDPSenderSocket; + + /* + SockFd m_receiverSockFd; + SockFd m_senderSockFd; + */ + /* + struct sockaddr_in m_receiverSocketAddress; + NetworkAddress * m_receiverAddress; + */ + + ost::InetAddress * m_receiverAddr; + Port m_receiverPort; + public: - NetworkSocket(NetworkNode * node, short port); - int sendto(NetworkMessage * message); + MessageSocketDuplex(); // set the listener port to unbound. + MessageSocketDuplex(ost::InetAddress & Address, Port port); // set the bound address and port. + MessageSocketDuplex(Port port); // set the bound port. + + /* + void bind(NetworkAddress * address, Port port); // binds the listener port. + */ + + int sendto(NetworkMessage & message, ost::InetHostAddress * remoteAddress, Port * remotePort); + int recvfrom(NetworkMessage & message, ost::InetHostAddress * remoteAddress=NULL, Port * remotePort=NULL); + + ost::InetAddress * getReciverAddress() { return m_receiverAddr; } + Port getReceiverPort() { return m_receiverPort; } + }; class NetworkMessenger { + private: + MessageSocketDuplex m_messageSocketDuplex; + + public: + NetworkMessenger(); }; class NetworkBroadcaster { - short m_server_port; - NetworkNode * m_node; - NetworkSocket * m_socket; - public: NetworkBroadcaster(); - - void sendMessage( int NodeID, NetworkMessage * message); }; @@ -135,9 +176,22 @@ public: NetworkListener(); - void receiveAvailableMessages(); }; +class NetworkNode +{ + public: + NetworkNode(); +}; + +class NetworkSocket +{ + + public: + NetworkSocket(); +}; + + #endif Modified: trunk/CSP/CSPSim/Makefile.in =================================================================== --- trunk/CSP/CSPSim/Makefile.in 2004-05-02 19:58:05 UTC (rev 937) +++ trunk/CSP/CSPSim/Makefile.in 2004-05-02 20:11:00 UTC (rev 938) @@ -1,7 +1,7 @@ SUBDIRS = Source Tools/Terrain/dem2dat Tools/Terrain/tile -export DEMETER_RELATIVE = ../../THIRDPARTYLIBS/demeter -export CHUNKLOD_RELATIVE = ../../THIRDPARTYLIBS/CSPChunkLod +export DEMETER_RELATIVE = ../Demeter +export CHUNKLOD_RELATIVE = ../CSPChunkLod export GDEBUGF = -g -Wall export GCFLAGS = -fPIC -O2# -DSWIG_GLOBAL Modified: trunk/CSP/CSPSim/Source/Makefile.in =================================================================== --- trunk/CSP/CSPSim/Source/Makefile.in 2004-05-02 19:58:05 UTC (rev 937) +++ trunk/CSP/CSPSim/Source/Makefile.in 2004-05-02 20:11:00 UTC (rev 938) @@ -12,9 +12,9 @@ CHUNKLOD_LIBRARY = -L$(CHUNKLOD_PREFIX)/lib -losgChunkLod_csp CHUNKLOD_INCLUDE = -I$(CHUNKLOD_PREFIX)/include -LIBS = $(DEMETER_LIBRARY) $(CHUNKLOD_LIBRARY) +LIBS = $(DEMETER_LIBRARY) $(CHUNKLOD_LIBRARY) -lccgnu2 -INCLUDE = -I$(TOPDIR)/Include $(DEMETER_INCLUDE) $(CHUNKLOD_INCLUDE) -I@PYTHON_INCLUDE@ +INCLUDE = -I$(TOPDIR)/Include $(DEMETER_INCLUDE) $(CHUNKLOD_INCLUDE) -I@PYTHON_INCLUDE@ -I/usr/local/include/cc++2 BASEFL = $(GDEBUGF) $(GCFLAGS) $(INCLUDE) @SDL_FLAGS@ @SIGC_FLAGS@ #@CCGNU2_FLAGS@ CFLAGS = $(filter-out -I/usr/local/include, $(BASEFL)) @@ -22,6 +22,17 @@ LDOPTS = -Wl,-z,lazyload $(GLDOPTS) @LIBS@ SWOPTS = $(GSWOPTS) $(INCLUDE) +NETWORK_SOURCES = Networking/NetworkNode.cpp \ + Networking/NetworkMessage.cpp \ + Networking/ObjectUpdateMessage.cpp \ + Networking/NetworkMessenger.cpp \ + Networking/NetworkBroadcaster.cpp \ + Networking/NetworkListener.cpp \ + Networking/NetworkSocket.cpp \ + Networking/MessageSocketDuplex.cpp \ + Networking/NetworkAddress.cpp \ + + SOURCES = \ Systems/AircraftFlightSensors.cpp \ Systems/AircraftInputSystem.cpp \ @@ -34,6 +45,7 @@ BaseDynamics.cpp \ BaseScreen.cpp \ ChunkLodTerrain.cpp \ + ClientNode.cpp \ Collision.cpp \ Colorspace.cpp \ Config.cpp \ @@ -64,12 +76,15 @@ Networking/NetworkBroadcaster.cpp \ Networking/NetworkListener.cpp \ Networking/NetworkSocket.cpp \ + Networking/MessageSocketDuplex.cpp \ + Networking/NetworkAddress.cpp \ NumericalMethod.cpp \ ObjectModel.cpp \ ObjectRangeInfo.cpp \ PhysicsModel.cpp \ ScreenInfo.cpp \ ScreenInfoManager.cpp \ + ServerNode.cpp \ SimObject.cpp \ SimpleConfig.cpp \ Sky.cpp \ @@ -102,6 +117,7 @@ VirtualScene.cpp OBJECTS = $(SOURCES:%.cpp=%.o) +NETWORK_OBJECTS = $(NETWORK_SOURCES:%.cpp=%.o) DEPDIR = .deps MKDEP = $(CXX) -M $(CFLAGS) @@ -165,6 +181,22 @@ cCSP_wrap.o: cCSP_wrap.cpp $(CXX) -c $(SWCXXF) $(@:.o=.cpp) +ClientNode_StandAlone.o : ClientNode.cpp + $(CXX) -c $(CFLAGS) -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 + +ServerNode: $(NETWORK_OBJECTS) ServerNode_StandAlone.o + $(CXX) -L/usr/local/lib -lccgnu2 -ldl -lpthread -o$(BIN)/$@ $(NETWORK_OBJECTS) ServerNode_StandAlone.o + + +test: ClientNode ServerNode + + %.o: %.cpp $(CXX) -c $(CFLAGS) -o $@ $(@:.o=.cpp) @@ -174,5 +206,5 @@ Makefile: Makefile.in cd $(TOPDIR) && ./configure -all: Makefile build-subdirs _cCSP.so #CSPapp +all: Makefile build-subdirs _cCSP.so test #CSPapp Modified: trunk/CSP/CSPSim/Source/Networking/NetworkBroadcaster.cpp =================================================================== --- trunk/CSP/CSPSim/Source/Networking/NetworkBroadcaster.cpp 2004-05-02 19:58:05 UTC (rev 937) +++ trunk/CSP/CSPSim/Source/Networking/NetworkBroadcaster.cpp 2004-05-02 20:11:00 UTC (rev 938) @@ -27,15 +27,6 @@ NetworkBroadcaster::NetworkBroadcaster() { - m_server_port = 2874; - - m_node = new NetworkNode();; - m_socket = new NetworkSocket(m_node, m_server_port); } -void NetworkBroadcaster::sendMessage( int NodeID, NetworkMessage * message) -{ - m_socket->sendto( message ); -} - Modified: trunk/CSP/CSPSim/Source/Networking/NetworkListener.cpp =================================================================== --- trunk/CSP/CSPSim/Source/Networking/NetworkListener.cpp 2004-05-02 19:58:05 UTC (rev 937) +++ trunk/CSP/CSPSim/Source/Networking/NetworkListener.cpp 2004-05-02 20:11:00 UTC (rev 938) @@ -30,8 +30,3 @@ { } - -void NetworkListener::receiveAvailableMessages() -{ - -} Modified: trunk/CSP/CSPSim/Source/Networking/NetworkNode.cpp =================================================================== --- trunk/CSP/CSPSim/Source/Networking/NetworkNode.cpp 2004-05-02 19:58:05 UTC (rev 937) +++ trunk/CSP/CSPSim/Source/Networking/NetworkNode.cpp 2004-05-02 20:11:00 UTC (rev 938) @@ -31,9 +31,4 @@ } -char * NetworkNode::getNetworkName() -{ - //FIXME this needs to be not hardcoded. - return "192.168.2.3"; -} Modified: trunk/CSP/CSPSim/Source/Networking/NetworkSocket.cpp =================================================================== --- trunk/CSP/CSPSim/Source/Networking/NetworkSocket.cpp 2004-05-02 19:58:05 UTC (rev 937) +++ trunk/CSP/CSPSim/Source/Networking/NetworkSocket.cpp 2004-05-02 20:11:00 UTC (rev 938) @@ -27,25 +27,8 @@ #include "Networking.h" -NetworkSocket::NetworkSocket(NetworkNode * node, short port) +NetworkSocket::NetworkSocket() { - m_sockfd = socket(AF_INET, SOCK_DGRAM, 0); - m_servaddr = new sockaddr_in; - struct in_addr * addrptr = &m_servaddr->sin_addr; - - printf("Opening socket to %s on port %d\n", node->getNetworkName(), port); - memset( m_servaddr, 0, sizeof (struct sockaddr_in)); - m_servaddr->sin_family = AF_INET; - m_servaddr->sin_port = htons( port ); - addrptr->s_addr = inet_addr( node->getNetworkName() ); } -int NetworkSocket::sendto(NetworkMessage * message) -{ - printf("Sending Network Packet\n"); -#ifdef _MSC_VER - return ::sendto(m_sockfd, (const char *)message->getBufferPtr(), message->getBufferLen(), 0, (const struct sockaddr *)m_servaddr, sizeof(sockaddr_in)); -#else - return ::sendto(m_sockfd, (const void *)message->getBufferPtr(), message->getBufferLen(), 0, (const struct sockaddr *)m_servaddr, sizeof(sockaddr_in)); -#endif -} + Modified: trunk/CSP/CSPSim/Source/Networking/ObjectUpdateMessage.cpp =================================================================== --- trunk/CSP/CSPSim/Source/Networking/ObjectUpdateMessage.cpp 2004-05-02 19:58:05 UTC (rev 937) +++ trunk/CSP/CSPSim/Source/Networking/ObjectUpdateMessage.cpp 2004-05-02 20:11:00 UTC (rev 938) @@ -24,7 +24,7 @@ #include "Networking.h" -ObjectUpdateMessage::ObjectUpdateMessage(unsigned int id, simdata::Vector3 position, simdata::Vector3 velocity) +ObjectUpdateMessage::ObjectUpdateMessage(simdata::uint16 id, simdata::Vector3 position, simdata::Vector3 velocity) { // reserve space to hold 6 doubles. double num; Modified: trunk/CSP/CSPSim/Source/cCSP.i =================================================================== --- trunk/CSP/CSPSim/Source/cCSP.i 2004-05-02 19:58:05 UTC (rev 937) +++ trunk/CSP/CSPSim/Source/cCSP.i 2004-05-02 20:11:00 UTC (rev 938) @@ -40,6 +40,8 @@ //%include "SimpleConfig.i" %include "Config.i" %include "Log.i" +%include "ClientNode.i" +%include "ServerNode.i" /* %include "SimObject.i" |