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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? connectionmanager.h

?? dc++(一個曾經大量使用的p2p)的源代碼,dc++,開源的p2p源代碼
?? H
字號:
/* 
 * Copyright (C) 2001-2003 Jacek Sieka, j_s@telia.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(AFX_ConnectionManager_H__675A2F66_AFE6_4A15_8386_6B6FD579D5FF__INCLUDED_)
#define AFX_ConnectionManager_H__675A2F66_AFE6_4A15_8386_6B6FD579D5FF__INCLUDED_

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

#include "ServerSocket.h"
#include "UserConnection.h"
#include "User.h"
#include "CriticalSection.h"
#include "TimerManager.h"

class ConnectionQueueItem {
public:
	typedef ConnectionQueueItem* Ptr;
	typedef vector<Ptr> List;
	typedef List::iterator Iter;
	typedef hash_map<Ptr, u_int32_t, PointerHash<ConnectionQueueItem> > TimeMap;
	typedef TimeMap::iterator TimeIter;
	
	enum State {
		CONNECTING,					// In pendingDown, recently sent request to connect
		WAITING,					// In pendingDown, waiting to send request to connect
		NO_DOWNLOAD_SLOTS,			// In pendingDown, but not needed right now
		IDLE,						// In the download pool
	};

	ConnectionQueueItem(const User::Ptr& aUser) : state(WAITING), connection(NULL), user(aUser) { };
	
	User::Ptr& getUser() { return user; };
	
	GETSET(State, state, State);
	GETSET(UserConnection*, connection, Connection);
private:
	User::Ptr user;
};
// Comparing with a user...
inline bool operator==(ConnectionQueueItem::Ptr ptr, const User::Ptr& aUser) { return ptr->getUser() == aUser; };

class ConnectionManagerListener {
public:
	typedef ConnectionManagerListener* Ptr;
	typedef vector<Ptr> List;
	typedef List::iterator Iter;
	
	enum Types {
		ADDED,
		CONNECTED,
		REMOVED,
		FAILED,
		STATUS_CHANGED
	};
	virtual void onAction(Types, ConnectionQueueItem*) throw() { };
	virtual void onAction(Types, ConnectionQueueItem*, const string&) throw() { };
};

class ConnectionManager : public Speaker<ConnectionManagerListener>, public UserConnectionListener, ServerSocketListener, TimerManagerListener, public Singleton<ConnectionManager>
{
public:
	void connect(const string& aServer, short aPort, const string& aNick);
	void getDownloadConnection(const User::Ptr& aUser);
	void putDownloadConnection(UserConnection* aSource, bool reuse = false);
	void putUploadConnection(UserConnection* aSource);
	
	void removeConnection(const User::Ptr& aUser, int isDownload);
	void shutdown();	
	/**
	 * Set this ConnectionManager to listen at a different port.
	 */
	void setPort(short aPort) throw(SocketException) {
		socket.waitForConnections(aPort);
	}
	void disconnect() throw() {
		socket.disconnect();
	}

	// Ugly trick to use windows messages...
	ServerSocket& getServerSocket() {
		return socket;
	}

private:

	CriticalSection cs;

	/** Pending connections, i e users we're trying to connect to */
	ConnectionQueueItem::TimeMap pendingDown;
	/** Download connection pool, pool of active connections to be used for downloading */
	ConnectionQueueItem::List downPool;
	/** Connections that are currently being used by the Up/DownloadManager */
	ConnectionQueueItem::List active;

	User::List pendingAdd;
	UserConnection::List pendingDelete;
	/** All active connections */
	UserConnection::List userConnections;

	ServerSocket socket;
	StringList features;

	bool shuttingDown;

	friend class Singleton<ConnectionManager>;
	ConnectionManager();
	
	virtual ~ConnectionManager() { shutdown(); };
	
	UserConnection* getConnection() throw(SocketException) {
		UserConnection* uc = new UserConnection();
		uc->addListener(this);
		{
			Lock l(cs);
			userConnections.push_back(uc);
		}
		return uc;
	}
	void putConnection(UserConnection* aConn);

	// ServerSocketListener
	virtual void onAction(ServerSocketListener::Types type) throw();
	void onIncomingConnection() throw();

	// UserConnectionListener
	virtual void onAction(UserConnectionListener::Types type, UserConnection* conn) throw() ;
	virtual void onAction(UserConnectionListener::Types type, UserConnection* conn, const string& line) throw();
	virtual void onAction(UserConnectionListener::Types type, UserConnection* conn, const string& line1, const string& line2) throw();
	virtual void onAction(UserConnectionListener::Types type, UserConnection* conn, const StringList& feat) throw();	
	void onMyNick(UserConnection* aSource, const string& aNick) throw();
	void onLock(UserConnection* aSource, const string& aLock, const string& aPk) throw();
	void onDirection(UserConnection* aSource, const string& dir, const string& num) throw();
	void onConnected(UserConnection* aSource) throw();
	void onKey(UserConnection* aSource, const string& aKey) throw();
	void onFailed(UserConnection* aSource, const string& aError) throw();
	
	// TimerManagerListener
	virtual void onAction(TimerManagerListener::Types type, u_int32_t aTick) throw();	
	void onTimerSecond(u_int32_t aTick);
	void onTimerMinute(u_int32_t aTick);

};

#endif // !defined(AFX_ConnectionManager_H__675A2F66_AFE6_4A15_8386_6B6FD579D5FF__INCLUDED_)

/**
 * @file
 * $Id: ConnectionManager.h,v 1.50 2003/07/15 14:53:10 arnetheduck Exp $
 */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合激情网| 日本中文字幕一区| 一区二区高清在线| 久久精品免费看| 99热在这里有精品免费| 这里是久久伊人| 国产精品免费久久| 日本欧美加勒比视频| 丁香六月综合激情| 欧美一级免费观看| 亚洲人成7777| 国产一区二区调教| 欧美色图第一页| 国产嫩草影院久久久久| 日韩电影在线看| 色诱视频网站一区| 国产色产综合产在线视频| 日韩不卡一区二区| 91在线精品一区二区| 2023国产精品| 日韩精品视频网站| 色综合激情五月| 国产精品免费网站在线观看| 蜜臀久久99精品久久久画质超高清 | 婷婷国产在线综合| 精品一区二区免费在线观看| 在线视频综合导航| 中文字幕亚洲精品在线观看| 韩国毛片一区二区三区| 欧美精品久久久久久久久老牛影院| 欧美国产一区在线| 国产麻豆精品95视频| 91精品国产一区二区三区| 亚洲另类色综合网站| 成人精品免费看| 久久亚洲影视婷婷| 久久成人综合网| 91麻豆精品国产91久久久久久 | 欧美日韩电影在线播放| 日本大胆欧美人术艺术动态| gogo大胆日本视频一区| 洋洋成人永久网站入口| 国产亚洲va综合人人澡精品| 欧美a级理论片| 欧美高清www午色夜在线视频| 亚洲人成影院在线观看| www.综合网.com| 中文成人av在线| 成人福利视频在线看| 国产精品女同一区二区三区| 国产不卡免费视频| 中文字幕欧美日韩一区| 国产91对白在线观看九色| 久久精品欧美日韩精品| 高清不卡在线观看| 国产精品久久久久久妇女6080| 成人午夜免费av| 中文字幕欧美一| 91福利视频久久久久| 亚洲国产欧美在线| 777奇米成人网| 久久91精品国产91久久小草| 久久久久久久久久久久电影| 国产成人久久精品77777最新版本| 国产午夜亚洲精品不卡| 成人免费视频视频| 亚洲男人的天堂av| 欧美三级电影网| 另类调教123区| 中文在线资源观看网站视频免费不卡| 国产91综合一区在线观看| 亚洲欧美激情小说另类| 99久久夜色精品国产网站| 亚洲黄色在线视频| 91精品国产美女浴室洗澡无遮挡| 久久精品久久精品| 免费在线成人网| 久久一区二区三区四区| 色综合天天在线| 日韩影视精彩在线| 中文字幕第一区二区| 欧美调教femdomvk| 国产一区视频网站| 一区二区三区**美女毛片| 欧美不卡激情三级在线观看| 成人免费观看男女羞羞视频| 亚欧色一区w666天堂| 日韩欧美色电影| 99国产精品一区| 老司机免费视频一区二区| 中文字幕在线播放不卡一区| 91精品国产免费| 91在线国产福利| 久久99精品一区二区三区三区| 成人免费在线视频| 欧美成人精品3d动漫h| 91免费观看在线| 国产一区日韩二区欧美三区| 亚洲永久精品大片| 国产午夜精品福利| 91精品国产高清一区二区三区蜜臀| 成人性生交大片免费看在线播放| 日本午夜精品视频在线观看| 日韩毛片精品高清免费| ww亚洲ww在线观看国产| 欧美亚洲国产一区二区三区| 91精品国产综合久久小美女| 99九九99九九九视频精品| 精品制服美女丁香| 奇米精品一区二区三区在线观看一| 亚洲色图制服丝袜| 国产精品网曝门| 久久久精品天堂| 欧美电影免费观看高清完整版在| 欧美日韩精品综合在线| 一本大道久久a久久精品综合| 国产精品一卡二| 久久99精品一区二区三区| 午夜精品成人在线| 一级做a爱片久久| 亚洲摸摸操操av| 综合激情成人伊人| 亚洲同性gay激情无套| 中文字幕欧美日韩一区| 久久久av毛片精品| 久久影院午夜片一区| 欧美大度的电影原声| 日韩一区二区三区高清免费看看| 欧美精品vⅰdeose4hd| 欧美日韩国产一区| 8v天堂国产在线一区二区| 91精品国产一区二区三区蜜臀| 欧美日韩一区在线| 欧美精品在线一区二区三区| 欧美日韩你懂得| 91麻豆精品国产自产在线| 欧美精品v国产精品v日韩精品| 欧美福利一区二区| 日韩精品专区在线| 久久久国产综合精品女国产盗摄| 久久久精品国产免大香伊| 国产亚洲欧美一级| 最新久久zyz资源站| 亚洲免费av在线| 丝袜脚交一区二区| 国产一区中文字幕| www.成人网.com| 色狠狠色狠狠综合| 337p亚洲精品色噜噜狠狠| 欧美成人精品1314www| 欧美国产激情二区三区| 亚洲人成网站精品片在线观看| 亚洲一区二区av在线| 91高清在线观看| 欧美一区二区精品在线| 久久蜜桃av一区二区天堂| 国产精品沙发午睡系列990531| 亚洲特黄一级片| 日韩精品成人一区二区三区| 精品一区二区影视| 成人免费观看视频| 欧美电影一区二区| 国产亚洲精品免费| 亚洲一区在线看| 国内成人自拍视频| 日本久久一区二区三区| 日韩一级精品视频在线观看| 国产精品日产欧美久久久久| 天天操天天色综合| 粉嫩高潮美女一区二区三区 | 综合亚洲深深色噜噜狠狠网站| 亚洲国产精品久久不卡毛片 | 精品国产露脸精彩对白| 亚洲欧美日韩在线播放| 老汉av免费一区二区三区| 91亚洲国产成人精品一区二三| 日韩欧美一区二区久久婷婷| 综合av第一页| 国产乱码精品一区二区三区五月婷 | 99天天综合性| 精品少妇一区二区| 亚洲午夜电影网| 成人午夜短视频| 欧美一区二区精美| 亚洲综合在线免费观看| 成人v精品蜜桃久久一区| 欧美一级生活片| 亚洲一区在线观看免费观看电影高清| 国产一区二区在线观看免费 | 91视视频在线观看入口直接观看www | 亚洲女厕所小便bbb| 国产一区二区三区在线观看精品 | 91麻豆swag| 国产欧美一区二区精品仙草咪| 天堂久久一区二区三区| 色婷婷亚洲一区二区三区| 国产欧美日韩综合| 国产自产v一区二区三区c| 4438x亚洲最大成人网| 亚洲国产精品自拍|