From: <sv...@ww...> - 2004-06-28 00:52:12
|
Author: wolverine Date: 2004-06-27 17:52:05 -0700 (Sun, 27 Jun 2004) New Revision: 1084 Added: trunk/CSP/CSPSim/Include/EchoServerNode.h trunk/CSP/CSPSim/Include/EchoServerNode.i trunk/CSP/CSPSim/Include/RedirectServerNode.h trunk/CSP/CSPSim/Include/RedirectServerNode.i Removed: trunk/CSP/CSPSim/Include/ServerNode.h trunk/CSP/CSPSim/Include/ServerNode.i Modified: trunk/CSP/CSPSim/Include/Networking.h Log: new networking changes Browse at: https://www.zerobar.net/viewcvs/viewcvs.cgi?view=rev&rev=1084 Copied: trunk/CSP/CSPSim/Include/EchoServerNode.h (from rev 1065, trunk/CSP/CSPSim/Include/ServerNode.h) =================================================================== --- trunk/CSP/CSPSim/Include/ServerNode.h 2004-06-23 16:47:53 UTC (rev 1065) +++ trunk/CSP/CSPSim/Include/EchoServerNode.h 2004-06-28 00:52:05 UTC (rev 1084) @@ -0,0 +1,10 @@ + + +class EchoServerNode +{ + + public: + EchoServerNode(); + int run(); + +}; Copied: trunk/CSP/CSPSim/Include/EchoServerNode.i (from rev 1065, trunk/CSP/CSPSim/Include/ServerNode.i) =================================================================== --- trunk/CSP/CSPSim/Include/ServerNode.i 2004-06-23 16:47:53 UTC (rev 1065) +++ trunk/CSP/CSPSim/Include/EchoServerNode.i 2004-06-28 00:52:05 UTC (rev 1084) @@ -0,0 +1,7 @@ +%module EchoServerNode +%{ +#include "EchoServerNode.h" +%} + +%include "EchoServerNode.h" + Modified: trunk/CSP/CSPSim/Include/Networking.h =================================================================== --- trunk/CSP/CSPSim/Include/Networking.h 2004-06-28 00:43:19 UTC (rev 1083) +++ trunk/CSP/CSPSim/Include/Networking.h 2004-06-28 00:52:05 UTC (rev 1084) @@ -34,6 +34,7 @@ #include <sys/types.h> #include <list> #include <map> +#include <set> #include <SimData/Vector3.h> #include <SimData/String.h> @@ -144,7 +145,6 @@ Port getOriginatorPort(); NetworkNode * getOriginatorNode(); - bool isInitialized(); bool isHeaderValid(); }; @@ -219,20 +219,23 @@ private: ost::InetHostAddress m_addr; Port m_port; - uint16 m_node_id; + //uint16 m_node_id; public: NetworkNode(); - NetworkNode(int node_id, ost::InetHostAddress addr, Port port); - NetworkNode(int node_id, simdata::uint32 addr, Port port); - NetworkNode(int node_id, const char * hostname, Port port); +// NetworkNode(int node_id, ost::InetHostAddress addr, Port port); +// NetworkNode(int node_id, simdata::uint32 addr, Port port); +// NetworkNode(int node_id, const char * hostname, Port port); + NetworkNode(ost::InetHostAddress addr, Port port); + NetworkNode(simdata::uint32 addr, Port port); + NetworkNode(const char * hostname, Port port); void setAddress(ost::InetHostAddress addr); void setPort(Port port); - void setId(short node_id); +// void setId(short node_id); - short getId(); +// short getId(); Port getPort(); ost::InetHostAddress getAddress(); const char * getHostname(); @@ -249,34 +252,97 @@ class DynamicObject; -class RemoteObjectWrapper +//class RemoteObjectWrapper +//{ +// public: +// RemoteObjectWrapper(simdata::Ref<DynamicObject> & object) { m_Object = object; } +// NetworkNode * getObjectHost() { return m_Host; } +// simdata::Ref<DynamicObject> getWrappedObject() { return m_Object; } +// private: +// simdata::Ref<DynamicObject> m_Object; +// NetworkNode * m_Host; +// +// +//}; + +class RemoteObjectKey { + protected: + int m_ipaddr; + short m_port; + int m_id; + public: - RemoteObjectWrapper(simdata::Ref<DynamicObject> & object) { m_Object = object; } - NetworkNode * getObjectHost() { return m_Host; } - simdata::Ref<DynamicObject> getWrappedObject() { return m_Object; } - private: - simdata::Ref<DynamicObject> m_Object; - NetworkNode * m_Host; - + RemoteObjectKey() { m_ipaddr = 0; m_port = 0; m_id = 0; } + + RemoteObjectKey(const RemoteObjectKey & key) + { m_ipaddr = key.m_ipaddr; m_port = key.m_port; m_id = key.m_id; } + + RemoteObjectKey(int ipaddr, short port, int id) + { m_ipaddr = ipaddr; m_port = port; m_id = id; } + const RemoteObjectKey & operator=(const RemoteObjectKey & key) + { + m_ipaddr = key.m_ipaddr; m_port = key.m_port; m_id = key.m_id; + return *this; + } + + + bool operator==(const RemoteObjectKey & key) + { return ( (m_ipaddr == key.m_ipaddr) && (m_port == key.m_port) && (m_id == key.m_id) ); } + + bool operator!=(const RemoteObjectKey & key) + { return ( (m_ipaddr != key.m_ipaddr) || (m_port != key.m_port) || (m_id == key.m_id) ); } + + friend bool operator<( const RemoteObjectKey & lhs, const RemoteObjectKey & rhs); + + // bool operator>( RemoteObjectKey & key) +// { +// if ( m_ipaddr != key.m_ipaddr ) +// return ( m_ipaddr > key.m_ipaddr); +// if ( m_port != key.m_port ) +// return ( m_port > key.m_port ); +// return ( m_id > key.m_id ); +// } +// bool operator<=( RemoteObjectKey & key) +// { +// if ( m_ipaddr != key.m_ipaddr ) +// return ( m_ipaddr <= key.m_ipaddr); +// if ( m_port != key.m_port ) +// return ( m_port <= key.m_port ); +// return ( m_id <= key.m_id ); +// } +// bool operator>=( RemoteObjectKey & key) +// { +// if ( m_ipaddr != key.m_ipaddr ) +// return ( m_ipaddr >= key.m_ipaddr); +// if ( m_port != key.m_port ) +// return ( m_port >= key.m_port ); +// return ( m_id >= key.m_id ); +// } + }; +bool operator<( const RemoteObjectKey & lhs, const RemoteObjectKey & rhs); + class RemoteObjectTable { public: - RemoteObjectWrapper * getRemoteObject(int ipaddr, short port, int id) + simdata::Ref<DynamicObject> getRemoteObject(RemoteObjectKey key) { - return m_table[ipaddr][port][id]; + printf("RemoteObjectTable::getRemoteObject()\n"); + return m_table[key]; } - void putRemoteObject(int ipaddr, short port, int id, RemoteObjectWrapper * object) + void putRemoteObject(RemoteObjectKey key, simdata::Ref<DynamicObject> object) { - m_table[ipaddr][port][id] = object; + printf("RemoteObjectTable::putRemoteObject() - entering\n"); + m_table[key] = object; + printf("RemoteObjectTable::putRemoteObject() - exiting\n"); } private: - std::map< int , std::map < short, std::map < short, RemoteObjectWrapper * > > > m_table; + std::map< RemoteObjectKey, simdata::Ref<DynamicObject> > m_table; }; @@ -296,7 +362,7 @@ int m_messageReceiveArrayGrow; NetworkNode * m_originatorNode; std::list<NetworkMessage*> m_messagePool; - std::list<NetworkMessageHandler *> m_ReceiveHandlerList; + std::list<NetworkMessageHandler *> m_MessageHandlerList; ost::UDPSocket * m_UDPReceiverSocket; ost::UDPSocket * m_UDPSenderSocket; @@ -322,7 +388,7 @@ NetworkMessage * allocMessageBuffer(); void freeMessageBuffer(NetworkMessage * message); - void registerReceiveHandler(NetworkMessageHandler * handler); + void registerMessageHandler(NetworkMessageHandler * handler); int sendto(NetworkMessage * message, ost::InetHostAddress * remoteAddress, Port * remotePort); int sendto(NetworkMessage * message, NetworkNode * node); @@ -363,6 +429,24 @@ }; +class RedirectMessageHandler : public NetworkMessageHandler +{ + protected: + NetworkMessenger * m_messenger; + std::set<NetworkNode *> m_ClientNodeList; + public: + RedirectMessageHandler(); + virtual void process(NetworkMessage * message); + virtual ~RedirectMessageHandler(); + + + virtual void setMessenger(NetworkMessenger * messenger) + { m_messenger = messenger; } + virtual NetworkMessenger * getMessenger() + { return m_messenger; } + +}; + class PrintMessageHandler : public NetworkMessageHandler { protected: @@ -411,6 +495,21 @@ }; +class CallHandler +{ + private: + NetworkMessage* m_NetworkMessage; + public: + CallHandler(NetworkMessage* network_message): + m_NetworkMessage(network_message) { } + void operator()(NetworkMessageHandler* network_message_handler) + { + network_message_handler->process(m_NetworkMessage); + } +}; + + +// NetworkMessage * message = (NetworkMessage*)(new simdata::uint8[512]); // not currently using these below class NetworkBroadcaster Added: trunk/CSP/CSPSim/Include/RedirectServerNode.h =================================================================== --- trunk/CSP/CSPSim/Include/RedirectServerNode.h 2004-06-28 00:43:19 UTC (rev 1083) +++ trunk/CSP/CSPSim/Include/RedirectServerNode.h 2004-06-28 00:52:05 UTC (rev 1084) @@ -0,0 +1,10 @@ + + +class RedirectServerNode +{ + + public: + RedirectServerNode(); + int run(); + +}; Added: trunk/CSP/CSPSim/Include/RedirectServerNode.i =================================================================== --- trunk/CSP/CSPSim/Include/RedirectServerNode.i 2004-06-28 00:43:19 UTC (rev 1083) +++ trunk/CSP/CSPSim/Include/RedirectServerNode.i 2004-06-28 00:52:05 UTC (rev 1084) @@ -0,0 +1,7 @@ +%module RedirectServerNode +%{ +#include "RedirectServerNode.h" +%} + +%include "RedirectServerNode.h" + Deleted: trunk/CSP/CSPSim/Include/ServerNode.h =================================================================== --- trunk/CSP/CSPSim/Include/ServerNode.h 2004-06-28 00:43:19 UTC (rev 1083) +++ trunk/CSP/CSPSim/Include/ServerNode.h 2004-06-28 00:52:05 UTC (rev 1084) @@ -1,10 +0,0 @@ - - -class ServerNode -{ - - public: - ServerNode(); - int run(); - -}; Deleted: trunk/CSP/CSPSim/Include/ServerNode.i =================================================================== --- trunk/CSP/CSPSim/Include/ServerNode.i 2004-06-28 00:43:19 UTC (rev 1083) +++ trunk/CSP/CSPSim/Include/ServerNode.i 2004-06-28 00:52:05 UTC (rev 1084) @@ -1,7 +0,0 @@ -%module ServerNode -%{ -#include "ServerNode.h" -%} - -%include "ServerNode.h" - |