📄 networks.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 + -