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

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

?? client.cpp

?? 一個icestorm的例子.ice是一個開源的中間件,性能好,易使用
?? CPP
字號:
// **********************************************************************//// Copyright (c) 2003-2005 ZeroC, Inc. All rights reserved.//// This copy of Ice is licensed to you under the terms described in the// ICE_LICENSE file included in this distribution.//// **********************************************************************#include <Ice/Application.h>#include <IceUtil/Thread.h>#include <Glacier2/Router.h>#include <Chat.h>using namespace std;using namespace Ice;using namespace Chat;class SessionPingThread : public IceUtil::Thread, public IceUtil::Monitor<IceUtil::Mutex>{public:    SessionPingThread(const Glacier2::SessionPrx& session) :	_session(session),	_timeout(IceUtil::Time::seconds(20)),	_destroy(false)    {    }    virtual void    run()    {	Lock sync(*this);	while(!_destroy)	{	    timedWait(_timeout);	    if(_destroy)	    {		break;	    }	    try	    {		_session->ice_ping();	    }	    catch(const Ice::Exception&)	    {		break;	    }	}    }    void    destroy()    {	Lock sync(*this);	_destroy = true;	notify();    }private:    const Glacier2::SessionPrx _session;    const IceUtil::Time _timeout;    bool _destroy;};typedef IceUtil::Handle<SessionPingThread> SessionPingThreadPtr;class ChatRoomObserverI : public ChatRoomObserver{public:    ChatRoomObserverI(const string& room) :	_room(room)    {    }    virtual void    message(const string& data, const Current&)    {	cout << _room << ": " << data << endl;    }private:    const string _room;};class ChatRoomManager{public:    ChatRoomManager(const ObjectAdapterPtr& adapter, const ChatSessionPrx& session, const string& category) :	_adapter(adapter),	_session(session),	_category(category)    {    }    ChatRoomParticipantPrx    find(const string& room) const    {	map<string, ChatRoomParticipantPrx>::const_iterator p = _rooms.find(room);	ChatRoomParticipantPrx r;	if(p != _rooms.end())	{	    r = p->second;	}	return r;    }    void    join(const string& roomName)    {	Identity id;	id.name = "observer." + roomName;	id.category = _category;	ChatRoomObserverPrx observer = ChatRoomObserverPrx::uncheckedCast(	    _adapter->add(new ChatRoomObserverI(roomName), id));	ChatRoomParticipantPrx room = _session->join(roomName, observer);	_rooms.insert(make_pair(roomName, room));    }private:    const ObjectAdapterPtr _adapter;    const ChatSessionPrx _session;    map<string, ChatRoomParticipantPrx> _rooms;    const string _category;};class ChatClient : public Application{public:    virtual int    run(int argc, char* argv[])    {	RouterPrx defaultRouter = communicator()->getDefaultRouter();	if(!defaultRouter)	{	    cerr << argv[0] << ": no default router set" << endl;	    return EXIT_FAILURE;	}	Glacier2::RouterPrx router = Glacier2::RouterPrx::checkedCast(defaultRouter);	if(!router)	{	    cerr << argv[0] << ": configured router is not a Glacier2 router" << endl;	    return EXIT_FAILURE;	}	ChatSessionPrx session;	while(true)	{	    cout << "This demo accepts any user-id / password combination.\n";	    string id;	    cout << "user id: " << flush;	    std::getline(cin, id);	    id = trim(id);	    string pw;	    cout << "password: " << flush;	    std::getline(cin, pw);	    pw = trim(pw);	    try	    {		session = ChatSessionPrx::uncheckedCast(router->createSession(id, pw));		break;	    }	    catch(const Glacier2::PermissionDeniedException& ex)	    {		cout << "permission denied:\n" << ex.reason << endl;	    }	}    	SessionPingThreadPtr ping = new SessionPingThread(session);	ping->start();	ObjectAdapterPtr adapter = communicator()->createObjectAdapter("Chat.Client");	adapter->activate();	ChatRoomManager manager(adapter, session, router->getServerProxy()->ice_getIdentity().category);	manager.join("global");	menu();	try	{	    do	    {		string s;		cout << "==> ";		getline(cin, s);		s = trim(s);		if(s.empty())		{		    continue;		}		if(s[0] == '/')		{		    vector<string> tok;		    stringstream ss(s);		    string buf;		    while(ss >> buf)		    {			tok.push_back(buf);		    }		    assert(tok.size() > 0);		    if(tok[0] == "/quit")		    {			break;		    }		    else if(tok[0] == "/join")		    {			if(tok.size() != 2)			{ 			    menu();			    continue;			}			string roomName = tok[1];			if(manager.find(roomName))			{			    cerr << "Room already exists." << endl;			    continue;			}			manager.join(roomName);		    }		    else		    {			ChatRoomParticipantPrx room = manager.find(tok[0].substr(1));			if(room)			{			    room->say(s);			}			else			{			    menu();			}		    }		}		else		{		    ChatRoomParticipantPrx room = manager.find("global");		    assert(room);		    room->say(s);		}	    }	    while(cin.good());	    router->destroySession();	}	catch(const Exception& ex)	{	    cerr << ex << endl;	    ping->destroy();	    ping->getThreadControl().join();	    return EXIT_FAILURE;	}	ping->destroy();	ping->getThreadControl().join();	return EXIT_SUCCESS;    }private:    void    menu()    {	cout << "commands\n"	     << "/quit		    Exit\n"	     << "/join <room>	    Join room\n"	     << "/<room>	    Talk in room\n"	     << "<text>		    Talk in global"	     << endl;    }    string    trim(const string& s)    {	static const string delims = "\t\r\n ";	string::size_type last = s.find_last_not_of(delims);	if(last != string::npos)	{	    return s.substr(s.find_first_not_of(delims), last+1);	}	return s;    }};intmain(int argc, char* argv[]){    ChatClient app;    return app.main(argc, argv, "config");}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人综合婷婷国产精品久久蜜臀 | 成人h动漫精品一区二区| 中文字幕第一页久久| 色综合中文字幕国产 | 精品国产污污免费网站入口 | 国产精品69毛片高清亚洲| 久久影院电视剧免费观看| 亚洲欧美综合另类在线卡通| 国产精品羞羞答答xxdd| 精品福利视频一区二区三区| 久久97超碰国产精品超碰| 久久久国产精品不卡| 成人性视频免费网站| 18欧美乱大交hd1984| 91浏览器在线视频| 偷窥少妇高潮呻吟av久久免费| 欧美日韩精品电影| 国产综合久久久久影院| 26uuu精品一区二区| 欧美精品日日鲁夜夜添| 亚洲欧洲日本在线| 国产成人精品影院| 欧美亚洲综合在线| 国产精品日日摸夜夜摸av| 亚洲精品免费在线| 色久综合一二码| 亚洲四区在线观看| 欧美午夜寂寞影院| 美女看a上一区| 亚洲欧美日韩久久精品| 51午夜精品国产| 91性感美女视频| 国产精品综合一区二区三区| 亚洲精品成人悠悠色影视| 日韩欧美国产麻豆| 欧美三级中文字幕| 成人免费毛片高清视频| 婷婷综合另类小说色区| 国产精品私人自拍| 日韩欧美精品在线| 欧美日韩国产综合一区二区三区| 精品无码三级在线观看视频| 亚洲国产综合视频在线观看| 久久精品一级爱片| 精品久久人人做人人爰| 欧美一区二区黄| 69久久夜色精品国产69蝌蚪网| av电影在线观看一区| 国产成人综合精品三级| 狠狠色丁香婷婷综合| 美国毛片一区二区三区| 日本三级亚洲精品| 香蕉乱码成人久久天堂爱免费| 一区二区三区av电影| 亚洲男人都懂的| 亚洲午夜精品一区二区三区他趣| 亚洲欧美激情在线| 亚洲激情图片小说视频| 亚洲一区电影777| 五月天激情综合| 毛片av一区二区| 粉嫩一区二区三区在线看| 国产成人免费网站| 99久久综合精品| 色婷婷综合久色| 6080日韩午夜伦伦午夜伦| 91精品国产综合久久香蕉的特点 | 久久亚洲综合av| 亚洲国产精品二十页| 亚洲午夜私人影院| 麻豆高清免费国产一区| aaa亚洲精品一二三区| 欧美性生活影院| 久久综合av免费| 一区二区免费在线播放| 亚洲一级二级三级| 粉嫩aⅴ一区二区三区四区五区| www.亚洲人| 久久亚洲精华国产精华液| 中文字幕一区二区三区乱码在线| 亚洲成人综合网站| 成人网页在线观看| 日韩欧美在线1卡| 亚洲狼人国产精品| 国产久卡久卡久卡久卡视频精品| 91久久香蕉国产日韩欧美9色| 国产午夜亚洲精品羞羞网站| 丝袜美腿亚洲色图| 色综合久久综合| 国产精品伦理一区二区| 国产一区二区91| 欧美精品777| 亚洲v精品v日韩v欧美v专区| 粉嫩在线一区二区三区视频| 日韩欧美在线不卡| 麻豆国产欧美日韩综合精品二区| 欧美在线看片a免费观看| 亚洲精品日韩综合观看成人91| 国产一区二区视频在线播放| 欧美成人三级在线| 麻豆极品一区二区三区| 日韩久久精品一区| 九色综合狠狠综合久久| 久久日一线二线三线suv| 韩国欧美国产1区| 欧美精品一区二区三| 国产精品中文字幕欧美| 国产精品嫩草久久久久| 91美女精品福利| 亚洲二区视频在线| 欧美第一区第二区| 国产精品一区二区男女羞羞无遮挡| 337p粉嫩大胆色噜噜噜噜亚洲 | 欧洲精品在线观看| 午夜激情一区二区三区| 精品成人a区在线观看| 国产成人激情av| 亚洲午夜羞羞片| 精品国产一区二区三区不卡| 92国产精品观看| 日本va欧美va精品发布| 欧美激情中文字幕| 在线观看一区不卡| 国产一区二区三区久久悠悠色av| 亚洲免费在线视频一区 二区| 日韩亚洲欧美中文三级| 成人av电影免费观看| 日韩和欧美一区二区三区| 不卡一卡二卡三乱码免费网站| 日韩三级视频在线看| 日韩三级视频中文字幕| 精品国产一二三区| 91精品国产免费| 成人中文字幕在线| 日本欧美韩国一区三区| 国产精品午夜在线| 精品久久久网站| 欧美唯美清纯偷拍| 国产成人精品亚洲午夜麻豆| 日日摸夜夜添夜夜添精品视频| 亚洲综合无码一区二区| 日本中文字幕不卡| 国产精品夜夜嗨| 欧美亚洲愉拍一区二区| 日韩欧美国产三级电影视频| 国产精品久久久久一区二区三区共 | 亚洲乱码国产乱码精品精小说| 尤物视频一区二区| 蜜桃精品视频在线观看| 波多野结衣中文字幕一区| 欧美在线观看视频一区二区| 在线精品亚洲一区二区不卡| 91精品中文字幕一区二区三区| 久久亚洲私人国产精品va媚药| 欧美国产国产综合| 亚洲高清视频中文字幕| 久久99久久久久久久久久久| 顶级嫩模精品视频在线看| 不卡的看片网站| 在线不卡中文字幕| 国产亚洲短视频| 亚洲v中文字幕| 国产成人在线网站| 91麻豆精品国产无毒不卡在线观看| 欧美一区二区三区性视频| 久久精品夜夜夜夜久久| 亚洲一区二区高清| 国产一区福利在线| 欧美精品 国产精品| 中文字幕在线一区免费| 青青草国产成人99久久| 在线观看亚洲精品视频| 欧美国产成人精品| 国内不卡的二区三区中文字幕| 色噜噜偷拍精品综合在线| 欧美国产精品中文字幕| 亚洲免费观看高清完整版在线| 亚洲日本韩国一区| 国产精品中文字幕一区二区三区| 欧美蜜桃一区二区三区| 成人欧美一区二区三区白人| 天天影视涩香欲综合网| 国产老女人精品毛片久久| 91精品国产欧美一区二区18 | 国产精品99久久不卡二区| 欧美伊人久久大香线蕉综合69| 亚洲女与黑人做爰| 91久久免费观看| 午夜视黄欧洲亚洲| 99久久久无码国产精品| 综合欧美一区二区三区| 色猫猫国产区一区二在线视频| 亚洲午夜日本在线观看| 日韩午夜精品电影| 国产激情一区二区三区| 欧美激情在线免费观看| 成人黄色综合网站| 亚洲图片欧美视频| 日韩欧美国产麻豆| 成人自拍视频在线观看|