00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 00013 00014 #include "NativeFeatureIncludes.h" 00015 #if _RAKNET_SUPPORT_UDPProxyServer==1 00016 00017 #ifndef __UDP_PROXY_SERVER_H 00018 #define __UDP_PROXY_SERVER_H 00019 00020 #include "Export.h" 00021 #include "DS_Multilist.h" 00022 #include "RakNetTypes.h" 00023 #include "PluginInterface2.h" 00024 #include "UDPForwarder.h" 00025 #include "RakString.h" 00026 00027 namespace RakNet 00028 { 00029 class UDPProxyServer; 00030 00033 struct UDPProxyServerResultHandler 00034 { 00035 UDPProxyServerResultHandler() {} 00036 virtual ~UDPProxyServerResultHandler() {} 00037 00041 virtual void OnLoginSuccess(RakNet::RakString usedPassword, RakNet::UDPProxyServer *proxyServerPlugin)=0; 00042 00047 virtual void OnAlreadyLoggedIn(RakNet::RakString usedPassword, RakNet::UDPProxyServer *proxyServerPlugin)=0; 00048 00052 virtual void OnNoPasswordSet(RakNet::RakString usedPassword, RakNet::UDPProxyServer *proxyServerPlugin)=0; 00053 00057 virtual void OnWrongPassword(RakNet::RakString usedPassword, RakNet::UDPProxyServer *proxyServerPlugin)=0; 00058 }; 00059 00065 class RAK_DLL_EXPORT UDPProxyServer : public PluginInterface2 00066 { 00067 public: 00068 UDPProxyServer(); 00069 ~UDPProxyServer(); 00070 00074 void SetResultHandler(UDPProxyServerResultHandler *rh); 00075 00080 bool LoginToCoordinator(RakNet::RakString password, SystemAddress coordinatorAddress); 00081 00085 UDPForwarder udpForwarder; 00086 00087 virtual void OnAttach(void); 00088 virtual void OnDetach(void); 00089 00091 virtual void Update(void); 00092 virtual PluginReceiveResult OnReceive(Packet *packet); 00093 virtual void OnClosedConnection(SystemAddress systemAddress, RakNetGUID rakNetGUID, PI2_LostConnectionReason lostConnectionReason ); 00094 virtual void OnRakPeerStartup(void); 00095 virtual void OnRakPeerShutdown(void); 00096 00097 protected: 00098 void OnForwardingRequestFromCoordinatorToServer(Packet *packet); 00099 00100 DataStructures::Multilist<ML_ORDERED_LIST, SystemAddress> loggingInCoordinators; 00101 DataStructures::Multilist<ML_ORDERED_LIST, SystemAddress> loggedInCoordinators; 00102 00103 UDPProxyServerResultHandler *resultHandler; 00104 00105 }; 00106 00107 } // End namespace 00108 00109 #endif 00110 00111 #endif // _RAKNET_SUPPORT_*