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

📄 networks.h

📁 Last change: 2008-02-03 This is the source code of KCeasy。
💻 H
字号:
/*
This file is part of KCeasy (http://www.kceasy.com)
Copyright (C) 2002-2004 Markus Kern <mkern@kceasy.com>

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.
*/
//---------------------------------------------------------------------------
#ifndef NetworksH
#define NetworksH

#include <list.h>

#include "Engine.h"
//---------------------------------------------------------------------------

namespace KCeasyEngine {

using std::list;

class TNetwork
{
friend class TNetworks;
friend class TEngine;
public:
    string& GetName() { return Name; }
    unsigned int GetUsers() { return Users; }
    double GetSize() { return Size; }
    unsigned int GetFiles() { return Files; }

    bool IsConnected();

    const THashAlgoSet* GetAlgos() { return Algos; }

    void* GetUData() { return UData; }
    void SetUData(void* NUData) { UData = NUData; }

private:
    TNetwork(const string& NetName);
    ~TNetwork();

    void* UData;

    string Name;
    unsigned int Users;
    double Size; // in GB
    unsigned int Files;

    THashAlgoSet* Algos;
};

class TNetworks
{
friend class TEngine;
public:
    typedef list<TNetwork*>::iterator TNetworkIterator;

    void Update();
    bool UpdateIfNecessary();

    unsigned int GetTotalUsers() { return TotalUsers; }
    double GetTotalSize() { return TotalSize; }
    unsigned int GetTotalFiles() { return TotalFiles; }
    unsigned int GetTotalConnected() { return TotalConnected; }
    bool AllConnected() { return (TotalConnected == Networks.size()); }

    TNetwork* GetNetwork(string Name);
    void Lock() { NetworksCritSec.Enter(); }
    void Release() { NetworksCritSec.Leave(); }
    TNetworkIterator GetBegin() { return Networks.begin(); }
    TNetworkIterator GetEnd() { return Networks.end(); }
    unsigned int GetNetworkCount() { return Networks.size(); }

    void* GetUData() { return UData; }
    void SetUData(void* NUData) { UData = NUData; }

private:
    TNetworks(TEngine* ParentEngine);
    ~TNetworks();

    void Reset();
    void CalculateTotals(); // calculates totals from networks
    bool ProcessStats(TGiftCommand *Cmd);

    TEngine* Engine;
    void* UData;

    // total stats
    unsigned int TotalUsers;
    double TotalSize; // in GB
    unsigned int TotalFiles;
    unsigned int TotalConnected;

    // the list of networks
    list<TNetwork*> Networks;
    TCriticalSection NetworksCritSec;
    unsigned int LastUpdate;
};

} // namespace KCeasyEngine

#endif

⌨️ 快捷键说明

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