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 40class CServer; 41 42class CServerSocket : public CEMSocket 43{ 44 friend class CServerConnect; 45public: 46 47 CServerSocket(CServerConnect* in_serverconnect, const CProxyData *ProxyData = NULL); 48 virtual ~CServerSocket(); 49 50 void ConnectToServer(CServer* server, bool bNoCrypt = false); 51 sint8 GetConnectionState() const { return connectionstate; } 52 uint32 GetLastTransmission() const { return m_dwLastTransmission; } 53 wxString info; 54 55 void OnClose(wxSocketError nErrorCode); 56 void OnConnect(wxSocketError nErrorCode); 57 void OnReceive(wxSocketError nErrorCode); 58 void OnError(wxSocketError nErrorCode); 59 bool PacketReceived(CPacket* packet); 60 void SendPacket(CPacket* packet, bool delpacket = true, bool controlpacket = true, uint32 actualPayloadSize = 0); 61 bool IsSolving() const { return m_IsSolving;}; 62 void OnHostnameResolved(uint32 ip); 63 CServer *GetServerConnected() const { return serverconnect->GetCurrentServer(); } 64 65 uint32 GetServerIP() const; 66 67private: 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