warfileengine.cpp

来自「ftpserver very good sample」· C++ 代码 · 共 137 行

CPP
137
字号
#include "StdAfx.h"#include "WarFileEngine.h"   // class implemented#ifndef WAR_AUTO_LOCK_H#   include "WarAutoLock.h"#endif#ifndef WAR_LOG_H#   include "WarLog.h"#endifusing namespace std;/////////////////////////////// PUBLIC ///////////////////////////////////////WarFileEngine *WarFileEngine::mspMe;#define AUTO_LOCK WarAutoLock my_lock(mLock);//============================= LIFECYCLE ====================================WarFileEngine::WarFileEngine()    throw(WarException){    if (mspMe)        WarThrow(WarError(WAR_ERR_OBJECT_EXIST), NULL);    mspMe = this;}// WarFileEngineWarFileEngine::~WarFileEngine(){    if (mspMe == this)        mspMe = NULL;}// ~WarFileEngine//============================= OPERATORS ====================================//============================= OPERATIONS ===================================void WarFileEngine::AttachDriver(WarFileDriver *pDriver)    throw(WarException){    WarLog debug_log(WARLOG_FILES, "WarFileEngine::AttachDriver()");    debug_log << "Adding driver: '"        << pDriver->GetName()        << "'"        << war_endl;    AUTO_LOCK    WarFileDriver::driver_ptr_t driver_ref(pDriver);    pair<driver_list_t::iterator, bool> result =         mDrivers.insert(pDriver);    if (!result.second)    {        WarLog err_log(WARLOG_ERROR, "WarFileEngine::AttachDriver()");        err_log << "The driver '"            << pDriver->GetName()            << "' was already installed!"            << WarError(WAR_ERR_OBJECT_EXIST)            << war_endl;        WarThrow(WarError(WAR_ERR_OBJECT_EXIST), NULL);    }}void WarFileEngine::DetachDriver(war_ccstr_t driverName)    throw(WarException){    AUTO_LOCK    driver_list_t::iterator P = Lookup(driverName);    mDrivers.erase(P);}WarFileDriver::driver_ptr_t WarFileEngine::GetDriver(war_ccstr_t driverName)    throw(WarException){    AUTO_LOCK    driver_list_t::iterator P = Lookup(driverName);    return (*P);}//============================= ACCESS     ===================================//============================= INQUIRY    ===================================/////////////////////////////// PROTECTED  ///////////////////////////////////bool WarFileEngine::IsDriverInstalled(war_ccstr_t driverName){    AUTO_LOCK#if WAR_CATCH_ALL    try#endif    {        Lookup(driverName);        return true;    }#if WAR_CATCH_ALL    catch(...)    {    }#endif    return false;}/////////////////////////////// PRIVATE    ///////////////////////////////////WarFileEngine::driver_list_t::iterator WarFileEngine::Lookup(war_ccstr_t driverName)        throw(WarException){    WarFileDriver *pkey_driver = new WarFileDriver(driverName);    driver_list_t::iterator P = mDrivers.find(pkey_driver);        if (P == mDrivers.end())        WarThrow(WarError(WAR_ERR_OBJECT_NOT_FOUND), NULL);        return P;}

⌨️ 快捷键说明

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