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 // Handling incoming connections (up or downloadrequests) 28 // 29 30 #ifndef LISTENSOCKET_H 31 #define LISTENSOCKET_H 32 33 #include "Proxy.h" // Needed fot CProxyData, CSocketServerProxy 34 35 #include <set> 36 37 class CClientTCPSocket; 38 39 // CListenSocket command target 40 class CListenSocket : public CSocketServerProxy 41 { 42 public: 43 CListenSocket(amuleIPV4Address &addr, const CProxyData *ProxyData = NULL); 44 ~CListenSocket(); 45 void OnAccept(); 46 void Process(); 47 void RemoveSocket(CClientTCPSocket* todel); 48 void AddSocket(CClientTCPSocket* toadd); GetOpenSockets()49 uint32 GetOpenSockets() {return socket_list.size();} 50 void KillAllSockets(); 51 bool TooManySockets(bool bIgnoreInterval = false); 52 bool IsValidSocket(CClientTCPSocket* totest); 53 void AddConnection(); 54 void RecalculateStats(); 55 void UpdateConnectionsStatus(); 56 57 float GetMaxConperFiveModifier(); GetTotalConnectionChecks()58 uint32 GetTotalConnectionChecks() { return totalconnectionchecks; } GetAverageConnections()59 float GetAverageConnections() { return averageconnections; } 60 OnShutdown()61 bool OnShutdown() { return shutdown;} 62 63 private: 64 65 typedef std::set<CClientTCPSocket *> SocketSet; 66 SocketSet socket_list; 67 68 bool shutdown; 69 bool m_pending; 70 71 uint16 m_OpenSocketsInterval; 72 uint16 m_ConnectionStates[3]; 73 uint32 totalconnectionchecks; 74 float averageconnections; 75 }; 76 77 78 #endif // LISTENSOCKET_H 79 // File_checked_for_headers 80