亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? clientmanager.h

?? 一個(gè)不錯(cuò)的關(guān)于手機(jī)模塊程序This page contains everything that has changed in the history of DC++. Read this to fin
?? H
字號(hào):
/*
 * Copyright (C) 2001-2006 Jacek Sieka, arnetheduck on gmail point 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.
 *
 * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */

#if !defined(CLIENT_MANAGER_H)
#define CLIENT_MANAGER_H

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "TimerManager.h"

#include "Client.h"
#include "Singleton.h"
#include "SettingsManager.h"

#include "ClientManagerListener.h"

class UserCommand;

class ClientManager : public Speaker<ClientManagerListener>, 
	private ClientListener, public Singleton<ClientManager>, 
	private TimerManagerListener, private SettingsManagerListener
{
public:
	Client* getClient(const string& aHubURL);
	void putClient(Client* aClient);

	size_t getUserCount();
	int64_t getAvailable();
	StringList getHubs(const CID& cid);
	StringList getHubNames(const CID& cid);
	StringList getNicks(const CID& cid);
	string getConnection(const CID& cid);

	bool isConnected(const string& aUrl);
	
	void search(int aSizeMode, int64_t aSize, int aFileType, const string& aString, const string& aToken);
	void search(StringList& who, int aSizeMode, int64_t aSize, int aFileType, const string& aString, const string& aToken);
	void infoUpdated();

	User::Ptr getUser(const string& aNick, const string& aHubUrl) throw();
	User::Ptr getUser(const CID& cid) throw();

	string findHub(const string& ipPort);

	User::Ptr findUser(const string& aNick, const string& aHubUrl) throw() { return findUser(makeCid(aNick, aHubUrl)); }
	User::Ptr findUser(const CID& cid) throw();
	User::Ptr findLegacyUser(const string& aNick) const throw();

	bool isOnline(const User::Ptr& aUser) {
		Lock l(cs);
		return onlineUsers.find(aUser->getCID()) != onlineUsers.end();
	}

	bool isOp(const User::Ptr& aUser, const string& aHubUrl);

	/** Constructs a synthetic, hopefully unique CID */
	CID makeCid(const string& nick, const string& hubUrl) throw();

	void putOnline(OnlineUser& ou) throw();
	void putOffline(OnlineUser& ou) throw();

	User::Ptr& getMe();
	
	void connect(const User::Ptr& p);
	void send(AdcCommand& c, const CID& to);
	void privateMessage(const User::Ptr& p, const string& msg);

	void userCommand(const User::Ptr& p, const ::UserCommand& uc, StringMap& params, bool compatibility);

	bool isActive() { return SETTING(INCOMING_CONNECTIONS) != SettingsManager::INCOMING_FIREWALL_PASSIVE; }
	
	void lock() throw() { cs.enter(); }
	void unlock() throw() { cs.leave(); }

	Identity getIdentity(const User::Ptr& aUser);

	Client::List& getClients() { return clients; }

	string getCachedIp() const { Lock l(cs); return cachedIp; }

	CID getMyCID();
	const CID& getMyPID();

	void save();
private:
	typedef HASH_MAP<string, User::Ptr> LegacyMap;
	typedef LegacyMap::iterator LegacyIter;

	typedef HASH_MAP_X(CID, User::Ptr, CID::Hash, equal_to<CID>, less<CID>) UserMap;
	typedef UserMap::iterator UserIter;

	typedef HASH_MULTIMAP_X(CID, OnlineUser*, CID::Hash, equal_to<CID>, less<CID>) OnlineMap;
	typedef OnlineMap::iterator OnlineIter;
	typedef pair<OnlineIter, OnlineIter> OnlinePair;

	Client::List clients;
	mutable CriticalSection cs;
	
	UserMap users;
	OnlineMap onlineUsers;

	User::Ptr me;
	
	Socket s;

	string cachedIp;
	CID pid;

	friend class Singleton<ClientManager>;

	ClientManager() { 
		TimerManager::getInstance()->addListener(this); 
		SettingsManager::getInstance()->addListener(this);
	}

	virtual ~ClientManager() throw() { 
		SettingsManager::getInstance()->removeListener(this);
		TimerManager::getInstance()->removeListener(this); 
	}

	string getUsersFile() { return Util::getConfigPath() + "Users.xml"; }

	void updateCachedIp();

	// SettingsManagerListener
	virtual void on(Load, SimpleXML*) throw();
	virtual void on(Save, SimpleXML*) throw();

	// ClientListener
	virtual void on(Connected, Client* c) throw() { fire(ClientManagerListener::ClientConnected(), c); }
	virtual void on(UserUpdated, Client*, const OnlineUser& user) throw() { fire(ClientManagerListener::UserUpdated(), user); }
	virtual void on(UsersUpdated, Client* c, const User::List&) throw() { fire(ClientManagerListener::ClientUpdated(), c); }
	virtual void on(Failed, Client*, const string&) throw();
	virtual void on(HubUpdated, Client* c) throw() { fire(ClientManagerListener::ClientUpdated(), c); }
	virtual void on(UserCommand, Client*, int, int, const string&, const string&) throw();
	virtual void on(NmdcSearch, Client* aClient, const string& aSeeker, int aSearchType, int64_t aSize, 
		int aFileType, const string& aString) throw();
	virtual void on(AdcSearch, Client* c, const AdcCommand& adc, const CID& from) throw();
	// TimerManagerListener
	virtual void on(TimerManagerListener::Minute, u_int32_t aTick) throw();
};

#endif // !defined(CLIENT_MANAGER_H)

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品日韩一区二区三区 | 精品成人一区二区三区| 色综合色综合色综合色综合色综合 | 亚洲图片激情小说| 久久久精品欧美丰满| 精品免费视频.| 欧美成人激情免费网| 91精品国产色综合久久不卡电影 | 中文字幕免费一区| 久久香蕉国产线看观看99| 欧美大片顶级少妇| 精品sm在线观看| 久久久99久久精品欧美| 欧美tk丨vk视频| 久久久久久久久97黄色工厂| 精品嫩草影院久久| 国产调教视频一区| 欧美激情在线一区二区三区| 日本一区二区三区国色天香| 中文成人av在线| 亚洲人成人一区二区在线观看| 亚洲视频在线观看三级| 亚洲综合区在线| 日韩成人一级大片| 九色porny丨国产精品| 国产一区二区网址| 99热国产精品| 欧美午夜影院一区| 日韩你懂的在线播放| 久久―日本道色综合久久 | 国产乱妇无码大片在线观看| 国产成人精品免费在线| 97精品久久久久中文字幕 | 亚洲激情在线播放| 蜜臀国产一区二区三区在线播放| 九九精品一区二区| 91在线视频播放| 91精品欧美综合在线观看最新| 日韩欧美中文字幕制服| 国产精品麻豆网站| 五月天视频一区| 懂色av中文字幕一区二区三区| 色欧美88888久久久久久影院| 欧美另类变人与禽xxxxx| 久久久精品综合| 亚洲国产欧美另类丝袜| 国产精品亚洲成人| 欧美日韩免费电影| 国产精品女上位| 日韩 欧美一区二区三区| 成人黄页毛片网站| 91精品国产欧美一区二区18| 欧美激情一区二区| 美国毛片一区二区| 在线观看日韩国产| 国产午夜精品一区二区三区嫩草| 一区二区三区免费观看| 国产91高潮流白浆在线麻豆| 欧美女孩性生活视频| 成人免费在线视频观看| 精品在线你懂的| 欧美丰满少妇xxxbbb| 亚洲色图丝袜美腿| 国产精品一区二区免费不卡| 911精品产国品一二三产区| 国产精品三级av| 激情图区综合网| 欧美精品日韩一区| 一区二区在线观看不卡| 不卡av电影在线播放| 国产亚洲成av人在线观看导航| 日日夜夜一区二区| 欧美四级电影在线观看| 亚洲色图20p| 国产99久久久国产精品免费看| 精品久久久久久久一区二区蜜臀| 性做久久久久久| 欧美在线|欧美| 亚洲精品国产精品乱码不99| 不卡电影一区二区三区| 日本一区二区视频在线观看| 国内精品伊人久久久久av影院| 91精品国产麻豆| 日韩黄色免费网站| 欧美肥妇bbw| 奇米影视一区二区三区| 欧美高清精品3d| 日韩 欧美一区二区三区| 欧美日本不卡视频| 免费成人在线视频观看| 欧美一级二级三级乱码| 久久激情五月婷婷| 精品国产乱码久久久久久蜜臀| 老鸭窝一区二区久久精品| 日韩午夜在线播放| 激情五月播播久久久精品| 久久日韩精品一区二区五区| 国产一区视频在线看| 国产色产综合产在线视频| 国产白丝网站精品污在线入口| 国产欧美视频在线观看| caoporen国产精品视频| 亚洲综合免费观看高清完整版在线| 欧美亚洲高清一区二区三区不卡| 亚洲国产精品一区二区久久| 91精品国产一区二区人妖| 久久99日本精品| 国产精品国产三级国产普通话三级 | 国产精品久久毛片a| 91免费版在线看| 五月天网站亚洲| 26uuu精品一区二区三区四区在线| 国产黄人亚洲片| 一区二区三区四区国产精品| 91精品国产综合久久婷婷香蕉| 国产尤物一区二区| 一区二区免费在线| 日韩精品一区二区三区四区视频 | 国产在线国偷精品产拍免费yy| 国产精品视频看| 欧美日韩激情一区二区| 久久99国产精品尤物| 亚洲精品国产成人久久av盗摄 | 色综合天天综合网国产成人综合天| 亚洲国产精品一区二区久久恐怖片| 欧美变态tickle挠乳网站| 99re视频精品| 国产自产2019最新不卡| 一区二区三区四区不卡视频| 精品国产乱码久久久久久夜甘婷婷 | 成人欧美一区二区三区1314| 欧美情侣在线播放| 国产精品一区专区| 香蕉av福利精品导航| 欧美国产一区二区在线观看| 欧美久久久久久久久| 99久久精品免费看国产免费软件| 免费看欧美女人艹b| 一区二区三区免费看视频| 国产精品女人毛片| 2欧美一区二区三区在线观看视频| 欧美性xxxxxx少妇| av毛片久久久久**hd| 国产原创一区二区| 免费的成人av| 日韩国产一二三区| 亚洲最大成人综合| 亚洲女同一区二区| 国产欧美在线观看一区| 欧美精品一区二区三区蜜臀| 欧美日韩你懂得| 91福利精品视频| 91丝袜高跟美女视频| 国产精品系列在线播放| 九一久久久久久| 久久精品国产精品亚洲精品| 亚洲成人你懂的| 亚洲一级二级在线| 亚洲一区在线观看网站| 伊人开心综合网| 亚洲老司机在线| 亚洲欧美日本在线| 亚洲精品成人a在线观看| 亚洲人123区| 亚洲自拍都市欧美小说| 亚洲综合在线第一页| 亚洲午夜久久久久久久久电影网| 亚洲另类色综合网站| 夜夜精品视频一区二区| 欧美一区二区三区四区高清| 一区在线观看视频| 中文字幕不卡一区| 欧美国产国产综合| 中文字幕日韩一区二区| 亚洲欧洲精品一区二区三区不卡| 中文字幕在线观看一区二区| 亚洲欧美中日韩| 亚洲影视在线播放| 日韩电影免费在线| 激情五月播播久久久精品| 国产a级毛片一区| 色婷婷久久久久swag精品| 欧美日韩精品是欧美日韩精品| 91.麻豆视频| 国产人伦精品一区二区| 国产精品伦一区| 亚洲五码中文字幕| 精品亚洲porn| 99re这里都是精品| 91麻豆精品国产91久久久久久| 精品国产露脸精彩对白| 中文字幕一区二区三区色视频| 一区二区三区欧美激情| 久久成人精品无人区| av福利精品导航| 制服.丝袜.亚洲.中文.综合| 国产亚洲欧美一级| 亚欧色一区w666天堂| 国产精品18久久久久久久久| 欧美在线观看视频在线|