锘??xml version="1.0" encoding="utf-8" standalone="yes"?>蜜桃av综合,老**午夜毛片一区二区三区,欧美午夜不卡在线观看免费http://m.shnenglu.com/eXile/category/9957.htmlzh-cnSun, 26 Apr 2009 22:19:25 GMTSun, 26 Apr 2009 22:19:25 GMT60[T] ICE瀹炰緥瀛︿範錛歀et's Chat! (2) 瀹炵幇鏈嶅姟鍣?/title><link>http://m.shnenglu.com/eXile/archive/2009/03/26/77897.html</link><dc:creator>eXile</dc:creator><author>eXile</author><pubDate>Wed, 25 Mar 2009 16:54:00 GMT</pubDate><guid>http://m.shnenglu.com/eXile/archive/2009/03/26/77897.html</guid><wfw:comment>http://m.shnenglu.com/eXile/comments/77897.html</wfw:comment><comments>http://m.shnenglu.com/eXile/archive/2009/03/26/77897.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/eXile/comments/commentRss/77897.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/eXile/services/trackbacks/77897.html</trackback:ping><description><![CDATA[<br><span style="FONT-SIZE: 18pt"><strong>鏈嶅姟鍣ㄥ疄鐜幫細</strong></span><br><br>       鏈嶅姟鍣ㄤ嬌鐢–++銆傛敞鎰忓畠鐨勭粨鏋勶細綾?ChatRoom 瀹炵幇浜嗗ぇ閮ㄥ垎鐨勫簲鐢ㄩ昏緫銆備負浜嗘敮鎸佹帹妯″瀷涓庢媺妯″瀷錛屾湇鍔″櫒瀹炵幇浜嗙被ChatSession 鍜岀被 PollingChatSession銆?ChatRoom 璋冪敤 ChatRoomCallbackAdapter 瀵硅薄鐨?send 鍑芥暟鏉ヤ紶閫掑鎴鋒秷鎭紝璇ュ璞¢殣钘忎簡涓ょ妯″瀷涔嬮棿鐨勫樊寮傘?br><br>ChatRoom 瀹炵幇錛?br><br>      ChatRoom鏄竴涓櫘閫氱殑C++瀵硅薄錛岃屼笉鏄竴涓猄ervant.<br> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> C++ </span><span style="COLOR: #008000"><br></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> ChatRoomCallbackAdapter { </span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"> <img src="http://m.shnenglu.com/Images/dot.gif"> </span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"> }; <br>typedef IceUtil::Handle</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">ChatRoomCallbackAdapter</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> ChatRoomCallbackAdapterPtr; <br> <br></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> ChatRoom : </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> IceUtil::Shared <br>{ <br></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">: <br>    </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> reserve(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">); <br>    </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> unreserve(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">); <br>    </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> join(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">, </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> ChatRoomCallbackAdapterPtr</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">); <br>    </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> leave(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">); <br>    Ice::Long send(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">, </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">); <br> <br></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">: <br>    typedef map</span><span style="COLOR: #000000"><</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">, ChatRoomCallbackAdapterPtr</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> ChatRoomCallbackMap; <br> <br>    ChatRoomCallbackMap _members; <br>    </span><span style="COLOR: #0000ff">set</span><span style="COLOR: #000000"><</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> _reserved; <br>    IceUtil::Mutex _mutex; <br>}; <br>typedef IceUtil::Handle</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">ChatRoom</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> ChatRoomPtr;</span></div> <p>      鎴愬憳_reserverd鏄竴涓瓧絎︿覆闆嗗悎錛屽畠瀛樺偍宸茬粡寤虹珛鍥炶瘽錛屼絾鏄繕娌℃湁鍔犲叆鑱婂ぉ瀹ょ殑瀹㈡埛鍚嶃俖members瀛樺偍褰撳墠鑱婂ぉ瀹ょ殑鎵鏈夌敤鎴鳳紙宸茬粡璋冪敤榪噅oin鍑芥暟鐨勭敤鎴鳳級銆?br><br>     鎴愬憳鍑芥暟 reserve 鍜?unreserve 緇存姢 _reserved 闆嗗悎銆?/p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> C++ </span><span style="COLOR: #008000"><br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> <br>ChatRoom::reserve(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> name) <br>{ <br>    IceUtil::Mutex::Lock sync(_mutex); <br>    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(_reserved.find(name) </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> _reserved.end() </span><span style="COLOR: #000000">||</span><span style="COLOR: #000000"> _members.find(name) </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> _members.end()) <br>    { <br>        </span><span style="COLOR: #0000ff">throw</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">The name </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> name </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> is already in use.</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">); <br>    } <br>    _reserved.insert(name); <br>} <br> <br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> <br>ChatRoom::unreserve(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> name) <br>{ <br>    IceUtil::Mutex::Lock sync(_mutex); <br>    _reserved.erase(name); <br>}</span></div> <p><br>     join鎿嶄綔娣誨姞鐢ㄦ埛鍒拌亰澶╁銆?/p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> C++ </span><span style="COLOR: #008000"><br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> <br>ChatRoom::join(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> name, </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> ChatRoomCallbackAdapterPtr</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> callback) <br>{ <br>    IceUtil::Mutex::Lock sync(_mutex); <br>    IceUtil::Int64 timestamp </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> IceUtil::Time::now().toMilliSeconds(); <br>    _reserved.erase(name); <br> <br>    Ice::StringSeq names; <br>    ChatRoomCallbackMap::const_iterator q; <br>    </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(q </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> _members.begin(); q </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> _members.end(); </span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">q) <br>    { <br>        names.push_back((</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">q).first); <br>    } <br> <br>    callback</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">init(names); <br> <br>    _members[name] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> callback; <br> <br>    UserJoinedEventPtr e </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> UserJoinedEvent(timestamp, name); <br>    </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(q </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> _members.begin(); q </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> _members.end(); </span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">q) <br>    { <br>        q</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">second</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">join(e); <br>    } <br>}<br></span></div> <p><br>      send瀹炵幇錛屽悓join瀹炵幇闈炲父綾諱技錛?/p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> C++ </span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">Ice::Long <br>ChatRoom::send(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> name, </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> message) <br>{ <br>    IceUtil::Mutex::Lock sync(_mutex); <br>    IceUtil::Int64 timestamp </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> IceUtil::Time::now().toMilliSeconds(); <br> <br>    MessageEventPtr e </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> MessageEvent(timestamp, name, message); <br>    </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(ChatRoomCallbackMap::iterator q </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> _members.begin(); q </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> _members.end(); </span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">q) <br>    { <br>        q</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">second</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">send(e); <br>    } <br>    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> timestamp; <br>}</span></div> <p> </p> <p> 綾?ChatRoomCallbackAdapter<br><br></p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> C++ </span><span style="COLOR: #008000"><br></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> ChatRoomCallbackAdapter : </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> IceUtil::Shared <br>{ <br></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">: <br>    </span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> init(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> Ice::StringSeq</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; <br>    </span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> join(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> UserJoinedEventPtr</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; <br>    </span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> leave(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> UserLeftEventPtr</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; <br>    </span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> send(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> MessageEventPtr</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; <br>};</span></div> <br>鎺ㄦā寮?CallbackAdapter 瀹炵幇錛? <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> SessionCallbackAdapter : </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> ChatRoomCallbackAdapter <br>{ <br></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">: <br>    SessionCallbackAdapter(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> ChatRoomCallbackPrx</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> callback, </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> ChatSessionPrx</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> session)    : _callback(callback), _session(session) <br>    { <br>    } <br> <br>    </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> init(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> Ice::StringSeq</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> users) <br>    { <br>        _callback</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">init_async(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> AMICallback</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">AMI_ChatRoomCallback_init</span><span style="COLOR: #000000">></span><span style="COLOR: #000000">(_session), users); <br>    } <br> <br>    </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> join(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> UserJoinedEventPtr</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> e) <br>    { <br>        _callback</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">join_async(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> AMICallback</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">AMI_ChatRoomCallback_join</span><span style="COLOR: #000000">></span><span style="COLOR: #000000">(_session), <br>                              e</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">timestamp, <br>                              e</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">name); <br>    } <br> <br>    </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> leave(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> UserLeftEventPtr</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> e) <br>    { <br>        _callback</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">leave_async(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> AMICallback</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">AMI_ChatRoomCallback_leave</span><span style="COLOR: #000000">></span><span style="COLOR: #000000">(_session), <br>                               e</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">timestamp, <br>                               e</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">name); <br>    } <br> <br>    </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> send(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> MessageEventPtr</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> e) <br>    { <br>        _callback</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">send_async(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> AMICallback</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">AMI_ChatRoomCallback_send</span><span style="COLOR: #000000">></span><span style="COLOR: #000000">(_session), <br>                              e</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">timestamp, <br>                              e</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">name, <br>                              e</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">message); <br>    } <br> <br></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">: <br>    </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> ChatRoomCallbackPrx _callback; <br>    </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> ChatSessionPrx _session; <br>};<br></span></div> <br>      鐪嬩竴涓婼essionCallbackAdapter鐨勫洓涓垚鍛樺嚱鏁幫紝褰撳紓姝ヨ皟鐢ㄥ畬鎴愭椂錛岄兘浣跨敤綾籄MICallback鏉ユ帴鏀墮氱煡銆傚畠鐨勫畾涔夊涓嬶細<br> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">template</span><span style="COLOR: #000000"><</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> T</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> AMICallback : </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> T <br>{ <br></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">: <br>    AMICallback(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> ChatSessionPrx</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> session) : _session(session) <br>    { <br>    }<br>    </span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> ice_response() <br>    { <br>    } <br> <br>    </span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> ice_exception(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> Ice::Exception</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">) <br>    { <br>        </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"> <br>        { <br>            _session</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">destroy(); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Collocated </span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">        } <br>        </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> Ice::LocalException</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">) <br>        { <br>        } <br>    } <br> <br></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">: <br>    </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> ChatSessionPrx _session; <br>};<br></span></div>        褰撶敤鎴峰洖璋冩搷浣滄姏鍑哄紓甯革紝鏈嶅姟鍣ㄧ珛鍗抽攢姣佸鎴蜂細璇濓紝鍗蟲妸璇ョ敤鎴瘋刀鍑鴻亰澶╁銆傝繖鏄洜涓猴紝涓鏃﹀鎴風殑鍥炶皟瀵硅薄鍑虹幇浜嗕竴嬈″紓甯革紝瀹冧互鍚庝篃灝變笉鍙兘鍐嶆甯搞?br><br><br><span style="FONT-SIZE: 14pt">鎺ㄦā寮忎細璇濆垱寤?/span>錛?br><br>     鐜板湪鏉ョ湅涓涓嬩細璇濆垱寤恒傛帹妯″紡鐨勫鎴蜂嬌鐢℅lacier2錛屾墍浠ヨ浣跨敤Glacier2鐨勪細璇濆垱寤烘満鍒躲侴lacier2 鍏佽鐢ㄦ埛閫氳繃鎻愪緵涓涓狦lacier2::SessionManager瀵硅薄鐨勪唬鐞嗘潵鑷畾涔変細璇濆垱寤烘満鍒躲傞氳繃璁劇疆Glacier2.SessionManager灞炴ф潵閰嶇疆Gloacier2錛屽氨鍙互浣跨敤鑷繁鐨勪細璇濈鐞嗗櫒銆備細璇濈鐞嗗櫒闄や簡涓涓猼rivial鏋勯犲嚱鏁幫紙璁劇疆鑱婂ぉ瀹ゆ寚閽堬級錛屽彧鏈変竴涓搷浣滐紝create錛孏lacier2璋冪敤瀹冩潵浠g悊搴旂敤鐨勪細璇濆垱寤恒?create 鎿嶄綔蹇呴』榪斿洖涓涓細璇濅唬鐞嗭紙綾誨瀷涓篏lacier2::Session*錛夈傚疄鐜板涓嬶細<br> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">Glacier2::SessionPrx <br>ChatSessionManagerI::create(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> name,<br>                            </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> Glacier2::SessionControlPrx</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">, <br>                            </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> Ice::Current</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> c) <br>{ <br>    </span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000"> vname; <br>    </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"> <br>    { <br>        vname </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> validateName(name); <br>        _chatRoom</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">reserve(vname); <br>    } <br>    </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> reason) <br>    { <br>       </span><span style="COLOR: #0000ff">throw</span><span style="COLOR: #000000"> CannotCreateSessionException(reason); <br>    } <br> <br>    Glacier2::SessionPrx proxy; <br>    </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"> <br>    { <br>        ChatSessionIPtr session </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ChatSessionI(_chatRoom, vname); <br>        proxy </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> SessionPrx::uncheckedCast(c.adapter</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">addWithUUID(session)); <br> <br>        Ice::IdentitySeq ids; <br>        ids.push_back(proxy</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">ice_getIdentity()); <br>        sessionControl</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">identities()</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">add(ids); <br>    } <br>    </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> Ice::LocalException</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">) <br>    { <br>        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(proxy) <br>        { <br>            proxy</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">destroy(); <br>        } <br>        </span><span style="COLOR: #0000ff">throw</span><span style="COLOR: #000000"> CannotCreateSessionException(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Internal server error</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">); <br>    } <br>    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> proxy; <br>}</span></div> <br>     棣栧厛璋冪敤涓涓畝鍗曠殑甯姪鍑芥暟 validateName, 鏉ユ鏌ヤ紶閫掔殑鐢ㄦ埛鍚嶆槸鍚﹀寘鍚潪娉曞瓧絎︼紝騫舵妸瀹冭漿涓哄ぇ鍐欙紝鐒跺悗璋冪敤 reserver鍑芥暟鎶婂畠鍔犲埌鑱婂ぉ瀹ょ殑_reserved闆嗗悎涓傛垜浠鐩戣榪欎簺鎿嶄綔鎶涘嚭鐨勬秷鎭紝騫舵妸瀹冭漿鍖栦負Glacide2::CannotCreateSessionException寮傚父錛屽嵆鍦╟reate鎿嶄綔鐨勫紓甯歌鑼冨0鏄庣殑寮傚父銆?br>     鎺ョ潃瀹炰緥鍖栦竴涓狢hatSessionI瀵硅薄錛堣涓嬮潰錛夋潵鍒涘緩浼氳瘽銆傛敞鎰忚繖涓細璇濅嬌鐢║UID浣滀負瀵硅薄鏍囪瘑錛屾墍浠ヤ繚璇佹爣璇嗙鍞竴銆?br>    鏈鍚庯紝娣誨姞榪欎釜鏂板垱寤虹殑浼氳瘽鏍囪瘑錛孏llacier2鍙氳繃瀹冩潵杞彂緇忚繃榪欎釜浼氳瘽鐨勮姹傘傚疄闄呬笂錛?#8220;鍙漿鍙戠粡榪囪繖涓細璇濈殑騫朵笖鍙埌榪欎釜浼氳瘽鐨勮姹?#8221;錛岃繖鏄竴縐嶅畨鍏ㄧ殑鍔炴硶錛氬鏋滄湁鎭舵剰瀹㈡埛鑳界寽鍑哄彟涓涓鎴蜂細璇濈殑鏍囪瘑錛屽畠涔熶笉鑳藉悜鍒殑瀵硅薄鍙戦佽姹傦紙鍙兘鍦ㄩ櫎浜嗚亰澶╂湇鍔″櫒涔嬪鐨勬湇鍔″櫒涓婏級銆傚鏋滃嚭閿欙紝灝遍攢姣佸垰鍒涘緩鐨勪細璇濆璞★紝榪欐牱閬垮厤浜嗚祫婧愭硠闇層?br>       榪欏氨鏄埄鐢℅lacier2鍒涘緩浼氳瘽鐨勫叏閮ㄣ傚鏋滀綘甯屾湜浣跨敤Glacier2鐨勮璇佹満鍒訛紝鍙互璁劇疆灞炴lacier2.PermissionsVerifier涓烘墽琛岃璇佺殑瀵硅薄浠g悊銆傦紙Glacier2鎻愪緵涓涓唴緗殑鏉冮檺楠岃瘉鍣紝NullPermissionsVerifier錛屽彲浠ユ鏌ョ敤鎴峰悕鍜屽瘑鐮侊級銆?br>       鍥撅細浼氳瘽鍒涘緩浜や簰鍥撅紙鐣ワ級<br><br>       ChatSessionI綾誨疄鐜頒簡ChatSession鎺ュ彛銆?br> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> ChatSessionI : </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> ChatSession <br>{ <br></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">: <br>    ChatSessionI(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> ChatRoomPtr</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">, </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">); <br> <br>    </span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> setCallback(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> ChatRoomCallbackPrx</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">, </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> Ice::Current</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">); <br>    </span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000"> Ice::Long send(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">, </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> Ice::Current</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">); <br>    </span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> destroy(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> Ice::Current</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">); <br> <br></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">: <br>    </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> ChatRoomPtr _chatRoom; <br>    </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000"> _name; <br>    ChatRoomCallbackAdapterPtr _callback; <br>    </span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000"> _destroy; <br>    IceUtil::Mutex _mutex; <br>}; <br>typedef IceUtil::Handle</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">ChatSessionI</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> ChatSessionIPtr;</span></div>          鏋勯犲嚱鏁拌緗亰澶╁鍜岀敤鎴峰悕錛屽茍鎶奯destroy璁劇疆涓篎alse.<br>       <br>        鐢變簬Glacier2::create鎿嶄綔涓嶅厑璁鎬紶閫掍唬鐞嗭紝蹇呴』鎶婂垱寤轟細璇濆拰璁劇疆鍥炶皟鍒嗘垚涓ゆ銆傝繖鏄痵etCallback鐨勫疄鐜幫紱<br> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> <br>ChatSessionI::setCallback(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> ChatRoomCallbackPrx</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> callback, </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> Ice::Current</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> c) <br>{ <br>    IceUtil::Mutex::Lock sync(_mutex); <br>    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(_destroy) <br>    { <br>        </span><span style="COLOR: #0000ff">throw</span><span style="COLOR: #000000"> Ice::ObjectNotExistException(__FILE__, __LINE__); <br>    } <br> <br>    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(_callback </span><span style="COLOR: #000000">||</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">callback) <br>    { <br>        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">; <br>    } <br> <br>    Ice::Context ctx; <br>    ctx[</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">_fwd</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">o</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">; <br>    _callback </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> SessionCallbackAdapter(callback</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">ice_context(ctx), <br>                                           ChatSessionPrx::uncheckedCast( <br>                                               c.adapter</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">createProxy(c.id))); <br>    _chatRoom</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">join(_name, _callback); <br>}</span></div> <p>      娉ㄦ剰錛屽湪浣跨敤join浼犻掍唬鐞嗕箣鍓嶏紝鍚戝鎴蜂唬鐞嗘坊鍔犱簡涓涓間負 "o" 鐨刜fwd涓婁笅鏂囥傚畠鎻愮ずGlacier浣跨敤鍗曞悜璋冪敤鏉ヨ漿鍙戝鎴峰洖璋冦傝繖鏍鋒瘮鍙屽悜璋冪敤鏇村姞鏈夋晥銆傚洜涓烘墍鏈夌殑鍥炶皟鎿嶄綔鍧囦負void榪斿洖鍊鹼紝鎵浠ュ彲浠ュ崟鍚戣皟鐢ㄣ?br>     鏈嶅姟鍣ㄧ殑鍥炶皟涓烘櫘閫氱殑鍙屽悜璋冪敤銆傝繖鏍峰綋鍑洪敊鏃跺彲浠ラ氱煡鏈嶅姟鍣ㄣ傚綋瀹㈡埛绔嚭閿欐椂錛岃繖涓緇撴潫瀹㈡埛浼氳瘽寰堟湁鐢ㄣ?br><br>     涓鏃﹀鎴瘋皟鐢ㄤ簡setCallback錛屽氨鍙互鎺ユ敹鑱婂ぉ瀹ょ殑鍚勭琛屼負閫氱煡銆備笅涓簊end瀹炵幇錛?/p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">Ice::Long <br>ChatSessionI::send(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> message, </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> Ice::Current</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">) <br>{ <br>    IceUtil::Mutex::Lock sync(_mutex); <br>    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(_destroy) <br>    { <br>        </span><span style="COLOR: #0000ff">throw</span><span style="COLOR: #000000"> Ice::ObjectNotExistException(__FILE__, __LINE__); <br>    } <br>    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">_callback) <br>    { <br>        </span><span style="COLOR: #0000ff">throw</span><span style="COLOR: #000000"> InvalidMessageException(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">You cannot send messages until you joined the chat.</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">); <br>    } <br>    </span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">; <br>    </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"> <br>    { <br>        msg </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> validateMessage(message); <br>    } <br>    </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> reason) <br>    { <br>        </span><span style="COLOR: #0000ff">throw</span><span style="COLOR: #000000"> InvalidMessageException(reason); <br>    } <br>    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> _chatRoom</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">send(_name, msg); <br>}</span></div> <p> <br>    瀹㈡埛瑕佺寮鑱婂ぉ瀹わ紝鍙璋冪敤 destory.</p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> <br>ChatSessionI::destroy(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> Ice::Current</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> c) <br>{ <br>    IceUtil::Mutex::Lock sync(_mutex); <br>    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(_destroy) <br>    { <br>        </span><span style="COLOR: #0000ff">throw</span><span style="COLOR: #000000"> Ice::ObjectNotExistException(__FILE__, __LINE__); <br>    } <br>    </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"> <br>    { <br>        c.adapter</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">remove(c.id);<br>        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(_callback </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">) <br>        { <br>            _chatRoom</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">unreserve(_name); <br>        } <br>        </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"> <br>        { <br>            _chatRoom</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">leave(_name); <br>        } <br>    } <br>    </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> Ice::ObjectAdapterDeactivatedException</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">) <br>    { <br>        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> No need to clean up, the server is shutting down. </span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">    } <br>    _destroy </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">; <br>}</span></div> <p> </p> <p> </p> <img src ="http://m.shnenglu.com/eXile/aggbug/77897.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/eXile/" target="_blank">eXile</a> 2009-03-26 00:54 <a href="http://m.shnenglu.com/eXile/archive/2009/03/26/77897.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>[T] ICE瀹炰緥瀛︿範錛歀et's Chat! 鑺傝瘧 (1)http://m.shnenglu.com/eXile/archive/2009/03/25/77890.htmleXileeXileWed, 25 Mar 2009 15:52:00 GMThttp://m.shnenglu.com/eXile/archive/2009/03/25/77890.htmlhttp://m.shnenglu.com/eXile/comments/77890.htmlhttp://m.shnenglu.com/eXile/archive/2009/03/25/77890.html#Feedback0http://m.shnenglu.com/eXile/comments/commentRss/77890.htmlhttp://m.shnenglu.com/eXile/services/trackbacks/77890.htmlhttp://www.zeroc.com/articles/index.html

闇姹?br>
      1錛変竴涓吀鍨嬬殑鑱婂ぉ瀹ゅ簲鐢紝浣跨敤瀹㈡埛鍣?鏈嶅姟鍣ㄦ灦鏋勶紝瀹㈡埛鍙戦佹秷鎭埌涓績鏈嶅姟鍣紝鐒跺悗錛屾秷鎭彂閫佺粰鍏跺畠瀹㈡埛銆?br>      2錛夊敖閲忓噺灝戞湇鍔″櫒綆$悊錛岀敋鑷沖彲浠ヤ笉闇瑕併?br>      3錛夐氫俊蹇呴』瀹夊叏錛岄氳繃鍏叡緗戠粶鏃跺繀欏昏淇濇姢涓漢闅愮銆?br>      4錛夊綋瀹㈡埛绔拰鏈嶅姟鍣ㄦ湁闃茬伀澧欎繚鎶ゆ椂涔熻兘姝e父榪愯錛屽鎴風涓嶇敤淇敼瀹冪殑緗戠粶鎴栬呴槻鐏璁劇疆銆?br>      5錛夊鎴風鍙互鍦ㄥ悇縐嶅鉤鍙頒笂鍒╃敤澶氱璇█瀹炵幇錛屾瘮濡傝鍒╃敤Web嫻忚鍣ㄤ綔涓哄鎴風銆?br>      6錛夊鎴風鍙兘緗戠粶甯﹀鏈夐檺錛屾墍浠ュ簲璇ュ敖閲忓噺灝戠綉緇滄祦閲忋?br>      鍙敮鎸佸崟涓亰澶╁銆傦紙澶氫釜鑱婂ぉ瀹ゅ彧鏄唬鐮佸浜嗙偣錛屽茍娌℃湁澧炲姞浠諱綍闅懼害錛夈?br>
璁捐

      鍦ㄦ湰鏂囦腑錛屽皢浼氭紨紺哄縐嶅鎴風鐨勮璁″拰瀹炵幇銆傚寘鎷細
      1錛塁++鍛戒護琛屽鎴風錛?br>      2錛塉AVA SWing GUI瀹㈡埛绔紱
      3錛?NET WPF瀹㈡埛绔紱
      4錛塒HP緗戦〉瀹㈡埛绔紱
      5錛塖ilverlight 緗戦〉瀹㈡埛绔紱
     
     娉ㄦ剰錛屽浜嶪CE3.3, PHP鍜孯uby鍙彁渚涗簡瀹㈡埛绔殑Run Time銆傛垜浠湪鑰冭檻褰撹繛鎺ョ殑瀹㈡埛濡備綍浠庢湇鍔″櫒鑾峰緱娑堟伅鏃訛紝蹇呴』瑕佹兂鍒拌繖涓鐐廣傚浜庢秷鎭彂甯冿紝鏈変袱縐嶉氫俊妯″瀷錛?br>     1錛夋帹妯″瀷錛氱暐
     2錛夋媺妯″瀷錛氱暐
     鎺ㄦā鍨嬫瘮杈冪畝鍗曪紝瀹規槗瀹炵幇錛屾垜浠殑Chat 瀹㈡埛绔腑錛孋++錛孞ava, .Net, Silverlight(0.3)閮戒嬌鐢ㄨ妯″瀷銆侾HP瀹㈡埛绔嬌鐢ㄦ媺妯″瀷銆?br>
鎺ㄦā鍨嬪畾涔?br>     姣忎釜瀹㈡埛绔腑鎻愪緵涓涓?ChatRoomCallback 綾誨瀷鐨処CE瀵硅薄鍒版湇鍔″櫒銆傚綋鍙戠敓浜嬩歡鏃訛紝鏈嶅姟鍣ㄨ皟鐢ㄨ瀵硅薄鐨勬搷浣滈氱煡瀹㈡埛銆係LICE瀹氫箟濡備笅錛?br>
// Slice 
module Chat 

// Implemented by clients 
interface ChatRoomCallback 

    [
"ami"void init(Ice::StringSeq users); 
    [
"ami"void join(long timestamp, string name); 
    [
"ami"void leave(long timestamp, string name); 
    [
"ami"void send(long timestamp, string name, string message); 
}; 
};

     1錛夊綋鐢ㄦ埛棣栨榪炴帴鍒拌亰澶╁鏃訛紝鏈嶅姟鍣ㄨ皟鐢?init 鎿嶄綔.     users鍙傛暟鍛婅瘔鐢ㄦ埛鐩墠榪炴帴鍒拌亰澶╁鐨勬墍鏈夌敤鎴蜂俊鎭?br>     2錛夋湁鐢ㄦ埛榪炴帴鍒拌亰澶╁鏃訛紝鏈嶅姟鍣ㄨ皟鐢?join 鎿嶄綔銆?br>     3錛夋湁鐢ㄦ埛鏂紑榪炴帴鏃訛紝鏈嶅姟鍣ㄨ皟鐢?nbsp;leave 鎿嶄綔銆?br>     4錛夋湁鐢ㄦ埛鍙戦佹秷鎭椂錛屾湇鍔″櫒璋冪敤 send 鎿嶄綔銆?br>     娉ㄦ剰璁捐浣跨敤寮傛浜嬩歡銆傚厓鏁版嵁鎸囦護 ["ami"] 鏍囨槑鏈嶅姟鍣ㄥ紓姝ヨ皟鐢ㄥ洖璋冩搷浣溿傚綋瀹㈡埛绔涓哄紓甯告椂錛岃繖瀵規湇鍔″櫒鏄竴涓繚鎶わ細瀹㈡埛绔彲鑳介暱鏃墮棿闃誨錛屾湇鍔″櫒璋冪敤鏈熼棿涓嶄細鍥犳澶卞幓瀵圭嚎紼嬬殑鎺у埗銆?br>
涓庨槻鐏鍗忎綔
      鐣?.....

      Glacer2鏄疘CE閽堝榪欑鎯呭喌鐨勯寤虹殑瑙e喅鏂規錛屽畠鎵紨涓涓湇鍔″櫒鍓嶇銆侴lacer2鍏鋒湁浠ヤ笅鐗瑰緛錛?br>      1錛夋敮鎸佷細璇濇蹇碉紝API鏀寔璁よ瘉鏈哄埗錛屽彲瀹炵幇鑷畾涔夌殑浼氳瘽鍒涘緩鍜岃璇併?br>      2錛夊崟涓狦lacer2鍙繘琛屼換鎰忔暟閲忕殑鏈嶅姟鍣ㄥ拰瀹㈡埛绔漿鍙戙傛湇鍔″櫒鍙鏈変竴涓鍙f帴鍙楀鏉ヨ繛鎺ワ紝鑰屼笉鐢ㄧ鍏蜂綋鏈嶅姟鍣ㄤ釜鏁般?br>     3錛夊浜庡叿鏈夐槻鐏鐨勫鎴風錛屾湇鍔″櫒涔熷彲璋冪敤鍏舵彁渚涚殑鍥炶皟銆?br>
     鍥犱負 Glacer2浼氳瘽姒傚康鏄潰鍚戣繛鎺ョ殑錛屽彧鏈夊綋瀹㈡埛绔悓Glacer2鐨勮繛鎺ユ墦寮鏃訛紝鏇寸簿紜殑璇達紝鍚孏lacer2淇濇寔涓涓縺媧葷殑浼氳瘽鏃訛紝鏈嶅姟鍣ㄦ墠鍙互瀵瑰鎴瘋繘琛屽洖璋冦傛崲鍙ヨ瘽璇達紝褰撳鎴風鍚孏lacer2澶卞幓榪炴帴錛孏lacer2鑷姩閿姣佷細璇濄備負浜嗛樆姝㈠鎴風鍒癎lacer2鐨勮繛鎺ヨ鎰忓鍏抽棴錛屽鎴風蹇呴』瑕佺鐢ˋCM錛圓utomic Connection Management, 鑷姩榪炴帴綆$悊錛夈傝屼笖錛孏lacer2閫氬父瀵歸暱鏃墮棿絀洪棽鐨勪細璇濊緗秴鏃躲傚綋鑱婂ぉ瀹ら暱鏃墮棿娌℃湁鍔ㄤ綔鏃訛紝涓轟簡闃叉Glacer2閿姣佷細璇濓紝瀹㈡埛绔繀欏誨懆鏈熸ц繘琛屾縺媧伙紝姣斿錛岃皟鐢?ice_ping, 鏉ュGlacer2鐨勪細璇濊秴鏃惰繘琛岄噸緗?br>
     Chat瀹㈡埛绔氳繃鏈嶅姟鍣ㄦ彁渚涚殑 ChatSession鎺ュ彛鏉ュ拰鏈嶅姟鍣ㄩ氫俊銆?ChatSession 浠嶨lacer2::Session媧劇敓銆?br>
// Slice 
module Chat 

exception InvalidMessageException 

    
string reason; 
}; 
 
interface ChatSession extends Glacier2::Session 

    
void setCallback(ChatRoomCallback* cb); 
    [
"ami"long send(string message) throws InvalidMessageException; 
}; 
};

      榪欏氨鏄帹妯″瀷錛孋hat瀹㈡埛绔皟鐢–hatSession鐨剆end鏉ュ彂閫佹秷鎭紝鏈嶅姟鍣ㄨ皟鐢ㄦ瘡涓涓鎴風殑ChatRoomCallback鐨剆end鎿嶄綔榪涜鍒嗗彂銆?br>
鎷夋ā鍨嬪畾涔?br>
TODO




eXile 2009-03-25 23:52 鍙戣〃璇勮
]]>
鐢↖CE瀹炵幇涓涓畝鍗曠殑鑱婂ぉ瀹?/title><link>http://m.shnenglu.com/eXile/archive/2009/01/04/ice.html</link><dc:creator>eXile</dc:creator><author>eXile</author><pubDate>Sat, 03 Jan 2009 17:32:00 GMT</pubDate><guid>http://m.shnenglu.com/eXile/archive/2009/01/04/ice.html</guid><wfw:comment>http://m.shnenglu.com/eXile/comments/71099.html</wfw:comment><comments>http://m.shnenglu.com/eXile/archive/2009/01/04/ice.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://m.shnenglu.com/eXile/comments/commentRss/71099.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/eXile/services/trackbacks/71099.html</trackback:ping><description><![CDATA[     鎽樿: 鑱婂ぉ瀹ゆ槸涓縐嶅吀鍨嬬殑緗戠粶搴旂敤錛岃繖涓▼搴忔紨紺轟簡ICE妗嗘灦鐨勫熀鏈粨鏋勩?nbsp; <a href='http://m.shnenglu.com/eXile/archive/2009/01/04/ice.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/eXile/aggbug/71099.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/eXile/" target="_blank">eXile</a> 2009-01-04 01:32 <a href="http://m.shnenglu.com/eXile/archive/2009/01/04/ice.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <a href="http://m.shnenglu.com/">青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品</a> <div style="position:fixed;left:-9000px;top:-9000px;"><font id="pjuwb"></font><button id="pjuwb"><pre id="pjuwb"></pre></button><sub id="pjuwb"></sub><tbody id="pjuwb"><var id="pjuwb"><address id="pjuwb"></address></var></tbody><listing id="pjuwb"><label id="pjuwb"><strong id="pjuwb"></strong></label></listing><wbr id="pjuwb"><small id="pjuwb"><tbody id="pjuwb"></tbody></small></wbr><ins id="pjuwb"><xmp id="pjuwb"></xmp></ins><style id="pjuwb"></style><label id="pjuwb"><em id="pjuwb"><li id="pjuwb"></li></em></label><samp id="pjuwb"></samp><menu id="pjuwb"><input id="pjuwb"></input></menu><pre id="pjuwb"><tbody id="pjuwb"><tfoot id="pjuwb"><button id="pjuwb"></button></tfoot></tbody></pre><form id="pjuwb"></form><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"><sup id="pjuwb"></sup></label></style></i><li id="pjuwb"><table id="pjuwb"><abbr id="pjuwb"></abbr></table></li><video id="pjuwb"></video><dfn id="pjuwb"></dfn><progress id="pjuwb"></progress><strong id="pjuwb"></strong><mark id="pjuwb"></mark><em id="pjuwb"></em><tbody id="pjuwb"><p id="pjuwb"><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike></p></tbody><option id="pjuwb"></option><strike id="pjuwb"></strike><u id="pjuwb"></u><td id="pjuwb"><center id="pjuwb"><tr id="pjuwb"></tr></center></td><em id="pjuwb"><mark id="pjuwb"><em id="pjuwb"><tt id="pjuwb"></tt></em></mark></em><strong id="pjuwb"></strong><wbr id="pjuwb"></wbr><s id="pjuwb"></s><strong id="pjuwb"></strong><legend id="pjuwb"></legend><nav id="pjuwb"></nav><dl id="pjuwb"><th id="pjuwb"><dl id="pjuwb"></dl></th></dl><noframes id="pjuwb"><ins id="pjuwb"></ins></noframes><font id="pjuwb"></font><strike id="pjuwb"><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"></label></style></i></strike><output id="pjuwb"></output><thead id="pjuwb"><pre id="pjuwb"></pre></thead><source id="pjuwb"></source><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem><pre id="pjuwb"><span id="pjuwb"><pre id="pjuwb"><big id="pjuwb"></big></pre></span></pre><cite id="pjuwb"><fieldset id="pjuwb"><s id="pjuwb"><rt id="pjuwb"></rt></s></fieldset></cite><big id="pjuwb"><progress id="pjuwb"><big id="pjuwb"></big></progress></big><samp id="pjuwb"><delect id="pjuwb"></delect></samp><dl id="pjuwb"></dl><strike id="pjuwb"><nav id="pjuwb"><dl id="pjuwb"><strong id="pjuwb"></strong></dl></nav></strike><tbody id="pjuwb"><b id="pjuwb"><optgroup id="pjuwb"><rp id="pjuwb"></rp></optgroup></b></tbody><em id="pjuwb"></em><xmp id="pjuwb"><blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote></xmp> <i id="pjuwb"><abbr id="pjuwb"><i id="pjuwb"><abbr id="pjuwb"></abbr></i></abbr></i><center id="pjuwb"><acronym id="pjuwb"><center id="pjuwb"></center></acronym></center><pre id="pjuwb"></pre><ul id="pjuwb"><thead id="pjuwb"></thead></ul><blockquote id="pjuwb"><pre id="pjuwb"><sup id="pjuwb"></sup></pre></blockquote><acronym id="pjuwb"></acronym><big id="pjuwb"><s id="pjuwb"></s></big><th id="pjuwb"></th><th id="pjuwb"></th><tbody id="pjuwb"></tbody><thead id="pjuwb"><strike id="pjuwb"></strike></thead><th id="pjuwb"><dl id="pjuwb"><wbr id="pjuwb"></wbr></dl></th><dl id="pjuwb"><strong id="pjuwb"></strong></dl><abbr id="pjuwb"><noframes id="pjuwb"><noscript id="pjuwb"></noscript></noframes></abbr><td id="pjuwb"><ol id="pjuwb"></ol></td><li id="pjuwb"><noscript id="pjuwb"><abbr id="pjuwb"></abbr></noscript></li><small id="pjuwb"><bdo id="pjuwb"><nav id="pjuwb"></nav></bdo></small><style id="pjuwb"></style><optgroup id="pjuwb"><table id="pjuwb"></table></optgroup><center id="pjuwb"><tr id="pjuwb"><dfn id="pjuwb"></dfn></tr></center><th id="pjuwb"></th><u id="pjuwb"></u><tfoot id="pjuwb"><legend id="pjuwb"><i id="pjuwb"></i></legend></tfoot><mark id="pjuwb"></mark><meter id="pjuwb"></meter><nav id="pjuwb"></nav><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><nobr id="pjuwb"></nobr><sub id="pjuwb"><th id="pjuwb"><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem></th></sub><thead id="pjuwb"><sub id="pjuwb"></sub></thead><ul id="pjuwb"><address id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></address></ul><dfn id="pjuwb"></dfn><pre id="pjuwb"></pre><input id="pjuwb"><cite id="pjuwb"><fieldset id="pjuwb"></fieldset></cite></input><u id="pjuwb"><form id="pjuwb"><u id="pjuwb"></u></form></u><kbd id="pjuwb"><em id="pjuwb"><mark id="pjuwb"></mark></em></kbd><tr id="pjuwb"></tr><del id="pjuwb"><form id="pjuwb"><address id="pjuwb"></address></form></del><tfoot id="pjuwb"><legend id="pjuwb"><ol id="pjuwb"><dl id="pjuwb"></dl></ol></legend></tfoot><menu id="pjuwb"><nobr id="pjuwb"><th id="pjuwb"><nobr id="pjuwb"></nobr></th></nobr></menu><fieldset id="pjuwb"></fieldset><pre id="pjuwb"><blockquote id="pjuwb"><samp id="pjuwb"></samp></blockquote></pre><xmp id="pjuwb"><sup id="pjuwb"><pre id="pjuwb"></pre></sup></xmp><span id="pjuwb"><progress id="pjuwb"></progress></span><font id="pjuwb"></font><var id="pjuwb"><abbr id="pjuwb"></abbr></var><strong id="pjuwb"><label id="pjuwb"><i id="pjuwb"><legend id="pjuwb"></legend></i></label></strong><tr id="pjuwb"><em id="pjuwb"><em id="pjuwb"><output id="pjuwb"></output></em></em></tr><thead id="pjuwb"><strike id="pjuwb"></strike></thead> <acronym id="pjuwb"></acronym><i id="pjuwb"></i><tt id="pjuwb"></tt><rt id="pjuwb"><source id="pjuwb"><rt id="pjuwb"></rt></source></rt><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike><del id="pjuwb"></del><font id="pjuwb"><output id="pjuwb"><ins id="pjuwb"><output id="pjuwb"></output></ins></output></font><kbd id="pjuwb"><tr id="pjuwb"><kbd id="pjuwb"></kbd></tr></kbd><pre id="pjuwb"><sup id="pjuwb"><delect id="pjuwb"><samp id="pjuwb"></samp></delect></sup></pre><samp id="pjuwb"></samp><track id="pjuwb"></track><tr id="pjuwb"></tr><center id="pjuwb"></center><fieldset id="pjuwb"></fieldset><i id="pjuwb"></i><td id="pjuwb"></td><rt id="pjuwb"></rt><object id="pjuwb"></object><pre id="pjuwb"><progress id="pjuwb"><sub id="pjuwb"><thead id="pjuwb"></thead></sub></progress></pre><kbd id="pjuwb"><tr id="pjuwb"><option id="pjuwb"></option></tr></kbd><output id="pjuwb"><ins id="pjuwb"></ins></output><ol id="pjuwb"></ol><source id="pjuwb"></source><strong id="pjuwb"></strong><ruby id="pjuwb"></ruby><sub id="pjuwb"><meter id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></meter></sub><pre id="pjuwb"></pre><center id="pjuwb"></center><tr id="pjuwb"><tbody id="pjuwb"><xmp id="pjuwb"><dd id="pjuwb"></dd></xmp></tbody></tr><video id="pjuwb"></video><pre id="pjuwb"></pre><form id="pjuwb"><optgroup id="pjuwb"></optgroup></form><samp id="pjuwb"></samp><kbd id="pjuwb"></kbd><strong id="pjuwb"><option id="pjuwb"></option></strong><object id="pjuwb"></object><abbr id="pjuwb"><noframes id="pjuwb"><abbr id="pjuwb"></abbr></noframes></abbr><ul id="pjuwb"><del id="pjuwb"><button id="pjuwb"><pre id="pjuwb"></pre></button></del></ul><abbr id="pjuwb"></abbr><strong id="pjuwb"><code id="pjuwb"><strong id="pjuwb"></strong></code></strong><option id="pjuwb"></option><optgroup id="pjuwb"><bdo id="pjuwb"><code id="pjuwb"></code></bdo></optgroup><mark id="pjuwb"><em id="pjuwb"><font id="pjuwb"></font></em></mark><acronym id="pjuwb"><code id="pjuwb"></code></acronym><dl id="pjuwb"></dl><em id="pjuwb"></em><object id="pjuwb"><input id="pjuwb"><object id="pjuwb"></object></input></object><output id="pjuwb"><dd id="pjuwb"></dd></output><option id="pjuwb"><button id="pjuwb"><option id="pjuwb"></option></button></option><small id="pjuwb"></small></div> <a href="http://www333444123.com" target="_blank">亚洲欧美日韩国产精品</a>| <a href="http://160160160.com" target="_blank">亚洲综合色激情五月</a>| <a href="http://caoav8.com" target="_blank">欧美日韩国产bt</a>| <a href="http://798814.com" target="_blank">免费欧美网站</a>| <a href="http://huayoue.com" target="_blank">欧美精品在线极品</a>| <a href="http://hhsj31.com" target="_blank">国产精品久久久久91</a>| <a href="http://qvod777.com" target="_blank">国产乱码精品一区二区三区忘忧草</a>| <a href="http://8x1080x.com" target="_blank">欧美日韩精品免费看</a>| <a href="http://77427xyz.com" target="_blank">欧美日韩在线精品</a>| <a href="http://ahqdlq.com" target="_blank">国产欧美视频一区二区三区</a>| <a href="http://www8888803.com" target="_blank">国内伊人久久久久久网站视频</a>| <a href="http://nc04.com" target="_blank">樱桃成人精品视频在线播放</a>| <a href="http://7v51.com" target="_blank">最近中文字幕日韩精品 </a>| <a href="http://daqinhkvip.com" target="_blank">国产日韩精品一区观看</a>| <a href="http://xinghejiuye.com" target="_blank">国产在线乱码一区二区三区</a>| <a href="http://yidaiban.com" target="_blank">精品成人一区二区三区四区</a>| <a href="http://hongmoyi.com" target="_blank">亚洲日本电影在线</a>| <a href="http://l5076.com" target="_blank">欧美一区二区啪啪</a>| <a href="http://aaddgg66.com" target="_blank">欧美国产精品劲爆</a>| <a href="http://9966k.com" target="_blank">亚洲一区三区视频在线观看 </a>| <a href="http://116016.com" target="_blank">亚洲国产一区二区精品专区</a>| <a href="http://432dm.com" target="_blank">亚洲高清三级视频</a>| <a href="http://hkbsi.com" target="_blank">亚洲欧美日韩精品久久</a>| <a href="http://456888com.com" target="_blank">欧美成人精品激情在线观看</a>| <a href="http://008528.com" target="_blank">欧美网站在线观看</a>| <a href="http://q731.com" target="_blank">亚洲高清一二三区</a>| <a href="http://660507jj.com" target="_blank">欧美在线国产</a>| <a href="http://5a07.com" target="_blank">日韩亚洲不卡在线</a>| <a href="http://1332233.com" target="_blank">久久综合国产精品台湾中文娱乐网</a>| <a href="http://988tz.com" target="_blank">欧美日韩另类字幕中文</a>| <a href="http://www0505nn.com" target="_blank">国产主播一区二区三区四区</a>| <a href="http://wy77777.com" target="_blank">在线视频亚洲欧美</a>| <a href="http://rxbbei.com" target="_blank">欧美大片第1页</a>| <a href="http://sesese98.com" target="_blank">伊人激情综合</a>| <a href="http://xiphosoft.com" target="_blank">欧美午夜国产</a>| <a href="http://asanny.com" target="_blank">亚洲人妖在线</a>| <a href="http://226671.com" target="_blank">久久久久国产精品一区三寸 </a>| <a href="http://b871.com" target="_blank">午夜精彩视频在线观看不卡</a>| <a href="http://yw1998.com" target="_blank">欧美韩日一区二区</a>| <a href="http://05078888.com" target="_blank">欧美在线观看网站</a>| <a href="http://rljyy.com" target="_blank">国产精品免费网站在线观看</a>| <a href="http://www-5013.com" target="_blank">99国产精品视频免费观看</a>| <a href="http://9113i.com" target="_blank">久久人体大胆视频</a>| <a href="http://mmmm37.com" target="_blank">亚洲欧美日韩国产</a>| <a href="http://387www.com" target="_blank">国产精品国产三级国产</a>| <a href="http://www25sds.com" target="_blank">99av国产精品欲麻豆</a>| <a href="http://777777hb.com" target="_blank">欧美成人精品不卡视频在线观看</a>| <a href="http://17ccem.com" target="_blank">欧美一区亚洲</a>| <a href="http://13789a.com" target="_blank">国产午夜亚洲精品理论片色戒</a>| <a href="http://yye321.com" target="_blank">亚洲伊人第一页</a>| <a href="http://yw133777.com" target="_blank">亚洲人成网在线播放</a>| <a href="http://kinghongs.com" target="_blank">免费视频一区二区三区在线观看</a>| <a href="http://wwwcao88.com" target="_blank">国产综合网站</a>| <a href="http://dsbangx.com" target="_blank">久久精品国产精品</a>| <a href="http://huaihuaihuai.com" target="_blank">亚洲欧美一区二区三区久久</a>| <a href="http://www-8438.com" target="_blank">国产精品久久网</a>| <a href="http://www1122fu.com" target="_blank">亚洲免费综合</a>| <a href="http://mide776.com" target="_blank">亚洲女同精品视频</a>| <a href="http://7sscc.com" target="_blank">国产亚洲人成a一在线v站</a>| <a href="http://sclddn.com" target="_blank">欧美一区二区三区免费视</a>| <a href="http://maisuper.com" target="_blank">亚洲一区三区视频在线观看</a>| <a href="http://www333393.com" target="_blank">国产精品乱人伦中文</a>| <a href="http://www901aaa.com" target="_blank">亚洲欧美日韩国产综合精品二区</a>| <a href="http://zzchanke.com" target="_blank">一本色道久久综合精品竹菊 </a>| <a href="http://samucorvin.com" target="_blank">国产精品麻豆成人av电影艾秋</a>| <a href="http://avjj80.com" target="_blank">亚洲一区二区三区四区五区黄</a>| <a href="http://zhenhaozu.com" target="_blank">亚洲精品美女久久7777777</a>| <a href="http://bjygp.com" target="_blank">欧美国产日韩在线观看</a>| <a href="http://zyjdxx.com" target="_blank">亚洲精选91</a>| <a href="http://123lifenet.com" target="_blank">亚洲精品免费观看</a>| <a href="http://by3259.com" target="_blank">国产精品久久国产精品99gif</a>| <a href="http://gdvapar.com" target="_blank">亚洲综合第一页</a>| <a href="http://y1bbs.com" target="_blank">午夜国产精品影院在线观看</a>| <a href="http://xdlot.com" target="_blank">韩日精品中文字幕</a>| <a href="http://www-3121.com" target="_blank">欧美fxxxxxx另类</a>| <a href="http://heyzo1031.com" target="_blank">欧美精品日韩一本</a>| <a href="http://bauyu121.com" target="_blank">亚洲一区二区影院</a>| <a href="http://9lunli.com" target="_blank">久久av老司机精品网站导航</a>| <a href="http://173168.com" target="_blank">亚洲国产精品第一区二区</a>| <a href="http://by1422.com" target="_blank">91久久夜色精品国产九色</a>| <a href="http://dy123456.com" target="_blank">欧美午夜视频</a>| <a href="http://51duanxinmao.com" target="_blank">久久精品亚洲精品国产欧美kt∨</a>| <a href="http://www-kj777.com" target="_blank">久久久久国内</a>| <a href="http://cc1024.com" target="_blank">中文一区在线</a>| <a href="http://211186.com" target="_blank">欧美伊人久久久久久久久影院 </a>| <a href="http://eshop999.com" target="_blank">国产精品中文字幕在线观看</a>| <a href="http://7sscc.com" target="_blank">夜夜嗨av一区二区三区四季av</a>| <a href="http://muwendada.com" target="_blank">亚洲欧美日韩人成在线播放</a>| <a href="http://339871.com" target="_blank">国产精品jizz在线观看美国</a>| <a href="http://679776.com" target="_blank">亚洲欧美国产高清va在线播</a>| <a href="http://hbzbjxzz.com" target="_blank">日韩一级免费</a>| <a href="http://exsecular.com" target="_blank">欧美视频免费在线观看</a>| <a href="http://neudlac.com" target="_blank">欧美一级久久久久久久大片</a>| <a href="http://25axxa.com" target="_blank">久久成人18免费观看</a>| <a href="http://cp50088.com" target="_blank">亚洲国产精品久久久久</a>| <a href="http://jizzdo.com" target="_blank">亚洲精品自在久久</a>| <a href="http://shalxee.com" target="_blank">国产精品久久国产精麻豆99网站</a>| <a href="http://848585.com" target="_blank">久久精品国产99国产精品</a>| <a href="http://4y9k.com" target="_blank">久久久国产成人精品</a>| <a href="http://metagasa.com" target="_blank">日韩亚洲在线</a>| <a href="http://hbdfgq.com" target="_blank">欧美一区视频</a>| <a href="http://7777731.com" target="_blank">在线视频免费在线观看一区二区</a>| <a href="http://cczm4.com" target="_blank">欧美在线网站</a>| <a href="http://by33336.com" target="_blank">中国女人久久久</a>| <a href="http://chaxiangmall.com" target="_blank">欧美在线视频一区二区</a>| <a href="http://hongzaixian.com" target="_blank">日韩视频免费</a>| <a href="http://26thb.com" target="_blank">久久精品国产亚洲精品</a>| <a href="http://2235e.com" target="_blank">9久re热视频在线精品</a>| <a href="http://5s5s5s.com" target="_blank">欧美一区二视频</a>| <a href="http://cechi8.com" target="_blank">亚洲性色视频</a>| <a href="http://xjhzgy.com" target="_blank">麻豆91精品91久久久的内涵</a>| <a href="http://2996611.com" target="_blank">亚洲欧美影音先锋</a>| <a href="http://hhh246.com" target="_blank">欧美国产日韩二区</a>| <a href="http://www-663345.com" target="_blank">久久免费视频网</a>| <a href="http://highfivewe.com" target="_blank">欧美日韩另类一区</a>| <a href="http://8xxjj.com" target="_blank">欧美激情一区二区三区在线视频观看</a>| <a href="http://maomi54.com" target="_blank">国产精品日韩欧美</a>| <a href="http://taotuango.com" target="_blank">亚洲精品一区二</a>| <a href="http://bmcshy.com" target="_blank">亚洲国产精品毛片</a>| <a href="http://456888com.com" target="_blank">欧美在线啊v</a>| <a href="http://shalitao.com" target="_blank">欧美亚洲一级片</a>| <a href="http://www-438686.com" target="_blank">欧美三级日韩三级国产三级</a>| <a href="http://669528.com" target="_blank">欧美国产日本韩</a>| <a href="http://85181890.com" target="_blank">国语自产在线不卡</a>| <a href="http://wy172.com" target="_blank">亚洲欧美在线aaa</a>| <a href="http://yjizzdizhigmail.com" target="_blank">亚洲视频观看</a>| <a href="http://91ymz.com" target="_blank">欧美日韩国产在线观看</a>| <a href="http://bby99.com" target="_blank">亚洲高清资源</a>| <a href="http://xhtd688.com" target="_blank">黄色成人在线网址</a>| <a href="http://yeyesaoqi.com" target="_blank">欧美一级视频免费在线观看</a>| <a href="http://sththg.com" target="_blank">亚洲一卡久久</a>| <a href="http://a718fun.com" target="_blank">欧美日韩一区二区三区高清</a>| <a href="http://aqdw2021.com" target="_blank">亚洲国产美女精品久久久久∴</a>| <a href="http://sesese98.com" target="_blank">一区二区三区在线观看视频</a>| <a href="http://yichenep.com" target="_blank">性高湖久久久久久久久</a>| <a href="http://k68c.com" target="_blank">欧美一进一出视频</a>| <a href="http://haoa009.com" target="_blank">国产精品麻豆欧美日韩ww</a>| <a href="http://xgame8.com" target="_blank">一二三区精品福利视频</a>| <a href="http://4923cc.com" target="_blank">一区二区日韩</a>| <a href="http://xmzszx.com" target="_blank">欧美日韩一区二区三区在线视频 </a>| <a href="http://jxchunlong.com" target="_blank">久久精品道一区二区三区</a>| <a href="http://7mxing.com" target="_blank">亚洲国产免费</a>| <a href="http://yd3399.com" target="_blank">亚洲美女黄网</a>| <a href="http://cao3636.com" target="_blank">日韩一区二区电影网</a>| <a href="http://123086.com" target="_blank">嫩草影视亚洲</a>| <a href="http://k-dchina.com" target="_blank">美女91精品</a>| <a href="http://caofujia.com" target="_blank">亚洲国产精品久久久</a>| <a href="http://51shoudian.com" target="_blank">欧美jizzhd精品欧美喷水 </a>| <a href="http://www-878009.com" target="_blank">一本色道久久88亚洲综合88</a>| <a href="http://137177.com" target="_blank">一区二区日韩欧美</a>| <a href="http://sxhrsmjj.com" target="_blank">国产精品久久国产三级国电话系列</a>| <a href="http://66669801.com" target="_blank">一区二区三区视频在线</a>| <a href="http://a718sx.com" target="_blank">欧美一区二区三区免费视频</a>| <a href="http://btbt7086.com" target="_blank">国模私拍一区二区三区</a>| <a href="http://www-85489.com" target="_blank">美女脱光内衣内裤视频久久影院</a>| <a href="http://www-798009.com" target="_blank">亚洲成人在线免费</a>| <a href="http://qiruiwangluo.com" target="_blank">亚洲图片欧洲图片av</a>| <a href="http://diao66.com" target="_blank">国产精品视频观看</a>| <a href="http://www4411n.com" target="_blank">久久久精品一区</a>| <a href="http://995688.com" target="_blank">亚洲黄色影片</a>| <a href="http://sh-hxjdkj.com" target="_blank">亚洲欧美一区二区在线观看</a>| <a href="http://53xxxx.com" target="_blank">国内久久精品视频</a>| <a href="http://www-888005.com" target="_blank">欧美成人中文字幕</a>| <a href="http://sdxinqi.com" target="_blank">一区二区电影免费在线观看</a>| <a href="http://97seee.com" target="_blank">久久精品99国产精品酒店日本</a>| <a href="http://gaobb52.com" target="_blank">又紧又大又爽精品一区二区</a>| <a href="http://yw9677.com" target="_blank">欧美精选午夜久久久乱码6080</a>| <a href="http://998609.com" target="_blank">亚洲一区免费观看</a>| <a href="http://yngtxny.com" target="_blank">欧美高清在线视频</a>| <a href="http://18loutv.com" target="_blank">性色av一区二区三区在线观看 </a>| <a href="http://haoa009.com" target="_blank">亚洲天堂成人</a>| <a href="http://czhqwy.com" target="_blank">国产综合第一页</a>| <a href="http://beeperagain.com" target="_blank">欧美日本不卡视频</a>| <a href="http://wg135.com" target="_blank">久久精品道一区二区三区</a>| <a href="http://devmashup.com" target="_blank">亚洲欧洲午夜</a>| <a href="http://fjnexpo.com" target="_blank">久久综合导航</a>| <a href="http://l5076.com" target="_blank">亚洲欧美精品伊人久久</a>| <a href="http://707fx.com" target="_blank">亚洲高清毛片</a>| <a href="http://6399128.com" target="_blank">国产日韩欧美在线看</a>| <a href="http://56718ca.com" target="_blank">欧美国产丝袜视频</a>| <a href="http://989766.com" target="_blank">久久国产手机看片</a>| <a href="http://avtt59999.com" target="_blank">中文国产亚洲喷潮</a>| <a href="http://youminwang.com" target="_blank">亚洲高清不卡在线观看</a>| <a href="http://wslsp.com" target="_blank">久久裸体视频</a>| <a href="http://987328.com" target="_blank">性久久久久久久久久久久</a>| <a href="http://mm778899.com" target="_blank">亚洲激情网站</a>| <a href="http://baidubf.com" target="_blank">韩国av一区二区</a>| <a href="http://036762.com" target="_blank">国产精品乱码</a>| <a href="http://322033.com" target="_blank">欧美伦理a级免费电影</a>| <a href="http://www-772773.com" target="_blank">久久gogo国模裸体人体</a>| <a href="http://9511331.com" target="_blank">亚洲一区二区av电影</a>| <a href="http://www47343.com" target="_blank">亚洲精品视频在线观看免费</a>| <a href="http://kanebocos.com" target="_blank">美日韩丰满少妇在线观看</a>| <a href="http://zisxks.com" target="_blank">性欧美暴力猛交另类hd</a>| <a href="http://4448884.com" target="_blank">中文无字幕一区二区三区</a>| <a href="http://hlyjh.com" target="_blank">亚洲精品乱码</a>| <a href="http://9486322.com" target="_blank">亚洲第一在线综合网站</a>| <a href="http://cbb188.com" target="_blank">永久域名在线精品</a>| <a href="http://6133c.com" target="_blank">影音先锋欧美精品</a>| <a href="http://123hiba.com" target="_blank">狠狠色丁香婷婷综合</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>