锘??xml version="1.0" encoding="utf-8" standalone="yes"?>91精品国产91久久久久福利,91久久精品国产91性色也,成人午夜精品无码区久久http://www.shnenglu.com/socketref/category/459.htmlhttps://github.com/adoggiezh-cnThu, 24 Mar 2016 16:15:39 GMTThu, 24 Mar 2016 16:15:39 GMT60鏈夐棶棰樼殑c++閫氫俊浠g爜鐨勮瘑鍒?/title><link>http://www.shnenglu.com/socketref/archive/2016/03/24/213106.html</link><dc:creator>鏀懼眮闃跨嫍 </dc:creator><author>鏀懼眮闃跨嫍 </author><pubDate>Thu, 24 Mar 2016 07:29:00 GMT</pubDate><guid>http://www.shnenglu.com/socketref/archive/2016/03/24/213106.html</guid><wfw:comment>http://www.shnenglu.com/socketref/comments/213106.html</wfw:comment><comments>http://www.shnenglu.com/socketref/archive/2016/03/24/213106.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/socketref/comments/commentRss/213106.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/socketref/services/trackbacks/213106.html</trackback:ping><description><![CDATA[     鎽樿: 鏈夐棶棰樼殑c++閫氫俊浠g爜鐨勮瘑鍒紝甯屾湜鍐檆++鐨勭爜鍐滀笉瑕佺姱鍚屾牱鐨勯敊  <a href='http://www.shnenglu.com/socketref/archive/2016/03/24/213106.html'>闃呰鍏ㄦ枃</a><img src ="http://www.shnenglu.com/socketref/aggbug/213106.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/socketref/" target="_blank">鏀懼眮闃跨嫍 </a> 2016-03-24 15:29 <a href="http://www.shnenglu.com/socketref/archive/2016/03/24/213106.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍔犲揩緙栬瘧閫熷害http://www.shnenglu.com/socketref/archive/2010/10/26/131324.html鏀懼眮闃跨嫍 鏀懼眮闃跨嫍 Tue, 26 Oct 2010 06:01:00 GMThttp://www.shnenglu.com/socketref/archive/2010/10/26/131324.htmlhttp://www.shnenglu.com/socketref/comments/131324.htmlhttp://www.shnenglu.com/socketref/archive/2010/10/26/131324.html#Feedback19http://www.shnenglu.com/socketref/comments/commentRss/131324.htmlhttp://www.shnenglu.com/socketref/services/trackbacks/131324.html緋葷粺瓚婃椂楂︼紝寮鍙戠幆澧冪増鏈秺楂橈紝鏈哄櫒閰嶇疆鍐嶉珮(鎴戠殑閰嶇疆4G,I720),浣唙c鐨勭紪璇戝櫒閫熷害涓鐐歸兘鎻愰珮涓嶄簡澶氬皯
鎻愰珮緙栬瘧閫熷害灝濊瘯浜嗗緢澶氭柟娉?
1.涔版洿蹇殑鏈哄櫒
2.鏇存崲緙栬瘧鍣紝vc6榪樻槸鑳戒繚鎸佹渶蹇殑閫熷害錛寁s2008絳夌瓑瓚婃潵瓚婂瀮鍦?br>3.鏇存崲鎿嶄綔緋葷粺 win2003
4.浣跨敤鏈嶅姟鍣ㄧ紪璇戯紝鐢?錛?鍙版満鍣ㄥ崗鍚岃繘鏉ョ紪璇戝伐紼?

浠ヤ笂鍧囦笉鑳借鎴戞湁婊℃剰鐨勬晥鏋?br>閭f渶濂界殑鏂瑰紡灝辨槸璋冩暣鑷繁鐨勪唬鐮佺粨鏋勪簡錛宑緙栬瘧鍣ㄤ負(fù)浣曞鑰佺墰鑸悆鍔涳紝灝辨槸鐢變簬c璇█鐏墊椿甯︽潵鐨勯棶棰橈紝涓嶅悓瀵硅薄鏂囦歡鍏寵仈涓嶆褰撳皢澶уぇ澧炲ぇ浜嗙紪璇戞椂闂淬?br>鎵浠ュ湪瀹氫箟宸ョ▼瀵硅薄渚濊禆鍏崇郴鏃訛紝蹇呴』娉ㄦ剰<include> 銆?br>鎴戜竴鑸殑鍋氭硶鏄細(xì)
class A,class B, 閭e湪 a.h 涓厛澹版槑 class B,鐒跺悗瀹氫箟涓涓狟*鍗沖彲
鍙湁鍦╝.c鍐呰鐢ㄥ埌B緇撴瀯鏃舵墠鍔犱笂include "b.h"
榪欐牱浠g爜鍏寵仈灝辨病鏈夐偅涔堢揣瀵嗕簡錛岀紪璇戝櫒涔熶細(xì)鍙樼殑鑱槑鐐逛簡錛屼笉浼?xì)鐢变簬涓涓棤鍏崇揣瑕佺殑淇敼錛屽鑷村ぇ鎵歸噺鐨勬簮鏂囦歡琚噸鏂扮紪璇戙?br>





鏀懼眮闃跨嫍 2010-10-26 14:01 鍙戣〃璇勮
]]>
娓告垙IP浠g悊http://www.shnenglu.com/socketref/archive/2010/09/30/128111.html鏀懼眮闃跨嫍 鏀懼眮闃跨嫍 Wed, 29 Sep 2010 17:17:00 GMThttp://www.shnenglu.com/socketref/archive/2010/09/30/128111.htmlhttp://www.shnenglu.com/socketref/comments/128111.htmlhttp://www.shnenglu.com/socketref/archive/2010/09/30/128111.html#Feedback2http://www.shnenglu.com/socketref/comments/commentRss/128111.htmlhttp://www.shnenglu.com/socketref/services/trackbacks/128111.html闃呰鍏ㄦ枃

鏀懼眮闃跨嫍 2010-09-30 01:17 鍙戣〃璇勮
]]>
娓告垙閫嗗悜閫昏緫鎺ュ彛瀹氫箟http://www.shnenglu.com/socketref/archive/2010/09/30/128109.html鏀懼眮闃跨嫍 鏀懼眮闃跨嫍 Wed, 29 Sep 2010 16:40:00 GMThttp://www.shnenglu.com/socketref/archive/2010/09/30/128109.htmlhttp://www.shnenglu.com/socketref/comments/128109.htmlhttp://www.shnenglu.com/socketref/archive/2010/09/30/128109.html#Feedback0http://www.shnenglu.com/socketref/comments/commentRss/128109.htmlhttp://www.shnenglu.com/socketref/services/trackbacks/128109.html  1 /*  2 gtr_api.h  3 ========...  闃呰鍏ㄦ枃

鏀懼眮闃跨嫍 2010-09-30 00:40 鍙戣〃璇勮
]]>
鍋氭父鎴忎氦鏄撶郴緇燂紝閲囩敤ICE涔嬪悗瀹氫箟鐨勭郴緇熸帴鍙?/title><link>http://www.shnenglu.com/socketref/archive/2010/09/30/128108.html</link><dc:creator>鏀懼眮闃跨嫍 </dc:creator><author>鏀懼眮闃跨嫍 </author><pubDate>Wed, 29 Sep 2010 16:38:00 GMT</pubDate><guid>http://www.shnenglu.com/socketref/archive/2010/09/30/128108.html</guid><wfw:comment>http://www.shnenglu.com/socketref/comments/128108.html</wfw:comment><comments>http://www.shnenglu.com/socketref/archive/2010/09/30/128108.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/socketref/comments/commentRss/128108.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/socketref/services/trackbacks/128108.html</trackback:ping><description><![CDATA[<br><br> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">  1</span> <span style="color: #008000;">/*</span><span style="color: #008000;"><br></span><span style="color: #008080;">  2</span> <span style="color: #008000;"><br></span><span style="color: #008080;">  3</span> <span style="color: #008000;">2010.3.25 zhangbin <br></span><span style="color: #008080;">  4</span> <span style="color: #008000;">1.create,瀹氫箟game-core鐨勭綉緇滄帴鍙?br></span><span style="color: #008080;">  5</span> <span style="color: #008000;"><br></span><span style="color: #008080;">  6</span> <span style="color: #008000;">鍗忓畾:<br></span><span style="color: #008080;">  7</span> <span style="color: #008000;">    1.鏁版嵁綾誨瀷鍚嶇О灝鵑儴娣誨姞T<br></span><span style="color: #008080;">  8</span> <span style="color: #008000;"><br></span><span style="color: #008080;">  9</span> <span style="color: #008000;">2010.3.27 zhangin<br></span><span style="color: #008080;"> 10</span> <span style="color: #008000;"><br></span><span style="color: #008080;"> 11</span> <span style="color: #008000;">2010.3.29 zhangbin<br></span><span style="color: #008080;"> 12</span> <span style="color: #008000;">1. 鍙栨秷宸ヤ綔鍗旼ameWorkSheetT緇撴瀯<br></span><span style="color: #008080;"> 13</span> <span style="color: #008000;">2. 淇敼 ISecureService.auth()瀹夊叏璁よ瘉鐨勬暟鎹被鍨?br></span><span style="color: #008080;"> 14</span> <span style="color: #008000;">2010.3.30 zhangbin <br></span><span style="color: #008080;"> 15</span> <span style="color: #008000;">1. heartbeat()縐誨姩鍒癐Service鎺ュ彛<br></span><span style="color: #008080;"> 16</span> <span style="color: #008000;"></span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;"> 17</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 18</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 19</span> <span style="color: #000000;">#ifndef _GTR_ICE<br></span><span style="color: #008080;"> 20</span> <span style="color: #000000;"></span><span style="color: #0000ff;">#define</span><span style="color: #000000;"> _GTR_ICE</span><span style="color: #000000;"><br></span><span style="color: #008080;"> 21</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 22</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 23</span> <span style="color: #000000;">module gtr {<br></span><span style="color: #008080;"> 24</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 25</span> <span style="color: #000000;">dictionary</span><span style="color: #000000;"><</span><span style="color: #0000ff;">string</span><span style="color: #000000;">,</span><span style="color: #0000ff;">string</span><span style="color: #000000;">></span><span style="color: #000000;">    HashValueSet;<br></span><span style="color: #008080;"> 26</span> <span style="color: #000000;">dictionary</span><span style="color: #000000;"><</span><span style="color: #0000ff;">string</span><span style="color: #000000;">,</span><span style="color: #0000ff;">string</span><span style="color: #000000;">></span><span style="color: #000000;">    ReturnValueT;<br></span><span style="color: #008080;"> 27</span> <span style="color: #000000;">sequence</span><span style="color: #000000;"><</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">></span><span style="color: #000000;">                 ByteStreamT;<br></span><span style="color: #008080;"> 28</span> <span style="color: #000000;">sequence</span><span style="color: #000000;"><</span><span style="color: #0000ff;">string</span><span style="color: #000000;">></span><span style="color: #000000;">            StringListT;<br></span><span style="color: #008080;"> 29</span> <span style="color: #000000;">sequence</span><span style="color: #000000;"><</span><span style="color: #000000;">HashValueSet</span><span style="color: #000000;">></span><span style="color: #000000;">    HashValueListT;<br></span><span style="color: #008080;"> 30</span> <span style="color: #000000;">sequence</span><span style="color: #000000;"><</span><span style="color: #0000ff;">int</span><span style="color: #000000;">></span><span style="color: #000000;">                    IntListT;<br></span><span style="color: #008080;"> 31</span> <span style="color: #000000;">sequence</span><span style="color: #000000;"><</span><span style="color: #000000;">StringListT</span><span style="color: #000000;">></span><span style="color: #000000;">    StringListListT;<br></span><span style="color: #008080;"> 32</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 33</span> <span style="color: #000000;"></span><span style="color: #0000ff;">struct</span><span style="color: #000000;"> CallReturnT{<br></span><span style="color: #008080;"> 34</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">bool</span><span style="color: #000000;">    succ;<br></span><span style="color: #008080;"> 35</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> msg;<br></span><span style="color: #008080;"> 36</span> <span style="color: #000000;">    HashValueSet props;<br></span><span style="color: #008080;"> 37</span> <span style="color: #000000;">};<br></span><span style="color: #008080;"> 38</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 39</span> <span style="color: #000000;"></span><span style="color: #0000ff;">const</span><span style="color: #000000;"> </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> IMAGEJPEG </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;"> 40</span> <span style="color: #000000;"></span><span style="color: #0000ff;">const</span><span style="color: #000000;"> </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> IMAGEPNG </span><span style="color: #000000;">=</span><span style="color: #000000;">2</span><span style="color: #000000;"> ;<br></span><span style="color: #008080;"> 41</span> <span style="color: #000000;"></span><span style="color: #0000ff;">const</span><span style="color: #000000;"> </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> IMAGEBMP </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">3</span><span style="color: #000000;"> ;<br></span><span style="color: #008080;"> 42</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 43</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 44</span> <span style="color: #000000;"></span><span style="color: #008000;">//</span><span style="color: #008000;">鍥懼儚鏁版嵁</span><span style="color: #008000;"><br></span><span style="color: #008080;"> 45</span> <span style="color: #008000;"></span><span style="color: #0000ff;">struct</span><span style="color: #000000;"> ImageDataT{<br></span><span style="color: #008080;"> 46</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> type;<br></span><span style="color: #008080;"> 47</span> <span style="color: #000000;">    ByteStreamT    bytes;<br></span><span style="color: #008080;"> 48</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> width;<br></span><span style="color: #008080;"> 49</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> height;    <br></span><span style="color: #008080;"> 50</span> <span style="color: #000000;">};<br></span><span style="color: #008080;"> 51</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 52</span> <span style="color: #000000;"></span><span style="color: #0000ff;">struct</span><span style="color: #000000;"> GameAuthDataT{<br></span><span style="color: #008080;"> 53</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">int</span><span style="color: #000000;">             type;     </span><span style="color: #008000;">//</span><span style="color: #008000;"> 1- 鍥劇墖 ,2 - 鍧愭爣</span><span style="color: #008000;"><br></span><span style="color: #008080;"> 54</span> <span style="color: #008000;"></span><span style="color: #000000;">    ImageDataT image; </span><span style="color: #008000;">//</span><span style="color: #008000;">縐樺疂鍥劇墖</span><span style="color: #008000;"><br></span><span style="color: #008080;"> 55</span> <span style="color: #008000;"></span><span style="color: #000000;">    </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> seckey;      </span><span style="color: #008000;">//</span><span style="color: #008000;">縐樺疂鍧愭爣</span><span style="color: #008000;"><br></span><span style="color: #008080;"> 56</span> <span style="color: #008000;"></span><span style="color: #000000;">};<br></span><span style="color: #008080;"> 57</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 58</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 59</span> <span style="color: #000000;"></span><span style="color: #0000ff;">struct</span><span style="color: #000000;"> GameIdentifyT{<br></span><span style="color: #008080;"> 60</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> id;            </span><span style="color: #008000;">//</span><span style="color: #008000;">娓告垙緙栧彿</span><span style="color: #008000;"><br></span><span style="color: #008080;"> 61</span> <span style="color: #008000;"></span><span style="color: #000000;">    </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> tradeNo;    </span><span style="color: #008000;">//</span><span style="color: #008000;">浜ゆ槗鍗曞彿</span><span style="color: #008000;"><br></span><span style="color: #008080;"> 62</span> <span style="color: #008000;"></span><span style="color: #000000;">};<br></span><span style="color: #008080;"> 63</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 64</span> <span style="color: #000000;"></span><span style="color: #0000ff;">struct</span><span style="color: #000000;"> ServiceIdentifyT{<br></span><span style="color: #008080;"> 65</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> id;<br></span><span style="color: #008080;"> 66</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> version;<br></span><span style="color: #008080;"> 67</span> <span style="color: #000000;">};<br></span><span style="color: #008080;"> 68</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 69</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 70</span> <span style="color: #000000;"></span><span style="color: #0000ff;">interface</span><span style="color: #000000;"> IService{<br></span><span style="color: #008080;"> 71</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">int</span><span style="color: #000000;">            getType();             </span><span style="color: #008000;">//</span><span style="color: #008000;">  </span><span style="color: #008000;"><br></span><span style="color: #008080;"> 72</span> <span style="color: #008000;"></span><span style="color: #000000;">    ServiceIdentifyT    getId();                </span><span style="color: #008000;">//</span><span style="color: #008000;">service module id</span><span style="color: #008000;"><br></span><span style="color: #008080;"> 73</span> <span style="color: #008000;"></span><span style="color: #000000;">    </span><span style="color: #0000ff;">int</span><span style="color: #000000;">                             getTimestamp();        </span><span style="color: #008000;">//</span><span style="color: #008000;">鑾峰彇緋葷粺鏃墮挓  1970涔嬪悗縐掓暟</span><span style="color: #008000;"><br></span><span style="color: #008080;"> 74</span> <span style="color: #008000;"></span><span style="color: #000000;">    </span><span style="color: #0000ff;">void</span><span style="color: #000000;">                             shutdown();<br></span><span style="color: #008080;"> 75</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">void</span><span style="color: #000000;">                             heartbeat(</span><span style="color: #0000ff;">string</span><span style="color: #000000;"> senderType,</span><span style="color: #0000ff;">string</span><span style="color: #000000;"> senderId);  </span><span style="color: #008000;">//</span><span style="color: #008000;">鍙戦佽呯被鍨嬪拰Id</span><span style="color: #008000;"><br></span><span style="color: #008080;"> 76</span> <span style="color: #008000;"></span><span style="color: #000000;">};<br></span><span style="color: #008080;"> 77</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 78</span> <span style="color: #000000;"></span><span style="color: #008000;">/*</span><span style="color: #008000;"><br></span><span style="color: #008080;"> 79</span> <span style="color: #008000;">enum LogMsgLevelT{<br></span><span style="color: #008080;"> 80</span> <span style="color: #008000;">    logDEBUG,<br></span><span style="color: #008080;"> 81</span> <span style="color: #008000;">    logINFO,<br></span><span style="color: #008080;"> 82</span> <span style="color: #008000;">    logCRITICAL,<br></span><span style="color: #008080;"> 83</span> <span style="color: #008000;">    logERROR<br></span><span style="color: #008080;"> 84</span> <span style="color: #008000;">};<br></span><span style="color: #008080;"> 85</span> <span style="color: #008000;"></span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;"> 86</span> <span style="color: #000000;">    <br></span><span style="color: #008080;"> 87</span> <span style="color: #000000;"></span><span style="color: #0000ff;">struct</span><span style="color: #000000;"> LogMessageT{<br></span><span style="color: #008080;"> 88</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">int</span><span style="color: #000000;">                     xclass;    </span><span style="color: #008000;">//</span><span style="color: #008000;">娑堟伅綾誨瀷    </span><span style="color: #008000;"><br></span><span style="color: #008080;"> 89</span> <span style="color: #008000;"></span><span style="color: #000000;">    </span><span style="color: #0000ff;">string</span><span style="color: #000000;">                 msg;    <br></span><span style="color: #008080;"> 90</span> <span style="color: #000000;">};<br></span><span style="color: #008080;"> 91</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 92</span> <span style="color: #000000;"></span><span style="color: #008000;">//</span><span style="color: #008000;">鏃ュ織鍔熻兘</span><span style="color: #008000;"><br></span><span style="color: #008080;"> 93</span> <span style="color: #008000;"></span><span style="color: #0000ff;">interface</span><span style="color: #000000;"> ILogger {<br></span><span style="color: #008080;"> 94</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> gameMsg(GameIdentifyT gameId,</span><span style="color: #0000ff;">int</span><span style="color: #000000;"> timetick,LogMessageT msg);  </span><span style="color: #008000;">//</span><span style="color: #008000;"> timetick - 1970~ s</span><span style="color: #008000;"><br></span><span style="color: #008080;"> 95</span> <span style="color: #008000;"></span><span style="color: #000000;">    </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> gameImage(GameIdentifyT gameId,</span><span style="color: #0000ff;">int</span><span style="color: #000000;"> timetick,</span><span style="color: #0000ff;">string</span><span style="color: #000000;"> opName,ImageDataT image);    </span><span style="color: #008000;">//</span><span style="color: #008000;">鎶撳浘 opName - 鎵ц娓告垙姝ラ鍚嶇О</span><span style="color: #008000;"><br></span><span style="color: #008080;"> 96</span> <span style="color: #008000;"></span><span style="color: #000000;">};<br></span><span style="color: #008080;"> 97</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 98</span> <span style="color: #000000;"></span><span style="color: #008000;">//</span><span style="color: #008000;">瀹夊叏綆$悊錛屽寘鎷瀹濊璇佺瓑</span><span style="color: #008000;"><br></span><span style="color: #008080;"> 99</span> <span style="color: #008000;"></span><span style="color: #0000ff;">interface</span><span style="color: #000000;"> ISecure {<br></span><span style="color: #008080;">100</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> auth(GameIdentifyT gameId,GameAuthDataT data); <br></span><span style="color: #008080;">101</span> <span style="color: #000000;">};<br></span><span style="color: #008080;">102</span> <span style="color: #000000;"><br></span><span style="color: #008080;">103</span> <span style="color: #000000;"></span><span style="color: #008000;">//</span><span style="color: #008000;">鏃ュ織鏈嶅姟鍣?/span><span style="color: #008000;"><br></span><span style="color: #008080;">104</span> <span style="color: #008000;"></span><span style="color: #0000ff;">interface</span><span style="color: #000000;"> ILogServer extends ILogger,IService{<br></span><span style="color: #008080;">105</span> <span style="color: #000000;">    <br></span><span style="color: #008080;">106</span> <span style="color: #000000;">};<br></span><span style="color: #008080;">107</span> <span style="color: #000000;"><br></span><span style="color: #008080;">108</span> <span style="color: #000000;"></span><span style="color: #0000ff;">interface</span><span style="color: #000000;"> ISecureServer extends ISecure,IService{<br></span><span style="color: #008080;">109</span> <span style="color: #000000;">};<br></span><span style="color: #008080;">110</span> <span style="color: #000000;"><br></span><span style="color: #008080;">111</span> <span style="color: #000000;"><br></span><span style="color: #008080;">112</span> <span style="color: #000000;"></span><span style="color: #008000;">//</span><span style="color: #008000;">涓涓父鎴忎換鍔$浉鍏崇殑淇℃伅</span><span style="color: #008000;"><br></span><span style="color: #008080;">113</span> <span style="color: #008000;"></span><span style="color: #0000ff;">enum</span><span style="color: #000000;"> GameWorkSheetTypeT{<br></span><span style="color: #008080;">114</span> <span style="color: #000000;">    gwsPost,                    </span><span style="color: #008000;">//</span><span style="color: #008000;">閭瘎</span><span style="color: #008000;"><br></span><span style="color: #008080;">115</span> <span style="color: #008000;"></span><span style="color: #000000;">    gwsAccountAudit, </span><span style="color: #008000;">//</span><span style="color: #008000;">甯愬彿瀹℃牳</span><span style="color: #008000;"><br></span><span style="color: #008080;">116</span> <span style="color: #008000;"></span><span style="color: #000000;">    gwsVerify                </span><span style="color: #008000;">//</span><span style="color: #008000;">楠岃瘉</span><span style="color: #008000;"><br></span><span style="color: #008080;">117</span> <span style="color: #008000;"></span><span style="color: #000000;">};<br></span><span style="color: #008080;">118</span> <span style="color: #000000;"><br></span><span style="color: #008080;">119</span> <span style="color: #000000;"><br></span><span style="color: #008080;">120</span> <span style="color: #000000;"></span><span style="color: #008000;">//</span><span style="color: #008000;">閭瘎</span><span style="color: #008000;"><br></span><span style="color: #008080;">121</span> <span style="color: #008000;"></span><span style="color: #0000ff;">struct</span><span style="color: #000000;"> GameWorkSheetPostT {<br></span><span style="color: #008080;">122</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">long</span><span style="color: #000000;"> money;        <br></span><span style="color: #008080;">123</span> <span style="color: #000000;">};<br></span><span style="color: #008080;">124</span> <span style="color: #000000;"></span><span style="color: #008000;">//</span><span style="color: #008000;">瀹℃牳</span><span style="color: #008000;"><br></span><span style="color: #008080;">125</span> <span style="color: #008000;"></span><span style="color: #0000ff;">struct</span><span style="color: #000000;"> GameWorkSheetAccountAuditT {<br></span><span style="color: #008080;">126</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> any;<br></span><span style="color: #008080;">127</span> <span style="color: #000000;">};<br></span><span style="color: #008080;">128</span> <span style="color: #000000;"></span><span style="color: #008000;">//</span><span style="color: #008000;">楠岃瘉</span><span style="color: #008000;"><br></span><span style="color: #008080;">129</span> <span style="color: #008000;"></span><span style="color: #0000ff;">struct</span><span style="color: #000000;"> GameWorkSheetVerifyT {<br></span><span style="color: #008080;">130</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> any;<br></span><span style="color: #008080;">131</span> <span style="color: #000000;">};<br></span><span style="color: #008080;">132</span> <span style="color: #000000;"><br></span><span style="color: #008080;">133</span> <span style="color: #000000;"></span><span style="color: #008000;">//</span><span style="color: #008000;">浜ゆ槗浠誨姟淇℃伅<br></span><span style="color: #008080;">134</span> <span style="color: #008000;"></span><span style="color: #008000;">//</span><span style="color: #008000;">Tasklet鍖呭惈鎵鏈夌殑涓氬姟澶勭悊綾誨瀷錛屼絾鍚屾椂鍙湁涓縐嶆湁鏁?/span><span style="color: #008000;"><br></span><span style="color: #008080;">135</span> <span style="color: #008000;"></span><span style="color: #0000ff;">struct</span><span style="color: #000000;"> GameTaskletT{<br></span><span style="color: #008080;">136</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> id;                            </span><span style="color: #008000;">//</span><span style="color: #008000;">浠誨姟緙栧彿</span><span style="color: #008000;"><br></span><span style="color: #008080;">137</span> <span style="color: #008000;"></span><span style="color: #000000;">    </span><span style="color: #0000ff;">int</span><span style="color: #000000;">      type;                            </span><span style="color: #008000;">//</span><span style="color: #008000;">澶勭悊綾誨瀷</span><span style="color: #008000;"><br></span><span style="color: #008080;">138</span> <span style="color: #008000;"></span><span style="color: #000000;">    </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> no;            </span><span style="color: #008000;">//</span><span style="color: #008000;">鍗曞彿</span><span style="color: #008000;"><br></span><span style="color: #008080;">139</span> <span style="color: #008000;"></span><span style="color: #000000;">    </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> gameId;    </span><span style="color: #008000;">//</span><span style="color: #008000;">娓告垙緙栧彿</span><span style="color: #008000;"><br></span><span style="color: #008080;">140</span> <span style="color: #008000;"></span><span style="color: #000000;">    </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> account;    </span><span style="color: #008000;">//</span><span style="color: #008000;">甯愬彿</span><span style="color: #008000;"><br></span><span style="color: #008080;">141</span> <span style="color: #008000;"></span><span style="color: #000000;">    </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> password;<br></span><span style="color: #008080;">142</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> area;        </span><span style="color: #008000;">//</span><span style="color: #008000;">鍖?/span><span style="color: #008000;"><br></span><span style="color: #008080;">143</span> <span style="color: #008000;"></span><span style="color: #000000;">    </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> server;    </span><span style="color: #008000;">//</span><span style="color: #008000;">鏈嶅姟鍣?/span><span style="color: #008000;"><br></span><span style="color: #008080;">144</span> <span style="color: #008000;"></span><span style="color: #000000;">    </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> lineName;</span><span style="color: #008000;">//</span><span style="color: #008000;">綰胯礬鍚嶇О(涓虹┖鍒檒ineNo)</span><span style="color: #008000;"><br></span><span style="color: #008080;">145</span> <span style="color: #008000;"></span><span style="color: #000000;">    </span><span style="color: #0000ff;">short</span><span style="color: #000000;">     lineNo;    </span><span style="color: #008000;">//</span><span style="color: #008000;">綰胯礬緙栧彿</span><span style="color: #008000;"><br></span><span style="color: #008080;">146</span> <span style="color: #008000;"></span><span style="color: #000000;">    </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> createTime;<br></span><span style="color: #008080;">147</span> <span style="color: #000000;">    <br></span><span style="color: #008080;">148</span> <span style="color: #000000;">    GameWorkSheetPostT post;    </span><span style="color: #008000;">//</span><span style="color: #008000;">閭瘎</span><span style="color: #008000;"><br></span><span style="color: #008080;">149</span> <span style="color: #008000;"></span><span style="color: #000000;">    GameWorkSheetAccountAuditT audit;<br></span><span style="color: #008080;">150</span> <span style="color: #000000;">    GameWorkSheetVerifyT        verify;<br></span><span style="color: #008080;">151</span> <span style="color: #000000;">};<br></span><span style="color: #008080;">152</span> <span style="color: #000000;"><br></span><span style="color: #008080;">153</span> <span style="color: #000000;"></span><span style="color: #0000ff;">struct</span><span style="color: #000000;"> GameTaskResultT{<br></span><span style="color: #008080;">154</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> id;        </span><span style="color: #008000;">//</span><span style="color: #008000;">浠誨姟緙栧彿</span><span style="color: #008000;"><br></span><span style="color: #008080;">155</span> <span style="color: #008000;"></span><span style="color: #000000;">    </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> no;        </span><span style="color: #008000;">//</span><span style="color: #008000;">鍗曞彿 (鍐椾綑)</span><span style="color: #008000;"><br></span><span style="color: #008080;">156</span> <span style="color: #008000;"></span><span style="color: #000000;">    </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> gameId;    </span><span style="color: #008000;">//</span><span style="color: #008000;">娓告垙緙栧彿(鍐椾綑)</span><span style="color: #008000;"><br></span><span style="color: #008080;">157</span> <span style="color: #008000;"></span><span style="color: #000000;">    </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> result;        </span><span style="color: #008000;">//</span><span style="color: #008000;">澶勭悊緇撴灉</span><span style="color: #008000;"><br></span><span style="color: #008080;">158</span> <span style="color: #008000;"></span><span style="color: #000000;">    </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> errmsg;    </span><span style="color: #008000;">//</span><span style="color: #008000;">鎻愮ず淇℃伅    </span><span style="color: #008000;"><br></span><span style="color: #008080;">159</span> <span style="color: #008000;"></span><span style="color: #000000;">};<br></span><span style="color: #008080;">160</span> <span style="color: #000000;"><br></span><span style="color: #008080;">161</span> <span style="color: #000000;"></span><span style="color: #008000;">//</span><span style="color: #008000;">gtr鎺у埗鏈嶅姟绔帴鍙?/span><span style="color: #008000;"><br></span><span style="color: #008080;">162</span> <span style="color: #008000;"></span><span style="color: #0000ff;">interface</span><span style="color: #000000;"> IGameHost extends IService,ILogger,ISecure{    <br></span><span style="color: #008080;">163</span> <span style="color: #000000;">    GameTaskletT                    getTask();        </span><span style="color: #008000;">//</span><span style="color: #008000;">鑾峰彇浠誨姟</span><span style="color: #008000;"><br></span><span style="color: #008080;">164</span> <span style="color: #008000;"></span><span style="color: #000000;">    </span><span style="color: #0000ff;">void</span><span style="color: #000000;">                                    completeTask(GameTaskResultT result);         </span><span style="color: #008000;">//<br></span><span style="color: #008080;">165</span> <span style="color: #008000;"></span><span style="color: #000000;">    <br></span><span style="color: #008080;">166</span> <span style="color: #000000;">};<br></span><span style="color: #008080;">167</span> <span style="color: #000000;"><br></span><span style="color: #008080;">168</span> <span style="color: #000000;"><br></span><span style="color: #008080;">169</span> <span style="color: #000000;"><br></span><span style="color: #008080;">170</span> <span style="color: #000000;">};<br></span><span style="color: #008080;">171</span> <span style="color: #000000;"><br></span><span style="color: #008080;">172</span> <span style="color: #000000;"><br></span><span style="color: #008080;">173</span> <span style="color: #000000;"></span><span style="color: #0000ff;">#endif</span><span style="color: #000000;"><br></span><span style="color: #008080;">174</span> <span style="color: #000000;"><br></span><span style="color: #008080;">175</span> <span style="color: #000000;"></span></div> <br><br><img src ="http://www.shnenglu.com/socketref/aggbug/128108.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/socketref/" target="_blank">鏀懼眮闃跨嫍 </a> 2010-09-30 00:38 <a href="http://www.shnenglu.com/socketref/archive/2010/09/30/128108.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鑰冭檻璁捐涓縐嶄究鎹風(fēng)殑閫氫俊搴?/title><link>http://www.shnenglu.com/socketref/archive/2010/05/10/114999.html</link><dc:creator>鏀懼眮闃跨嫍 </dc:creator><author>鏀懼眮闃跨嫍 </author><pubDate>Mon, 10 May 2010 07:27:00 GMT</pubDate><guid>http://www.shnenglu.com/socketref/archive/2010/05/10/114999.html</guid><wfw:comment>http://www.shnenglu.com/socketref/comments/114999.html</wfw:comment><comments>http://www.shnenglu.com/socketref/archive/2010/05/10/114999.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/socketref/comments/commentRss/114999.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/socketref/services/trackbacks/114999.html</trackback:ping><description><![CDATA[Ice鐨勮璁℃濇兂闈炲父濂?閫氳繃slice瀹氫箟涔嬪悗浜х敓涓鍫嗙殑閫氫俊妗嗘灦浠g爜鏉ヨ嚜鍔ㄥ寲瀹屾垚瀵硅薄鏁版嵁鐨勫簭鍒楀寲<br>鐢變簬ice鏄熀浜嶳pc鐨?搴曞眰閫氫俊緇嗚妭琚睆钄芥帀浜?鐢氳嚦鏄繛鎺ョ殑鑷姩閲嶅寤虹珛,鍙枩鍙堝彲鎮(zhèn)?鏈変簺搴旂敤蹇呴』瑕佸叧蹇冭繖浜涘簳閮ㄧ殑閫氫俊緇嗚妭,<br>濡傛灉鐩存帴鐢╯ocket鍙堝珜澶夯鐑?chǔ)浜?涓嶅悓鐨勫簲鐢ㄩ兘鏄湪閲嶅鐨勮繘琛屽紑鍙戦氫俊鍗忚,瑙e寘鍜屾墦鍖呰姳閿寰堝緢澶氱殑綺懼姏,榪欎簺宸ヤ綔閮芥槸閲嶅鐨?娌℃湁鎶鏈惈閲忚屼笖瀹規(guī)槗鍑洪敊.<br>涔嬪墠寮鍙戣繃mtslib閫氫俊搴撴潵瑙e喅socket閫氫俊闂,浣夸袱绔兘鏄互娑堟伅鍖呯殑褰㈠紡榪涜閫氫俊,瑙e喅浜唖ocket涓ゆbuffer鐨勭鐞?br>涔熺湅榪噄ce鐨勪唬鐮佸疄鐜?slice2cpp鐢▂acc&lex榪涜璇嶆硶璇硶鐨勫鐞?br>瀵硅薄鐨勮嚜鍔ㄥ簭鍒楀寲榪欐槸鎴戞墍鎰熷叴瓚g殑,鍚宨ce涓鏍鋒彁渚涗竴涓氫俊鐜,鐒跺悗鐢ㄦ埛鍙互鑷畾涔夎嚜宸辯殑閫氫俊鏁版嵁,閫氳繃idl鐨勫艦寮忚嚜鍔ㄤ駭鐢熷簭鍒楀寲浠g爜騫剁紪璇戣繘鐢ㄦ埛宸ョ▼.<br>榪欑鏂瑰紡涓巌ce鍙堜笉鍚屽湪浜庢病鏈夐偅涔堝偦鐡滃寲,浣嗙畝鍖栦簡鐢ㄦ埛澶勭悊娑堟伅鎶ョ殑榪囩▼.<br>榪欐牱瑕佸畬鎴愪竴涓被浼糹ce鐨剅pc璋冪敤涔熸槸娌℃湁閭d箞綆鍗?br>yacc/lex,lemon,<br><br><img src ="http://www.shnenglu.com/socketref/aggbug/114999.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/socketref/" target="_blank">鏀懼眮闃跨嫍 </a> 2010-05-10 15:27 <a href="http://www.shnenglu.com/socketref/archive/2010/05/10/114999.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>瀹屾垚swMap鍩烘湰鍔熻兘http://www.shnenglu.com/socketref/archive/2009/08/21/93983.html鏀懼眮闃跨嫍 鏀懼眮闃跨嫍 Thu, 20 Aug 2009 19:27:00 GMThttp://www.shnenglu.com/socketref/archive/2009/08/21/93983.htmlhttp://www.shnenglu.com/socketref/comments/93983.htmlhttp://www.shnenglu.com/socketref/archive/2009/08/21/93983.html#Feedback2http://www.shnenglu.com/socketref/comments/commentRss/93983.htmlhttp://www.shnenglu.com/socketref/services/trackbacks/93983.html鐜板湪swMap鑳藉仛鍩烘湰demo涓涓佺偣鐨勫姛鑳戒簡錛岃闂細(xì) www.sw2us.com/maps.php 鎴栬?http://220.196.42.107/main.php
褰撳垵鑰冭檻鍒版斁寮冧箣鍓嶇殑涓滆タ鑰冭檻鐨勯棶棰樻湁寰堝錛屽綋鐒舵湁鍏徃鐨勭煡璇嗕駭鏉冮棶棰橈紝鏈涓昏鐨勬槸涔嬪墠鐨勪駭鍝佹妧鏈疄鍦ㄦ槸璁捐鐨勬湁鐐圭碂緋曘傚仛寮鍙戠殑鐭ラ亾鐪嬪埆浜虹殑浠g爜騫朵笖鍦ㄨ繖鍩虹涓婂幓鍙戞壃鍏夊ぇ榪欐椂闂村緢澶村ぇ鍜岀棝鑻︾殑浜嬫儏錛岀壒鍒槸紕板埌閭d簺鍘熸湰灝辨槸姣旇緝?yōu)畞闂拰宸姴鐨勪笢瑗裤?br>鍑熻嚜宸辯殑鐨勫緢澶氭兂娉曞紑濮嬪紑鍙憇wMap欏圭洰錛屼互鍓嶇殑涓滆タ閮芥姏寮冩病鏈夊仛鍙傝冿紝浠庡師濮嬪湴鍥懼姞宸ヨ璁°佸湴鍥炬覆鏌撴湇鍔″櫒寮鍙戙佺劧鍚庡氨鏄熀浜嶱c鍜學(xué)ince鐨勫鎴風(fēng)寮鍙戯紝鏀寔鏈湴鍜岃繙紼嬪姞杞藉湴鍥劇殑鏂瑰紡錛岄噸鏂拌璁$殑鏁版嵁瀛樺偍鏂瑰紡闄や簡淇濈暀綆鍗曠殑緗戞牸瀛樺偍鍜屾悳瀵伙紝宸茬粡鎶婂湴鍥炬暟鎹繘琛岀渷浠界殑鍒嗗壊錛岃屼笉鍍忎互鍓嶅繀欏誨姞杞藉崟鐙殑涓涓叏鍥藉湴鍥炬暟鎹寘錛涘湴鍥劇綉鏍間篃璁捐鎴愪簡澶氱綉鏍煎ぇ灝忓艦寮忥紝浠ヤ究鏀寔鍚屼竴涓湴鍥炬枃浠朵腑浠繪剰澶氱殑緙╂斁姣斿拰鍦板浘灞傘?br>寮鍙戞繪槸寰堣緵鑻︼紝姣忓ぉ閮芥槸瑕佸仛鍒板娣變漢闈?br>瀛︿範(fàn)浜嗗緢澶氫笢瑗匡紝鎬濊冧簡寰堝涓滆タ錛屽弽澶嶇殑涔熸湁寰堝錛屾渶緇堣繕鏄嚟鍊熻嚜宸辨瘮杈冨鐨勭煡璇嗛潰錛岃繍鐢ㄤ簡寰堝opensource鐨勬妧鏈紝鏃墮棿鍜屾晥鐜囧綋鐒舵槸闈炲父閲嶈鐨勶紝鎵浠ユ病鏈夎嚜宸卞幓閲嶆柊瀹炵幇涓浜涘熀紜鐨勪笢瑗匡紝姣斿matrix灝辨槸浠巆airo搴撲腑鐩存帴鎶勮繃鏉ョ殑銆?br>鍦ㄧ敤c++寮鍙戝湴鍥炬湇鍔″櫒鍜屽鎴風(fēng)鏃跺欎篃鑰冭檻浜嗕笉鍚岀殑閫氫俊鏂瑰紡鍜屾搷浣滅郴緇熺幆澧冿紝灝藉彲鑳界殑鍙互鏀寔鏇村鐨勮繍琛岀幆澧冦?br>鍘熸湰璁″垝鍦ㄦ槰鏅歸ince鐗堟湰涔嬪悗椹笂鏀寔symbian鎿嶄綔緋葷粺錛屼絾瀵箂ymbian鐨勫紑鍙戠爺絀朵簡涔嬪悗璁╂垜澶уけ鎵鏈涳紝鍏跺紑鍙戞槸闈炲父浣庢晥鐨勪笖閫氱敤鎬ц兘澶樊錛屽悗鏉ョ綉涓婂緱鐭okia椹笂灝嗘姏寮僺ymbian鑰屾鎶眑inux浜嗭紝榪欎護(hù)鎴戞垜椹笂鑰冭檻浜嗙Щ妞峫inux鐨勬兂娉?br>寰堝浜鴻窡鎴戞彁鍒伴潤鎬佺綉欏靛湴鍥炬柟寮忥紝褰撶劧鎴戜笉鑳藉仛鍒板儚google錛宱penlayers榪欎箞寮虹殑瀹㈡埛绔錛屼篃娌$簿鍔涘幓鏀寔ogc閭d箞鐨刧is鍗忚鍦ㄥ湴鍥炬湇鍔″櫒涓婏紝鎵浠ヨ兘婕旂ず鍩虹鐨勫湴鍥懼姛鑳藉紑鍙戜簡php鐨勫睍紺虹銆?br>flex鍜宻liverlight閮芥槸闈炲父濂界殑鎶鏈紝浣嗗浜巑s涓鐩存病鏈夊ソ鎰燂紝鎵浠lex褰㈡垚浜嗘垜閫夋嫨鍙︿竴涓睍紺哄鎴風(fēng)鐨勬兂娉曘?br>緗戜笂涓嬩簡涓鍫嗙殑flex鏁版嵁錛屽墠鍚庝粠鎺ヨЕactionscript鍒板仛濂絪wFlex瀹㈡埛绔竴鍏辮姳浜?澶╂椂闂達(dá)紝鍙戣瓚婃潵瓚婂枩嬈㈣繖涓笢瑗夸簡錛岀湅鏉ヤ互鍚庣殑鍓嶇寮鍙戣鍏ㄦ崲鎴恌lex騫沖彴浜嗐?br>鐩墠鍋氬緱swMap鐨勫姛鑳介潪甯告湁闄愶紝鍦板浘澶勭悊涔熸槸寰堢畝鍗曪紝鐢氳嚦榪炴枃鏈爣娉ㄩ兘娌℃湁娣誨姞錛屽彧鏄彁渚涗簡25涓浘灞?6綰у埆緙╂斁姣斿湪瀹㈡埛绔睍紺恒?br>鎴戞兂寰呮垜鏈夋椂闂達(dá)紝鎴戝皢榪欎簺閮戒細(xì)瀹屽杽璧鋒潵
鍘熸湰寰堝甯﹀紑鍙戠殑鎶鏈篃娌℃湁鍘誨仛錛屾瘮濡俛gg錛屽湴鍥?鍙夋爲(wèi)銆丷Tree錛孉*璺敱綆楁硶
鏈嬪弸緇欐垜鐨勫嚑涓狦ps妯″潡璁懼榪欏嚑澶╄璋冮氬茍鏀劇疆鍒板湴鍥句笂鍘?br>


鏀懼眮闃跨嫍 2009-08-21 03:27 鍙戣〃璇勮
]]>
auto_ptr/shared_ptr/week_ptr differenceshttp://www.shnenglu.com/socketref/archive/2008/07/13/55992.html鏀懼眮闃跨嫍 鏀懼眮闃跨嫍 Sat, 12 Jul 2008 16:34:00 GMThttp://www.shnenglu.com/socketref/archive/2008/07/13/55992.htmlhttp://www.shnenglu.com/socketref/comments/55992.htmlhttp://www.shnenglu.com/socketref/archive/2008/07/13/55992.html#Feedback0http://www.shnenglu.com/socketref/comments/commentRss/55992.htmlhttp://www.shnenglu.com/socketref/services/trackbacks/55992.html



鏀懼眮闃跨嫍 2008-07-13 00:34 鍙戣〃璇勮
]]>
WINCE 璁劇疆鐜鍙橀噺-緋葷粺鍔犺澆璺緞http://www.shnenglu.com/socketref/archive/2008/07/04/55279.html鏀懼眮闃跨嫍 鏀懼眮闃跨嫍 Thu, 03 Jul 2008 17:24:00 GMThttp://www.shnenglu.com/socketref/archive/2008/07/04/55279.htmlhttp://www.shnenglu.com/socketref/comments/55279.htmlhttp://www.shnenglu.com/socketref/archive/2008/07/04/55279.html#Feedback0http://www.shnenglu.com/socketref/comments/commentRss/55279.htmlhttp://www.shnenglu.com/socketref/services/trackbacks/55279.html        TCHAR pText[] = _T("\\Windows\\0\\NandFlashPartition\\MediaLib\0\\Storage Card\\MediaLib\0\0");
        CString strText(pText,sizeof(pText));
        SaveMultString(HKEY_LOCAL_MACHINE,_T("Loader"),_T("SystemPath"),strText,sizeof(pText));

        DeleteKey(HKEY_LOCAL_MACHINE,_T("SOFTWARE\\sample\\PLAY"));
    }


鏀懼眮闃跨嫍 2008-07-04 01:24 鍙戣〃璇勮
]]>
wxWidget鐨勫璇█http://www.shnenglu.com/socketref/archive/2008/07/04/55272.html鏀懼眮闃跨嫍 鏀懼眮闃跨嫍 Thu, 03 Jul 2008 17:19:00 GMThttp://www.shnenglu.com/socketref/archive/2008/07/04/55272.htmlhttp://www.shnenglu.com/socketref/comments/55272.htmlhttp://www.shnenglu.com/socketref/archive/2008/07/04/55272.html#Feedback0http://www.shnenglu.com/socketref/comments/commentRss/55272.htmlhttp://www.shnenglu.com/socketref/services/trackbacks/55272.html闃呰鍏ㄦ枃

鏀懼眮闃跨嫍 2008-07-04 01:19 鍙戣〃璇勮
]]>
鍑芥暟char2Hex()http://www.shnenglu.com/socketref/archive/2008/06/23/54318.html鏀懼眮闃跨嫍 鏀懼眮闃跨嫍 Sun, 22 Jun 2008 16:58:00 GMThttp://www.shnenglu.com/socketref/archive/2008/06/23/54318.htmlhttp://www.shnenglu.com/socketref/comments/54318.htmlhttp://www.shnenglu.com/socketref/archive/2008/06/23/54318.html#Feedback1http://www.shnenglu.com/socketref/comments/commentRss/54318.htmlhttp://www.shnenglu.com/socketref/services/trackbacks/54318.html{
    string str = "";
    int n = a;
    for (int i=2*sizeof(char) - 1; i>=0; i--)
    {
        str += "0123456789ABCDEF"[((n >> i*4) & 0xF)];
    }
    return str;
}


鏀懼眮闃跨嫍 2008-06-23 00:58 鍙戣〃璇勮
]]>
lua-蹇熼槄璇?/title><link>http://www.shnenglu.com/socketref/archive/2008/05/13/49689.html</link><dc:creator>鏀懼眮闃跨嫍 </dc:creator><author>鏀懼眮闃跨嫍 </author><pubDate>Mon, 12 May 2008 19:13:00 GMT</pubDate><guid>http://www.shnenglu.com/socketref/archive/2008/05/13/49689.html</guid><wfw:comment>http://www.shnenglu.com/socketref/comments/49689.html</wfw:comment><comments>http://www.shnenglu.com/socketref/archive/2008/05/13/49689.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/socketref/comments/commentRss/49689.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/socketref/services/trackbacks/49689.html</trackback:ping><description><![CDATA[<br>table 鏄釜鎬墿錛屾湁寰堝facets,綾諱技array,map,struct,鏁翠釜鏄釜娣峰悎鐗╋紝鐢ㄨ搗鏉ヤ篃姣旇緝鎬紓銆?br>t={1,2,3,a="gen",b=100}<br>t={[0]=1;["name"]="ultra"}<br>t.a, t.b , t[0] , t["name"]<br><br>琛ㄦ搷浣滃嚱鏁? <br>ipairs,pairs榪唬鍑芥暟<br>table.getn(t)   len of table<br><br>================================================================<br>function() 鍙互鎺ュ彈浠繪剰澶氱殑鍙傛暟錛屽鏋滃疄鍙傛暟榪囧灝嗕涪寮冿紝榪囧皯灝嗛粯璁よ緗負(fù)nil<br>鍚屾牱鍙互榪斿洖澶氫釜鍙傛暟<br>a,b=foo()<br><br>琛ㄤ綔涓哄弬鏁頒紶閫掑埌function<br>function rename( arg ) os.rename(arg.old,arg.new) end<br>rename{old="";new=""}<br><br>鍖垮悕鍑芥暟(lambda in python )<br>foo = function(x) return x*2 end<br>灞閮ㄥ嚱鏁?local f=function(x) ... end<br>================================================================<br>for n=start,end,step do ... end<br>while b do   ... end<br>repeat do .... until<br><br>if then .. elseif then ...  end;<br><br>鏈夋剰鎬濈殑璇硶琛ㄨ揪寮? <br>    print a or b or c   濡傛灉a=false,灝濊瘯b...<br><br>娉ㄩ噴: --     --{ --}  <br><br><br>瀛楃涓叉搷浣?    .. 榪炴帴<br><br>==================================================<br>io 鍑芥暟: <br>loadfile('test.lua')()    execute external lua script<br>loadstring('print 100')()<br><br><br>浠g爜嫻嬭瘯: <br>=======================<br><span style="color: red;">c紼嬪簭璋冪敤lua鍑芥暟</span><br>c 紼嬪簭:<br>void call_lua_func(){<br>    lua_State *s = lua_open();<br>    luaL_openlibs(s);<br>    int c = lua_gettop(s);<br>    luaL_dofile(s,"/nandflashpartition/test1.lua");<br>    lua_getglobal(s,"add");<br>    lua_pushnumber(s,0.25);<br>    lua_pushnumber(s,8);<br>    if( lua_pcall(s,2,1,0)){<br>        std::cout<< lua_tostring(s,-1)<<std::endl;<br>    }<br>    double r;<br>    r = lua_tonumber(s,-1);<br>    lua_close(s);<br>}<br>lua紼嬪簭:<br>function add(x,y)<br>    return x*y<br>end<br>--------------------------------<br><span style="color: red;">lua璁塊棶c紼嬪簭絀洪棿鍙橀噺</span><br><br>1.瀹氫箟鍙橀噺student.h<br>extern char * gender;<br>extern int class_count;<br><br>2.鍒涘緩pkg鏂囦歡 student.pkg<br>$#include "student.h"<br>extern char * gender;<br>extern int class_count;<br><br>3.浜х敓tolua++瀛樻牴妗嗘灦<br>tolua++ -o student.pkg<br><br>4.鍒涘緩lua嫻嬭瘯浠g爜 call_c.lua<br>print(gender)<br>print(class_count)  璁塊棶c 絀洪棿鐨勫彉閲?br><br>5.c嫻嬭瘯浠g爜<br>char * gender;<br>int class_count;<br>void lua_call_c(){<br>    int  tolua_student_open (lua_State* tolua_S);<br>    lua_State * s = lua_open();<br>    luaopen_base(s);<br><br>    gender ="my gender is male!";<br>    class_count = 100;<br>    tolua_student_open(s);<br>    luaL_dofile(s,"/nandflashpartition/call_c.lua");<br>    lua_close(s);<br>}<br><br>6.build && test it!<br><br><br><br> <img src ="http://www.shnenglu.com/socketref/aggbug/49689.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/socketref/" target="_blank">鏀懼眮闃跨嫍 </a> 2008-05-13 03:13 <a href="http://www.shnenglu.com/socketref/archive/2008/05/13/49689.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鐢?C 灝佽 涓插彛鏁版嵁鍗忚錛屽彲鐢ㄤ簬嫻佸紡浼犺緭http://www.shnenglu.com/socketref/archive/2007/02/23/18931.html鏀懼眮闃跨嫍 鏀懼眮闃跨嫍 Fri, 23 Feb 2007 14:54:00 GMThttp://www.shnenglu.com/socketref/archive/2007/02/23/18931.htmlhttp://www.shnenglu.com/socketref/comments/18931.htmlhttp://www.shnenglu.com/socketref/archive/2007/02/23/18931.html#Feedback0http://www.shnenglu.com/socketref/comments/commentRss/18931.htmlhttp://www.shnenglu.com/socketref/services/trackbacks/18931.html#define INOUT
#define IN

#define INIT_LIST_HEAD(x)聽聽 聽

#define btsc_TRUE 聽聽 聽0
#define btsc_FALSE聽聽 聽1
#define btsc_NULL 聽聽 聽0

struct list_head{
聽聽 聽struct list_head* prev,*next;
};


struct btsc_Property{
聽聽 聽char * 聽聽 聽聽聽 聽name;
聽聽 聽char * 聽聽 聽聽聽 聽value;聽聽 聽聽聽 聽
};


struct btsc_Packet{
聽聽 聽/*struct list_head聽聽 聽list;*/
聽聽 聽struct btsc_Property** 聽聽 聽properties;
聽聽 聽int聽聽 聽聽聽 聽聽聽 聽聽聽 聽size;
聽聽 聽int聽聽 聽聽聽 聽聽聽 聽聽聽 聽capacity;
聽聽 聽struct btsc_Context聽聽 聽*聽聽 聽ctx;
};

struct btsc_Packet* 聽聽 聽btsc_Packet_Alloc(struct btsc_Context* );
void聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽btsc_Packet_Free(struct btsc_Packet*);

struct btsc_Property*聽聽 聽btsc_Property_Alloc(struct btsc_Context* ,char * name,char * value);
void聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽btsc_Property_Free(struct btsc_Property*);


struct btsc_Property* 聽聽 聽btsc_Property_Get(struct btsc_Packet* packet,char * name); 聽聽 聽
void聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽btsc_Property_Append(struct btsc_Packet* packet,struct btsc_Property * );


struct btsc_Context{
聽聽 聽void (*tx)(struct btsc_Context*,unsigned char * data,int len);聽聽 聽聽聽 聽
聽聽 聽int (*notifier)(struct btsc_Packet* packet);/*澶栭儴閲婃斁packet,榪斿洖NULL*/聽聽 聽聽聽 聽
聽聽 聽int聽聽 聽聽聽 聽packet_cached_size;
聽聽 聽int聽聽 聽聽聽 聽recv_cached_capacity;聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽
聽聽 聽char*聽聽 聽recv_buff;聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽
聽聽 聽int聽聽 聽聽聽 聽recv_size;聽聽 聽聽聽 聽
聽聽 聽void*聽聽 聽user;聽聽 聽// 澶栭儴鏁版嵁浼犻捖犅?聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽
};


int 聽聽 聽btsc_init(struct btsc_Context* IN ctx);聽聽 聽
void 聽聽 聽btsc_cleanup(struct btsc_Context* IN ctx);
int聽聽 聽聽聽 聽btsc_Pack(struct btsc_Context* IN ctx,struct btsc_Packet* packet,unsigned char * INOUT buff,int* INOUT size);聽聽 聽
void聽聽 聽btsc_Parse(struct btsc_Context* , char * data,int len);


#define BTSC_PACKET_BEGIN(ctx) {\
聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽struct btsc_Context* _ctx_internel;\
聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽struct btsc_Packet * _pkt ;\
聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽_ctx_internel= (ctx);\
聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽_pkt = btsc_Packet_Alloc(_ctx_internel);
聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽
/* key is not suitable for vairable*/聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽
#define BTSC_NEW_PROPERTY(key,value)聽聽 聽{\
聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽struct btsc_Property * _ppt =btsc_Property_Alloc(_ctx_internel,key,value);\
聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽btsc_Property_Append(_pkt,_ppt);\
聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽}
#define BTSC_PACKET_END()聽聽 聽聽聽 聽btsc_Pack(_ctx_internel,_pkt,btsc_NULL,0);\
聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽btsc_Packet_Free(_pkt);\
聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽}

#define BTSC_FOREACH(packet,ppt)聽聽 聽{\
聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽int n;\
聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽for(n=0;n<packet->size;n++){\
聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽ppt = packet->properties[n];
#define BTSC_END_FOREACH()聽聽 聽聽聽 聽聽聽 聽}\
聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽}








/*
聽聽聽 name:聽聽聽 聽聽聽 聽聽聽 btsc
聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 serial communicating聽 with bluetooth and app-user
聽聽聽 desc:聽聽聽 聽聽聽 聽聽聽 pair parameter codec
聽聽聽
聽聽聽 聽聽聽 packet=[ key:name,...]
聽聽聽 聽聽聽
聽聽聽 implemented: 聽聽聽 zhangbin ,聽 3 hours occupied
聽聽聽 date:聽聽聽 聽聽聽 聽聽聽 2007-01-26
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifdef _UNIX
#include <unistd.h>
#endif
#include "btsc.h"

#define PACKET_HEAD聽聽聽 聽聽聽 '<'
#define PACKET_TAIL聽聽聽 聽聽聽 '>'
#define PROPERTY_DELIMITER聽聽聽 ','
#define PAIR_DELIMITER聽聽聽 聽聽聽 '='
#define ESCAPE_CHAR聽聽聽 聽聽聽 聽聽聽 '\\'


int calcEscapleLength(char * str);
char* escape_copy(char * dest,char * src);
void trim_escape_copy(char * dest,char * src,int size);
int聽 calcPacketLength(struct btsc_Packet* pkt);
int聽聽聽 is_escape_char(char c);
void parseProperty(struct btsc_Packet * pkt,char * s,char * e);
void parsePacket(struct btsc_Context* ctx,char * s,char* e);
char* 聽聽聽 __memchr(char * s,char* e,char c);

char escape_ch_table[]={PACKET_HEAD,PACKET_TAIL,PROPERTY_DELIMITER,PAIR_DELIMITER,ESCAPE_CHAR,'\0'};

struct btsc_Packet* 聽聽聽 btsc_Packet_Alloc(struct btsc_Context* ctx){聽聽聽
聽聽聽 struct btsc_Packet * pt = malloc(sizeof(struct btsc_Packet));聽聽聽 聽聽聽
聽聽聽 pt->size = 0;
聽聽聽 pt->capacity = ctx->packet_cached_size;
聽聽聽 pt->properties=malloc(pt->capacity*sizeof(struct btsc_Property*));聽聽聽
聽聽聽 pt->ctx = ctx;
聽聽聽 return pt;聽聽聽
}

void聽聽聽 btsc_Packet_Free(struct btsc_Packet* pt){聽聽聽
聽聽聽 struct btsc_Property** tmp;
聽聽聽 if( !pt ) 聽聽聽 return ;
聽聽聽 tmp = pt->properties;
聽聽聽 while(pt->size--){
聽聽聽 聽聽聽 btsc_Property_Free(*tmp++);聽聽聽 聽聽聽 聽聽聽 聽聽聽
聽聽聽 }聽聽聽 聽聽聽
聽聽聽 if( pt->properties){
聽聽聽 聽聽聽 free(pt->properties);聽
聽聽聽 }
聽聽聽 free(pt);
}


struct btsc_Property*聽聽聽 btsc_Property_Alloc(struct btsc_Context* ctx,char * name,char * value){
聽聽聽 struct btsc_Property * ppt;
聽聽聽 printf("enter btsc_Property_Alloc()\n");
聽聽聽 ppt = malloc( sizeof( struct btsc_Property) );
聽聽聽 if(!ppt)聽聽聽 printf("error: malloc failed (s1)\n");
聽聽聽 ppt->name = malloc( strlen(name)+1);
聽聽聽 if( !ppt->name ) printf("error: malloc failed (s2)\n");
聽聽聽 strcpy(ppt->name,name);聽聽聽
聽聽聽 ppt->value = malloc( strlen(value)+1);
聽聽聽 if( !ppt->value) printf("error: malloc failed (s3),str:%s, len: %d\n",value,strlen(value)+1);
聽聽聽 strcpy( ppt->value,value);
聽聽聽 return ppt;
}

void聽聽聽 聽聽聽 btsc_Property_Free(struct btsc_Property* ppt){
聽聽聽 if( !ppt )聽聽聽 return;
聽聽聽 free( ppt->name);
聽聽聽 free( ppt->value);
聽聽聽 free( ppt);
}

/* scan pointer array */
struct btsc_Property* 聽聽聽 btsc_Property_Get(struct btsc_Packet* pkt,char * name){
聽聽聽 int size;
聽聽聽 struct btsc_Property* ppt;
聽聽聽 size = pkt->size;
聽聽聽 while(size--){
聽聽聽 聽聽聽 ppt = pkt->properties[size];
聽聽聽 聽聽聽 if( !strcmp( name, ppt->name ) ){
聽聽聽 聽聽聽 聽聽聽 return ppt;/*that's ok */
聽聽聽 聽聽聽 }
聽聽聽 }
聽聽聽 return btsc_NULL;
}

/* low effeciency, memory allocation,more costs*/
void聽聽聽 btsc_Property_Append(struct btsc_Packet* pt,struct btsc_Property * ppt){
聽聽聽 struct btsc_Property** tmpppt;
聽聽聽 if( pt->size==pt->capacity){ 聽聽聽 聽聽聽
聽聽聽 聽聽聽 pt->capacity += pt->ctx->packet_cached_size;聽聽聽
聽聽聽 聽聽聽 tmpppt = pt->properties;聽聽聽 聽聽聽
聽聽聽 聽聽聽 pt->properties = malloc( pt->capacity * sizeof( struct btsc_Property**) );
聽聽聽 聽聽聽 memcpy( pt->properties, tmpppt, pt->size * sizeof( struct btsc_Property**));
聽聽聽 聽聽聽 free( tmpppt);
聽聽聽 }
聽聽聽 pt->properties[pt->size++]=ppt;聽聽聽
}

int 聽聽聽 btsc_init(struct btsc_Context* ctx){聽聽聽
聽聽聽 ctx->packet_cached_size = 10;聽聽聽
聽聽聽 if( ctx->recv_cached_capacity==0){
聽聽聽 聽聽聽 ctx->recv_cached_capacity = 1024*2;聽聽聽
聽聽聽 }
聽聽聽 ctx->recv_buff = malloc( ctx->recv_cached_capacity );
聽聽聽 ctx->recv_size = 0;
聽聽聽 return btsc_TRUE;
}

void 聽聽聽 btsc_cleanup(struct btsc_Context* ctx){
聽聽聽 free(ctx->recv_buff);聽聽聽
}

/*
**聽聽聽 name:聽聽聽 calcEscapleLength
**聽聽聽 desc:聽聽聽 璁$畻鍚漿涔夊瓧絎︿覆闀垮害
*/
int 聽聽聽 calcEscapleLength(char * str){
聽聽聽 int len;
聽聽聽 char * pesc;
聽聽聽 len = 0;聽聽聽
聽聽聽 while( *str ){
聽聽聽 聽聽聽 pesc = escape_ch_table;
聽聽聽 聽聽聽 while( *pesc ){
聽聽聽 聽聽聽 聽聽聽 if( *pesc==*str){
聽聽聽 聽聽聽 聽聽聽 聽聽聽 len++;
聽聽聽 聽聽聽 聽聽聽 聽聽聽 break;
聽聽聽 聽聽聽 聽聽聽 }
聽聽聽 聽聽聽 聽聽聽 pesc++;
聽聽聽 聽聽聽 }聽聽聽 聽聽聽
聽聽聽 聽聽聽 str++;
聽聽聽 }聽聽聽
聽聽聽 return len;
}


char* escape_copy(char * dest,char * src){
聽聽聽 char * pesc;
聽聽聽 while( *src ){
聽聽聽 聽聽聽 pesc = escape_ch_table;
聽聽聽 聽聽聽 while( *pesc ){
聽聽聽 聽聽聽 聽聽聽 if( *pesc==*src){
聽聽聽 聽聽聽 聽聽聽 聽聽聽 *dest++=ESCAPE_CHAR;
聽聽聽 聽聽聽 聽聽聽 聽聽聽 break;
聽聽聽 聽聽聽 聽聽聽 }
聽聽聽 聽聽聽 聽聽聽 pesc++;
聽聽聽 聽聽聽 }
聽聽聽 聽聽聽 *dest++=*src++;聽聽聽 聽聽聽 聽聽聽 聽聽聽
聽聽聽 }聽聽聽
聽聽聽 return dest;聽聽聽
}

void trim_escape_copy(char * dest,char * src,int size){
聽聽聽 int last_escape = btsc_FALSE;
聽聽聽 while( size--){
聽聽聽 聽聽聽 if( *src == ESCAPE_CHAR && last_escape != btsc_TRUE){聽聽聽 聽聽聽
聽聽聽 聽聽聽 聽聽聽 last_escape = btsc_TRUE聽聽聽 ;
聽聽聽 聽聽聽 聽聽聽 src++;
聽聽聽 聽聽聽 聽聽聽 continue;
聽聽聽 聽聽聽 }
聽聽聽 聽聽聽 last_escape = btsc_FALSE;
聽聽聽 聽聽聽 *dest++=*src++;聽聽聽 聽聽聽
聽聽聽 }
}

int聽聽 聽聽聽 calcPacketLength(struct btsc_Packet* pkt){
聽聽聽 int len;
聽聽聽 int size;
聽聽聽 struct btsc_Property* ppt;聽聽聽
聽聽聽 len = 0;
聽聽聽 size = pkt->size;
聽聽聽 while( size--){
聽聽聽 聽聽聽 ppt = pkt->properties[size];聽聽聽
聽聽聽 聽聽聽 len+=strlen(ppt->name)+strlen(ppt->value);聽聽聽

聽聽聽 聽聽聽 len+= calcEscapleLength(ppt->name);
聽聽聽 聽聽聽 len+= calcEscapleLength(ppt->value);聽聽聽
聽聽聽 }
聽聽聽 len+= pkt->size*2+1;
聽聽聽 return聽 len;
}


int聽聽聽 聽聽聽 btsc_Pack(struct btsc_Context*聽 ctx,struct btsc_Packet* pkt,unsigned char * obuff,int* osize){
聽聽聽 struct btsc_Property* ppt;
聽聽聽 int size;
聽聽聽 int len;
聽聽聽 unsigned char * buff;
聽聽聽 char * pbuff;
聽聽聽 len = calcPacketLength( pkt);
聽聽聽 buff = malloc( len );
聽聽聽 size = pkt->size;
聽聽聽 pbuff = (char*)buff;
聽聽聽 *pbuff++=PACKET_HEAD;聽聽聽
聽聽聽 while( size--){
聽聽聽 聽聽聽 ppt = pkt->properties[size];聽聽聽
聽聽聽 聽聽聽 pbuff = escape_copy(pbuff,ppt->name);
聽聽聽 聽聽聽 *pbuff++=PAIR_DELIMITER;
聽聽聽 聽聽聽 pbuff = escape_copy(pbuff,ppt->value);
聽聽聽 聽聽聽 if( size ){
聽聽聽 聽聽聽 聽聽聽 *pbuff++=PROPERTY_DELIMITER;聽聽聽 聽聽聽 聽聽聽
聽聽聽 聽聽聽 }
聽聽聽 }
聽聽聽 *pbuff = PACKET_TAIL;
聽聽聽 if( ctx->tx ){
聽聽聽 聽聽聽 ctx->tx(ctx,buff,len);
聽聽聽 }
聽聽聽 if( obuff && *osize >=len){
聽聽聽 聽聽聽 memcpy( obuff, buff ,len);
聽聽聽 聽聽聽 *osize = len;
聽聽聽 }

聽聽聽 free(buff);
聽聽聽 return btsc_TRUE;聽聽聽
}

/* e not in range*/
char* 聽聽聽 __memchr(char * s,char* e,char c){
聽聽聽 while( s!=e){
聽聽聽 聽聽聽 if( *s == c){
聽聽聽 聽聽聽 聽聽聽 return s;
聽聽聽 聽聽聽 }聽聽聽 聽聽聽
聽聽聽 聽聽聽 s++;
聽聽聽 }
聽聽聽 return btsc_NULL;
}

int聽聽聽 聽聽聽 is_escape_char(char c){
聽聽聽 return btsc_FALSE;聽聽聽
}

/*
聽聽聽 name: parseProperty
聽聽聽 desc: 鎸囧畾鍐呭瓨鑼冨洿涓彁鍙栧睘鎬?key=>value
聽聽聽 聽聽聽 鎼滅儲(chǔ)鍖呭惈e
聽聽聽 params:聽聽聽
聽聽聽 聽聽聽 pkt聽聽聽 --聽聽聽 娑堟伅鏁版嵁鍖?br />聽聽聽 聽聽聽 s聽聽聽 --聽聽聽 璧峰鍐呭瓨鍦板潃
聽聽聽 聽聽聽 e聽聽聽 --聽聽聽 緇撴潫鍦板潃 ,
*/
void parseProperty(struct btsc_Packet * pkt,char * s,char * e){
聽聽聽 char * p1,*p2;
聽聽聽 int n;
聽聽聽 struct btsc_Property*聽聽聽 ppt;
聽聽聽 p1 = s ;
聽聽聽 p2 = e;
__REPEAT:聽聽聽
聽聽聽 p1 = __memchr(p1,e+1,PAIR_DELIMITER);
聽聽聽 if( p1 ){
聽聽聽 聽聽聽 if( *(p1-1) == ESCAPE_CHAR ){
聽聽聽 聽聽聽 聽聽聽 p1++;
聽聽聽 聽聽聽 聽聽聽 goto __REPEAT;
聽聽聽 聽聽聽 }
聽聽聽 聽聽聽 ppt = malloc( sizeof( struct btsc_Property ));
聽聽聽 聽聽聽 n = p1-s; 聽聽聽 聽聽聽
聽聽聽 聽聽聽 ppt->name = malloc( n+1 );
聽聽聽 聽聽聽 memset(ppt->name,0,n+1);聽聽聽 聽聽聽
聽聽聽 聽聽聽 trim_escape_copy(ppt->name,s,n);
聽聽聽 聽聽聽
聽聽聽 聽聽聽 n =e-p1;
聽聽聽 聽聽聽 ppt->value = malloc( n+1);
聽聽聽 聽聽聽 memset(ppt->value,0,n+1);
聽聽聽 聽聽聽 trim_escape_copy(ppt->value,p1+1,n);
聽聽聽 聽聽聽
聽聽聽 聽聽聽 btsc_Property_Append(pkt,ppt);
聽聽聽 }
}

/*
聽聽聽 name: parsePacket
聽聽聽 desc:聽聽聽 鍒嗚В鎸囧畾鍐呭瓨鍒板寘緇撴瀯
聽聽聽 聽聽聽 聽聽聽 鎴愬姛鍒嗚В鍑哄寘绔嬪埢鍥為佸埌搴旂敤鎺ユ敹鑰?( btsc_Context::notifier)
聽聽聽 param:
聽聽聽 聽聽聽 s,e 聽聽聽 鍐呭瓨鍦板潃 (澶別)

** 緙撳啿鍖鴻繕闇榪涗竴姝ユ祴璇?鍖呮嫭緙撳啿鍖哄ぇ灝忚皟鑺? 涓嶅畬鏁村崗璁寘鏍煎紡鐨勫閿?br />*/
void 聽聽聽 parsePacket(struct btsc_Context* ctx,char * s,char* e){
聽聽聽 char *p,*p1,*p2;
聽聽聽 struct btsc_Packet * pkt;
聽聽聽 if( e-s <=1 ){
聽聽聽 聽聽聽 return ;
聽聽聽 }
聽聽聽 pkt = btsc_Packet_Alloc(ctx);
聽聽聽
聽聽聽 p1 = s+1;
聽聽聽 p2 = e-1;
聽聽聽 p = p1;
__REPEAT:聽聽聽
聽聽聽 p = __memchr(p,e,PROPERTY_DELIMITER);
聽聽聽 if( p ){
聽聽聽 聽聽聽 if( *(p-1)==ESCAPE_CHAR){
聽聽聽 聽聽聽 聽聽聽 p = p+1;
聽聽聽 聽聽聽 聽聽聽 goto __REPEAT;
聽聽聽 聽聽聽 }
聽聽聽 聽聽聽 parseProperty(pkt,p1,p-1);
聽聽聽 聽聽聽 p1 = ++p;
聽聽聽 聽聽聽 goto __REPEAT;
聽聽聽 }
聽聽聽 /*allow one property reside in*/
聽聽聽 parseProperty(pkt,p1,e-1);
聽聽聽 if( ctx->notifier ){
聽聽聽聽聽聽聽 if(ctx->notifier(pkt)){ /* nonzero value錛?delete internal*/
聽聽聽聽聽聽聽聽聽聽聽 btsc_Packet_Free(pkt);聽聽聽 聽聽聽聽聽聽聽
聽聽聽聽聽聽聽 }
聽聽聽 }else{
聽聽聽 聽聽 btsc_Packet_Free(pkt);聽聽聽
聽聽聽 }
}

void聽聽聽 btsc_Parse(struct btsc_Context* ctx, char * data,int size){
聽聽聽 int len ;
_RESTART:
聽聽聽 while( size ){
聽聽聽 聽聽聽 len = ctx->recv_cached_capacity - ctx->recv_size;
聽聽聽 聽聽聽 if( len >0){
聽聽聽 聽聽聽 聽聽聽 if( size <= len){
聽聽聽 聽聽聽 聽聽聽 聽聽聽 len = size;
聽聽聽 聽聽聽 聽聽聽 聽聽聽 size = 0;
聽聽聽 聽聽聽 聽聽聽 }else{
聽聽聽 聽聽聽 聽聽聽 聽聽聽 size-=len;
聽聽聽 聽聽聽 聽聽聽 }
聽聽聽 聽聽聽 聽聽聽 memcpy( ctx->recv_buff+ctx->recv_size,data,len);
聽聽聽 聽聽聽 聽聽聽 ctx->recv_size+=len;
聽聽聽 聽聽聽 聽聽聽 data+=len;
聽聽聽 聽聽聽 }聽聽聽
聽聽聽 聽聽聽
聽聽聽 聽聽聽 {
聽聽聽 聽聽聽 聽聽聽 char * p1,*p2;聽聽聽 聽聽聽 聽聽聽
_RESCAN:聽聽聽 聽聽聽 聽聽聽
聽聽聽 聽聽聽 聽聽聽 p1 = ctx->recv_buff;
_RESCAN_HEAD:聽聽聽 聽聽聽 聽聽聽 聽
聽聽聽 聽聽聽 聽聽聽 p1 = __memchr(p1,ctx->recv_buff+ctx->recv_size,PACKET_HEAD);聽聽聽 聽聽聽 聽聽聽
聽聽聽 聽聽聽 聽聽聽 if( !p1 ){
聽聽聽 聽聽聽 聽聽聽 聽聽聽 ctx->recv_size =0;
聽聽聽 聽聽聽 聽聽聽 聽聽聽 if( size ){
聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 goto _RESTART;
聽聽聽 聽聽聽 聽聽聽 聽聽聽 }
聽聽聽 聽聽聽 聽聽聽 }
聽聽聽 聽聽聽 聽聽聽 if( p1>ctx->recv_buff && *(p1-1)==ESCAPE_CHAR){ /* "\<" */
聽聽聽 聽聽聽 聽聽聽 聽聽聽 p1++;
聽聽聽 聽聽聽 聽聽聽 聽聽聽 goto _RESCAN_HEAD;聽聽聽
聽聽聽 聽聽聽 聽聽聽 }
聽聽聽 聽聽聽 聽聽聽
聽聽聽 聽聽聽 聽聽聽 /*move backward*/
聽聽聽 聽聽聽 聽聽聽 ctx->recv_size -=(p1-ctx->recv_buff);
聽聽聽 聽聽聽 聽聽聽 memmove(ctx->recv_buff,p1, ctx->recv_size);
聽聽聽 聽聽聽 聽聽聽 p1=ctx->recv_buff;
聽聽聽 聽聽聽 聽聽聽 p2 = p1+1;
_RESCAN_TAIL:聽聽聽 聽聽聽 聽聽聽
聽聽聽 聽聽聽 聽聽聽 p2 = __memchr(p2,ctx->recv_buff+ctx->recv_size,PACKET_TAIL);
聽聽聽 聽聽聽 聽聽聽 if( !p2 ){
聽聽聽 聽聽聽 聽聽聽 聽聽聽 if( ctx->recv_size == ctx->recv_cached_capacity ){
聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 ctx->recv_size聽 = 0;
聽聽聽 聽聽聽 聽聽聽 聽聽聽 }
聽聽聽 聽聽聽 聽聽聽 聽聽聽 goto _RESTART;
聽聽聽 聽聽聽 聽聽聽 }
聽聽聽 聽聽聽 聽聽聽 if( *(p2-1) == ESCAPE_CHAR ){
聽聽聽 聽聽聽 聽聽聽 聽聽聽 p2++;
聽聽聽 聽聽聽 聽聽聽 聽聽聽 goto _RESCAN_TAIL;聽聽聽
聽聽聽 聽聽聽 聽聽聽 }
聽聽聽 聽聽聽 聽聽聽
聽聽聽 聽聽聽 聽聽聽 parsePacket(ctx,p1,p2);
聽聽聽 聽聽聽 聽聽聽 ctx->recv_size -=p2-p1+1;
聽聽聽 聽聽聽 聽聽聽 if( ctx->recv_size ){
聽聽聽 聽聽聽 聽聽聽 聽聽聽 memmove(ctx->recv_buff,p2+1,ctx->recv_size);
聽聽聽 聽聽聽 聽聽聽 聽聽聽 goto _RESCAN;
聽聽聽 聽聽聽 聽聽聽 }聽聽聽 聽聽聽 聽聽聽 聽
聽聽聽 聽聽聽 }聽聽聽 聽聽聽
聽聽聽 }
}

/*聽聽 debug */
#ifdef _DEBUGX
void tx(unsigned char * data,int len);
void notifier(struct btsc_Packet* packet);
/*鍒濆鍖栦笂涓嬫枃錛?tx=鍙戦佸鐞嗗嚱鏁?notifier=鎺ユ敹鍑芥暟*/
struct btsc_Context c={tx:tx,notifier:notifier};

/*嫻嬭瘯鏁版嵁鎺ユ敹騫惰В鏋?/
void rx(){聽聽聽
聽聽聽 聽char * msg="<MSG=HELLO,NAME=SCOTT>"
聽聽聽 聽聽聽聽 聽聽聽 聽聽聽 "<MSG2=HELLO2,NAME2=SCOTT2>"
聽聽聽 聽聽聽聽 聽聽聽 聽聽聽 "<MSG3=HELLO3,NAME3=SCOTT3>"; /*simulating data*/
聽聽聽 int len = strlen(msg);
聽聽聽 btsc_Parse(&c,msg,len);
}
/*鍙戦佸鐞嗚繃紼?/
void tx(unsigned char * buff,int len){聽聽聽
聽聽聽 char *outmsg = malloc(1024*10);
聽聽聽 memset(outmsg,0,1024*10);
聽聽聽 memcpy(outmsg,buff,len);
聽聽聽 printf("encode str: %s\n",outmsg);
聽聽聽 free(outmsg);
聽聽聽 btsc_Parse(&c,buff,len);
}

void notifier(struct btsc_Packet* packet){
聽聽聽 struct btsc_Property * ppt;
聽聽聽 ppt = btsc_Property_Get(packet,"MSG");
聽聽聽 if(ppt)
聽聽聽 聽聽聽 printf("property get: MSG=>%s\n",ppt->value);
聽聽聽 /*閬嶅巻鍖呭唴灞炴у弬鏁?/
聽聽聽 BTSC_FOREACH(packet,ppt);
聽聽聽 printf("packet: %s=>%s\n",ppt->name,ppt->value);
聽聽聽 BTSC_END_FOREACH();
}

int main(){
聽聽聽 int r;
聽聽聽 /*optional*/
聽聽聽 c.recv_cached_capacity = 1024; /*鍒濆鍖栨帴鏀剁紦鍐插尯澶у皬 byte*/
聽聽聽 c.packet_cached_size = 5;聽聽聽 /*娑堟伅鍖呯紦鍐插睘鎬т釜鏁?/
聽聽聽 btsc_init(&c);聽聽聽 聽聽聽 聽聽聽 /*涓婁笅鏂囧垵濮嬪寲*/
聽聽聽 puts("test rx()...");
聽聽聽 rx();聽聽聽 /*鎺?/
聽聽聽 puts("escape testing...");聽聽聽
聽聽聽 do{
聽聽聽 聽聽聽 /*鏋勯犳秷鎭寘,騫跺畬鎴愬彂閫?/
聽聽聽 聽聽聽 BTSC_PACKET_BEGIN(&c);
聽聽聽 聽聽聽 BTSC_NEW_PROPERTY("MSG","calling");

聽聽聽 聽聽聽 BTSC_PACKET_END();聽聽聽
聽聽聽 聽聽聽 usleep(1000*50);
聽聽聽 聽聽聽 printf(">>seq:%d\n",r);
聽聽聽 }while(0);
聽聽聽 聽聽聽
聽聽聽 btsc_cleanup(&c);聽聽聽
聽聽聽
聽聽聽 return 0;
}


#endif



鏀懼眮闃跨嫍 2007-02-23 22:54 鍙戣〃璇勮
]]>
闅忎究鍐欎釜 綰跨▼綾?鐜╃帺http://www.shnenglu.com/socketref/archive/2007/02/23/18930.html鏀懼眮闃跨嫍 鏀懼眮闃跨嫍 Fri, 23 Feb 2007 14:47:00 GMThttp://www.shnenglu.com/socketref/archive/2007/02/23/18930.htmlhttp://www.shnenglu.com/socketref/comments/18930.htmlhttp://www.shnenglu.com/socketref/archive/2007/02/23/18930.html#Feedback3http://www.shnenglu.com/socketref/comments/commentRss/18930.htmlhttp://www.shnenglu.com/socketref/services/trackbacks/18930.html#define _BT_THREAD_H

#include <windows.h>

class btworkThread{
public:
聽聽 聽btworkThread( void(*entry)(btworkThread* ,void*),void* user){聽聽 聽聽聽 聽
聽聽 聽聽聽 聽_entry = entry;聽聽 聽聽聽 聽
聽聽 聽聽聽 聽_param = user;
聽聽 聽聽聽 聽_thandle = CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)btworkThread::run,user,NULL,&_tid);
聽聽 聽}
聽聽 聽void聽聽 聽stop(){
聽聽 聽聽聽 聽_loop = false;
聽聽 聽}
聽聽 聽void聽聽 聽wait(){
聽聽 聽聽聽 聽while(!_end){
聽聽 聽聽聽 聽聽聽 聽Sleep(20);
聽聽 聽聽聽 聽}
聽聽 聽聽聽 聽Sleep(20);聽 // ensure that thread has terminated
聽聽 聽}
聽聽 聽void聽聽 聽stopAndWait(){
聽聽 聽聽聽 聽stop();wait();
聽聽 聽}
聽聽 聽bool聽聽 聽loop(){
聽聽 聽聽聽 聽return _loop;
聽聽 聽}
聽聽 聽void聽聽 聽code_begin(){
聽聽 聽聽聽 聽_loop = true; _begin = true;_end=false;
聽聽 聽}
聽聽 聽void聽聽 聽code_end(){
聽聽 聽聽聽 聽_loop = false; _begin = false;_end=true;
聽聽 聽聽聽 聽CloseHandle(_thandle);
聽聽 聽}
protected:
聽聽 聽static void聽聽 聽run(btworkThread* thread){
聽聽 聽聽聽 聽thread->_entry(thread,thread->_param);
聽聽 聽}
private:
聽聽 聽volatile bool聽聽 聽_loop,_begin,_end;
聽聽 聽void (*_entry)(btworkThread* ,void*);
聽聽 聽void*聽聽 聽_param;
聽聽 聽DWORD聽聽 聽_tid;
聽聽 聽HANDLE聽聽 聽_thandle;
};

鏀懼眮闃跨嫍 2007-02-23 22:47 鍙戣〃璇勮
]]>
闂叉潵鏃犱簨錛屽啓涓櫤鑳芥寚閽堢被 鐜╃帺http://www.shnenglu.com/socketref/archive/2007/02/23/18929.html鏀懼眮闃跨嫍 鏀懼眮闃跨嫍 Fri, 23 Feb 2007 14:39:00 GMThttp://www.shnenglu.com/socketref/archive/2007/02/23/18929.htmlhttp://www.shnenglu.com/socketref/comments/18929.htmlhttp://www.shnenglu.com/socketref/archive/2007/02/23/18929.html#Feedback0http://www.shnenglu.com/socketref/comments/commentRss/18929.htmlhttp://www.shnenglu.com/socketref/services/trackbacks/18929.html
template <typename T>
class SmartHandlePtr{
聽聽聽 struct Handle{
聽聽聽 聽聽聽 Handle(){
聽聽聽 聽聽聽 聽聽聽 ptr = NULL;
聽聽聽 聽聽聽 聽聽聽 cnt = 0;
聽聽聽 聽聽聽 }
聽聽聽 聽聽聽 void*聽聽聽 ptr;
聽聽聽 聽聽聽 int聽聽聽 聽聽聽 cnt;
聽聽聽 聽聽聽 btLock聽聽聽 lock;
聽聽聽 聽聽聽 void聽聽聽 inc(){
聽聽聽 聽聽聽 聽聽聽 btScopeLock sl(lock);
聽聽聽 聽聽聽 聽聽聽 cnt++;
聽聽聽 聽聽聽 }
聽聽聽 聽聽聽 void聽聽聽 dec(){
聽聽聽 聽聽聽 聽聽聽 btScopeLock sl(lock);
聽聽聽 聽聽聽 聽聽聽 cnt--;
聽聽聽 聽聽聽 }
聽聽聽 };
public:
聽聽聽 SmartHandlePtr(const T* p){
聽聽聽 聽聽聽 _ph = new Handle;
聽聽聽 聽聽聽 _ph->ptr =(void*) p;
聽聽聽 聽聽聽 _ph->inc();
聽聽聽 }

聽聽聽 ~SmartHandlePtr(){
聽聽聽 聽聽聽 if( _ph ){
聽聽聽 聽聽聽 聽聽聽 _ph->dec();
聽聽聽 聽聽聽 聽聽聽 if( _ph->cnt==0){
聽聽聽 聽聽聽 聽聽聽 聽聽聽 T* p;
聽聽聽 聽聽聽 聽聽聽 聽聽聽 p = (T*)_ph->ptr;
聽聽聽 聽聽聽 聽聽聽 聽聽聽 if( p ){
聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 delete p;
聽聽聽 聽聽聽 聽聽聽 聽聽聽 }
聽聽聽 聽聽聽 聽聽聽 聽聽聽 delete _ph;
聽聽聽 聽聽聽 聽聽聽 }聽聽聽 聽聽聽 聽聽聽
聽聽聽 聽聽聽 }
聽聽聽 }

聽聽聽 SmartHandlePtr(const SmartHandlePtr& shp){
聽聽聽 聽聽聽 if( _ph ){
聽聽聽 聽聽聽 聽聽聽 _ph->dec();
聽聽聽 聽聽聽 聽聽聽 if( _ph->cnt==0){
聽聽聽 聽聽聽 聽聽聽 聽聽聽 T* p;
聽聽聽 聽聽聽 聽聽聽 聽聽聽 p = (T*)_ph->ptr;
聽聽聽 聽聽聽 聽聽聽 聽聽聽 if( p){
聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 delete p;
聽聽聽 聽聽聽 聽聽聽 聽聽聽 }
聽聽聽 聽聽聽 聽聽聽 聽聽聽 delete _ph;
聽聽聽 聽聽聽 聽聽聽 }聽聽聽 聽聽聽 聽聽聽
聽聽聽 聽聽聽 }
聽聽聽 聽聽聽 _ph = _ph;
聽聽聽 聽聽聽 _ph->inc();
聽聽聽 }
聽聽聽 bool operator==(const T* p) {
聽聽聽 聽聽聽 return _ph->ptr == p;
聽聽聽 }
聽聽聽 bool operator==(const SmartHandlePtr& shp){
聽聽聽 聽聽聽 return _ph == shp._ph;
聽聽聽 }

聽聽聽 T* operator->(){
聽聽聽 聽聽聽 return (T*)_ph->ptr;
聽聽聽 }

聽聽聽 T* get(){
聽聽聽 聽聽聽 if( _ph && _ph->ptr){
聽聽聽 聽聽聽 聽聽聽 return (T*)_ph->ptr;
聽聽聽 聽聽聽 }
聽聽聽 聽聽聽 return NULL;
聽聽聽 }

private:
聽聽聽 Handle*聽聽聽 _ph;
};


鏀懼眮闃跨嫍 2007-02-23 22:39 鍙戣〃璇勮
]]>
亚洲国产成人久久综合碰| 日本欧美久久久久免费播放网| 国产精品久久网| 国产香蕉97碰碰久久人人| 久久亚洲国产精品123区| 精品久久亚洲中文无码| 久久国产精品成人影院| 精品人妻伦一二三区久久| 久久精品国产2020| 精品无码久久久久久久久久| 久久夜色精品国产噜噜亚洲a| 国产精品福利一区二区久久| 欧美精品丝袜久久久中文字幕 | 久久综合久久鬼色| 久久精品夜夜夜夜夜久久| 欧洲国产伦久久久久久久| 国产亚洲精品自在久久| 亚洲精品无码久久久| 久久婷婷久久一区二区三区| 久久WWW免费人成一看片| 久久强奷乱码老熟女| 国产精品久久亚洲不卡动漫| 精品久久久一二三区| 精品国产乱码久久久久久浪潮| 久久久噜噜噜www成人网| 亚洲美日韩Av中文字幕无码久久久妻妇 | 国产A三级久久精品| 欧美激情精品久久久久久| 久久97久久97精品免视看秋霞| 激情伊人五月天久久综合| 一本色道久久综合狠狠躁| 99久久国产亚洲综合精品| 久久国产免费| 国产精品美女久久久久av爽| 国产一级持黄大片99久久| 国产亚洲精品美女久久久| 久久久久亚洲AV无码专区体验| 婷婷五月深深久久精品| 少妇精品久久久一区二区三区 | 色偷偷91久久综合噜噜噜噜| 久久国产福利免费|