From 5b74bda58f47e7894a83643b86d24f0c78e60285 Mon Sep 17 00:00:00 2001 From: mataes2007 Date: Thu, 24 Nov 2011 16:55:09 +0000 Subject: added HTTPServer git-svn-id: http://miranda-plugins.googlecode.com/svn/trunk@206 e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb --- HTTPServer/FileShareNode.h | 103 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 HTTPServer/FileShareNode.h (limited to 'HTTPServer/FileShareNode.h') diff --git a/HTTPServer/FileShareNode.h b/HTTPServer/FileShareNode.h new file mode 100644 index 0000000..706a31f --- /dev/null +++ b/HTTPServer/FileShareNode.h @@ -0,0 +1,103 @@ +//This file is part of HTTPServer a Miranda IM plugin +//Copyright (C)2002 Kennet Nielsen +// +//This program is free software; you can redistribute it and/or +//modify it under the terms of the GNU General Public License +//as published by the Free Software Foundation; either +//version 2 of the License, or (at your option) any later version. +// +//This program is distributed in the hope that it will be useful, +//but WITHOUT ANY WARRANTY; without even the implied warranty of +//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//GNU General Public License for more details. +// +//You should have received a copy of the GNU General Public License +//along with this program; if not, write to the Free Software +//Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +#ifndef FILE_SHARE_NODE_H +#define FILE_SHARE_NODE_H + +#include +#include "m_HTTPServer.h" + +class CLShareUser { +public: + CLShareUser(HANDLE hCon, in_addr stAdd); + virtual ~CLShareUser(); + CLShareUser * pclNext; + in_addr stAddr; + DWORD dwCurrentDL; + DWORD dwTotalSize; + char szCurrentDLSrvPath[MAX_PATH]; + virtual DWORD dwGetDownloadSpeed(); + virtual bool bCloseTransfers() = NULL; + virtual const char * pszCustomInfo() = NULL; + void CloseSocket(); +protected: + HANDLE hConnection; + DWORD dwSpeed; +}; + +class CLFileShareNode { +public://, DWORD dwAllowedIP, DWORD dwAllowedMask, int nMaxDownloads ); + CLFileShareNode(char * pszSrvPath, char * pszRealPath); + CLFileShareNode(STFileShareInfo * pstInfo); + ~CLFileShareNode(); + bool bSetPaths(char * pszSrvPath, char * pszRealPath); + bool bSetInfo(STFileShareInfo * pstInfo); + int nGetSrvPathLen() { + return st.dwMaxSrvPath -1; + } + bool bIsDirectory() { + return st.pszSrvPath[st.dwMaxSrvPath-2] == '/'; + } + + STFileShareInfo st; + char *pszOrigRealPath; + CLFileShareNode * pclNext; + //CLHttpUser * pclAddHttpUser( HANDLE hConnection, in_addr stAddr ); + //bool bRemoveHttpUser( CLHttpUser * pclUser ); + bool bAddUser(CLShareUser * pclUser); + bool bRemoveUser(CLShareUser * pclUser); + bool bAnyUsers() { + return pclCurrentUsers != 0; + } + void CloseAllTransfers(); + CLShareUser *pclGetUsers() { + return pclCurrentUsers; + } +private: + CLShareUser * pclCurrentUsers; + +}; + +extern CLFileShareNode * pclFirstNode; +extern CRITICAL_SECTION csFileShareListAccess; + +class CLFileShareListAccess { + bool bLocked; +public: + CLFileShareListAccess() { + bLocked = false; + Lock(); + } + ~CLFileShareListAccess() { + Unlock(); + } + void Lock() { + if (bLocked) + return; + EnterCriticalSection(&csFileShareListAccess); + bLocked = true; + } + void Unlock() { + if (!bLocked) + return; + LeaveCriticalSection(&csFileShareListAccess); + bLocked = false; + } + +}; + +#endif \ No newline at end of file -- cgit v1.2.3