⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 warsocketengine.cpp

📁 ftpserver very good sample
💻 CPP
字号:
#include "StdAfx.h"#include "WarSocketEngine.h"   // class implemented#ifndef WAR_LOG_H#   include "WarLog.h"#endif#ifndef WAR_SOCKET_IO_H#   include "WarSocketIo.h"#endif#ifndef WAR_ASSERT_H_INCLUDED#   define WAR_ASSERT_H_INCLUDED#   include <assert.h>#endif#ifndef WAR_AUTO_LOCK_H#   include "WarAutoLock.h"#endif#define AUTO_LOCK WarAutoLock MyLock(mLock);/////////////////////////////// PUBLIC ///////////////////////////////////////WarSocketEngine *WarSocketEngine::mpShared; //============================= LIFECYCLE ====================================WarSocketEngine::WarSocketEngine(): mCurrSeqNumber(0),mNumSocketsInUse(0){    WarLog info_log(WARLOG_INFO, "WarSocketEngine::WarSocketEngine()");    if (mpShared == NULL)    {        info_log << "Initializing shared socket subsystem";        mpShared = this;    }    #if HAVE_WINSOCK    WSADATA wsaData;     if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0)    {        WarLog err_log(WARLOG_ERROR, "WarSocketEngine::WarSocketEngine()");        WarError sys_err;        sys_err.Capture();        err_log << "Failed to initialize Winsock!"             << sys_err            << war_endl;        WarThrow(sys_err, NULL);    }    if (IsShared())        info_log << ' '            << wsaData.szDescription            << ' '            << wsaData.szSystemStatus;#endif // HAVE_WINSOCK    if (IsShared())        info_log << war_endl;}// WarSocketEngineWarSocketEngine::~WarSocketEngine(){    WarLog debug_log(WARLOG_DEBUG, "WarSocketEngine::~WarSocketEngine()");    if (mpShared == this)    {        debug_log << "Shutting down shared socket subsystem"             << war_endl;        mpShared = NULL;    }#if HAVE_WINSOCK    ::WSACleanup();#endif}// ~WarSocketEngine//============================= OPERATORS ====================================//============================= OPERATIONS ===================================size_t WarSocketEngine::GetNumberOfCurrentSockets()    throw(WarException){    WarSocketEngine& rglobal_engine = GetSharedEngine();    WarAutoLock my_lock(rglobal_engine.mLock);    return rglobal_engine.mNumSocketsInUse;}void WarSocketEngine::RegisterSocket(WarSocketIo *pSocket)    throw(WarException){    WarSocketEngine& rglobal_engine = GetSharedEngine();    WarAutoLock my_lock(rglobal_engine.mLock);    rglobal_engine.mNumSocketsInUse++;    pSocket->mSeqNumber = ++rglobal_engine.mCurrSeqNumber;}void WarSocketEngine::UnregisterSocket(WarSocketIo *pSocket)    throw(WarException){    WarSocketEngine& rglobal_engine = GetSharedEngine();    WarAutoLock my_lock(rglobal_engine.mLock);        assert(rglobal_engine.mNumSocketsInUse > 0);    rglobal_engine.mNumSocketsInUse--;}//============================= ACCESS     ===================================//============================= INQUIRY    ===================================/////////////////////////////// PROTECTED  ////////////////////////////////////////////////////////////////// PRIVATE    ///////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -