1 // 2 // This file is part of the aMule Project. 3 // 4 // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) 5 // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) 6 // 7 // Any parts of this program derived from the xMule, lMule or eMule project, 8 // or contributed by third-party developers are copyrighted by their 9 // respective authors. 10 // 11 // This program is free software; you can redistribute it and/or modify 12 // it under the terms of the GNU General Public License as published by 13 // the Free Software Foundation; either version 2 of the License, or 14 // (at your option) any later version. 15 // 16 // This program is distributed in the hope that it will be useful, 17 // but WITHOUT ANY WARRANTY; without even the implied warranty of 18 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 // GNU General Public License for more details. 20 // 21 // You should have received a copy of the GNU General Public License 22 // along with this program; if not, write to the Free Software 23 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 24 // 25 26 // 27 // Client to Server communication 28 // 29 30 #ifndef SERVERSOCKET_H 31 #define SERVERSOCKET_H 32 33 #include "EMSocket.h" // Needed for CEMSocket 34 #include "ServerConnect.h" 35 36 //------------------------------------------------------------------------------ 37 // CServerSocket 38 //------------------------------------------------------------------------------ 39 40 class CServer; 41 42 class CServerSocket : public CEMSocket 43 { 44 friend class CServerConnect; 45 public: 46 47 CServerSocket(CServerConnect* in_serverconnect, const CProxyData *ProxyData = NULL); 48 virtual ~CServerSocket(); 49 50 void ConnectToServer(CServer* server, bool bNoCrypt = false); GetConnectionState()51 sint8 GetConnectionState() const { return connectionstate; } GetLastTransmission()52 uint32 GetLastTransmission() const { return m_dwLastTransmission; } 53 wxString info; 54 55 void OnClose(int nErrorCode); 56 void OnConnect(int nErrorCode); 57 void OnReceive(int nErrorCode); 58 void OnError(int nErrorCode); 59 bool PacketReceived(CPacket* packet); 60 void SendPacket(CPacket* packet, bool delpacket = true, bool controlpacket = true, uint32 actualPayloadSize = 0); IsSolving()61 bool IsSolving() const { return m_IsSolving;}; 62 void OnHostnameResolved(uint32 ip); GetServerConnected()63 CServer *GetServerConnected() const { return serverconnect->GetCurrentServer(); } 64 65 uint32 GetServerIP() const; 66 67 private: 68 bool ProcessPacket(const byte* packet, uint32 size, int8 opcode); 69 void SetConnectionState(sint8 newstate); 70 CServerConnect* serverconnect; 71 sint8 connectionstate; 72 CServer* cur_server; 73 bool m_bNoCrypt; 74 bool headercomplete; 75 int32 sizetoget; 76 int32 sizereceived; 77 char* rbuffer; 78 bool m_bIsDeleting; // true: socket is already in deletion phase, don't destroy it in ::StopConnectionTry 79 uint32 m_dwLastTransmission; 80 81 bool m_IsSolving; 82 83 }; 84 85 #endif // SERVERSOCKET_H 86 // File_checked_for_headers 87