⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zigclient_8h-source.html

📁 用来介绍ZIG Library游戏网络引擎的文档
💻 HTML
📖 第 1 页 / 共 3 页
字号:
00220         <span class="keywordtype">bool</span> <a class="code" href="classzigclient__c.html#a23">disconnect</a>(<span class="keywordtype">int</span> code_reason = 0);00221 <a name="l00223"></a><a class="code" href="classzigclient__c.html#a24">00223</a>         <span class="keywordtype">bool</span> <a class="code" href="classzigclient__c.html#a24">is_connected</a>() { <span class="keywordflow">if</span> (client) <span class="keywordflow">return</span> client-&gt;is_connected(); <span class="keywordflow">return</span> <span class="keyword">false</span>; }00224 00225         <span class="comment">//is not disconnected?</span>00226         <span class="keywordtype">bool</span> is_not_disconnected() { <span class="keywordflow">if</span> (client) <span class="keywordflow">return</span> client-&gt;is_not_disconnected(); <span class="keywordflow">return</span> <span class="keyword">false</span>; }00227 <a name="l00233"></a><a class="code" href="classzigclient__c.html#a26">00233</a>         <span class="keywordtype">void</span> <a class="code" href="classzigclient__c.html#a26">send_packet_now</a>() { last_packet_send = 0.0; }00234 00237         <span class="keywordtype">void</span> <a class="code" href="classzigclient__c.html#a27">send_input_packet</a>();00238 <a name="l00245"></a><a class="code" href="classzigclient__c.html#a28">00245</a>         <span class="keywordtype">void</span> <a class="code" href="classzigclient__c.html#a28">input_changed</a>(<a class="code" href="classbuffer__c.html">buffer_c</a> &amp;udata) {00246                 keyout_mutex.lock();00247                 keyout = udata;00248                 keyout_changed = <span class="keyword">true</span>;00249                 keyout_mutex.unlock();00250         }00251 <a name="l00254"></a><a class="code" href="classzigclient__c.html#a29">00254</a>         <span class="keywordtype">void</span> <a class="code" href="classzigclient__c.html#a29">input_changed_noflush</a>(<a class="code" href="classbuffer__c.html">buffer_c</a> &amp;udata) {00255                 keyout_mutex.lock();00256                 keyout = udata;00257                 keyout_mutex.unlock();00258         }00259 00260         <span class="comment">// ----------------------------------------------------------------------------------------</span>00261         <span class="comment">//    METHODS THAT SHOULD BE OVERRIDEN: </span>00262         <span class="comment">// ----------------------------------------------------------------------------------------</span>00263 <a name="l00267"></a><a class="code" href="classzigclient__c.html#a30">00267</a>         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classzigclient__c.html#a30">init</a>() { <span class="keywordflow">return</span> <span class="keyword">true</span>; }00268 <a name="l00273"></a><a class="code" href="classzigclient__c.html#a31">00273</a>         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classzigclient__c.html#a31">render_frame</a>() { <span class="keywordflow">return</span> <span class="keyword">true</span>; }00274 <a name="l00279"></a><a class="code" href="classzigclient__c.html#a32">00279</a>         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classzigclient__c.html#a32">poll_input</a>() { <span class="keywordflow">return</span> <span class="keyword">true</span>; }00280 <a name="l00283"></a><a class="code" href="classzigclient__c.html#a33">00283</a>         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classzigclient__c.html#a33">finish</a>() { }00284 <a name="l00288"></a><a class="code" href="classzigclient__c.html#a34">00288</a>         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classzigclient__c.html#a34">ziglets_preparing</a>() { }00289 <a name="l00293"></a><a class="code" href="classzigclient__c.html#a35">00293</a>         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classzigclient__c.html#a35">ziglets_ready</a>() { }00294 <a name="l00297"></a><a class="code" href="classzigclient__c.html#a36">00297</a>         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classzigclient__c.html#a36">before_send_keyout</a>() { }00298 00300         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classzigclient__c.html#a37">connected</a>(<a class="code" href="classbuffer__c.html">buffer_c</a> &amp;hello) = 0;00301 00303         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classzigclient__c.html#a38">connection_timed_out</a>() = 0;00304 00309         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classzigclient__c.html#a39">connection_refused</a>(<a class="code" href="classbuffer__c.html">buffer_c</a> &amp;reason, <span class="keywordtype">int</span> code_reason) = 0;00310 00318         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classzigclient__c.html#a40">disconnected</a>(<span class="keywordtype">bool</span> server_initiated, <a class="code" href="classbuffer__c.html">buffer_c</a> &amp;reason, <span class="keywordtype">int</span> code_reason, <span class="keywordtype">int</span> zig_reason) = 0;00319 00321         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classzigclient__c.html#a41">incoming_data</a>(<a class="code" href="classbuffer__c.html">buffer_c</a> &amp;in, <span class="keywordtype">int</span> packet_id) = 0;00322 00326         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classzigclient__c.html#a42">incoming_server_info</a>(<a class="code" href="classaddress__c.html">address_c</a> &amp;addr, <a class="code" href="classbuffer__c.html">buffer_c</a> &amp;info, <span class="keywordtype">int</span> time_ms, <span class="keywordtype">bool</span> timedout) = 0;00327 00329         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classzigclient__c.html#a43">channel_opened</a>(<span class="keywordtype">int</span> channel_id, <a class="code" href="classchannel__c.html">channel_c</a> *ch) = 0;00330 00331         <span class="comment">// ----------------------------------------------------------------------------------------</span>00332         <span class="comment">//    MESSAGING METHODS TO CALL WHILE CONNECTED TO A SERVER:</span>00333         <span class="comment">// ----------------------------------------------------------------------------------------</span>00334 <a name="l00338"></a><a class="code" href="classzigclient__c.html#a44">00338</a>         <span class="keywordtype">bool</span> <a class="code" href="classzigclient__c.html#a44">send_message</a>(<a class="code" href="classbuffer__c.html">buffer_c</a> &amp;message, <span class="keywordtype">int</span> policy = RSP_USE_DEFAULT) { <span class="keywordflow">if</span> (client) <span class="keywordflow">return</span> (client-&gt;send_message(message, policy) != 0); <span class="keywordflow">return</span> <span class="keyword">false</span>; }00339 00350         <span class="keywordtype">bool</span> <a class="code" href="classzigclient__c.html#a45">send_frame</a>(<a class="code" href="classbuffer__c.html">buffer_c</a> &amp;udata, <span class="keywordtype">int</span> *packet_id = 0); <span class="comment">// { if (client) return (client-&gt;send_frame(udata, packet_id) != 0); return false; }</span>00351 <a name="l00355"></a><a class="code" href="classzigclient__c.html#a46">00355</a>         <a class="code" href="classbuffer__c.html">buffer_c</a> <a class="code" href="classzigclient__c.html#a46">receive_message</a>() { <span class="keywordflow">if</span> (client) <span class="keywordflow">return</span> client-&gt;receive_message(); <a class="code" href="classbuffer__c.html">buffer_c</a> b; b.<a class="code" href="classbuffer__c.html#m0">code</a> = -1; <span class="keywordflow">return</span> b; }00356 <a name="l00360"></a><a class="code" href="classzigclient__c.html#a47">00360</a>         <span class="keywordtype">int</span> <a class="code" href="classzigclient__c.html#a46">receive_message</a>(<a class="code" href="classbuffer__c.html">buffer_c</a> &amp;msgbuf) { <span class="keywordflow">if</span> (client) <span class="keywordflow">return</span> client-&gt;receive_message(msgbuf); <span class="keywordflow">return</span> -1; }00361 00362         <span class="comment">// ----------------------------------------------------------------------------------------</span>00363         <span class="comment">//    RESOURCE FILE MANAGEMENT ("ZIGLETS")-RELATED METHODS:</span>00364         <span class="comment">// ----------------------------------------------------------------------------------------</span>00365 <a name="l00367"></a><a class="code" href="classzigclient__c.html#a48">00367</a>         <a class="code" href="classziglet__manager__c.html">ziglet_manager_c</a> *<a class="code" href="classzigclient__c.html#a48">get_ziglet_manager</a>() { <span class="keywordflow">return</span> &amp;ziglet_manager; }00368 <a name="l00370"></a><a class="code" href="classzigclient__c.html#a49">00370</a>         <span class="keywordtype">bool</span> <a class="code" href="classzigclient__c.html#a49">is_ready</a>() { <span class="keywordflow">return</span> client_ziglets_ready; }00371 00372         <span class="comment">// ----------------------------------------------------------------------------------------</span>00373         <span class="comment">//    TCP CHANNELS-RELATED METHODS:</span>00374         <span class="comment">// ----------------------------------------------------------------------------------------</span>00375 <a name="l00377"></a><a class="code" href="classzigclient__c.html#a50">00377</a>         <span class="keywordtype">int</span> <a class="code" href="classzigclient__c.html#a50">chan_write</a>(<span class="keywordtype">int</span> channel_id, <a class="code" href="classbuffer__c.html">buffer_c</a> &amp;out, <span class="keywordtype">bool</span> timeout_is_failure = <span class="keyword">true</span>, <span class="keywordtype">double</span> timeout = 3.0) { <span class="keywordflow">if</span> (client) <span class="keywordflow">return</span> client-&gt;chan_write(channel_id, out, timeout_is_failure, timeout); <span class="keywordflow">else</span> <span class="keywordflow">return</span> NL_INVALID; }00378 <a name="l00380"></a><a class="code" href="classzigclient__c.html#a51">00380</a>         <span class="keywordtype">int</span> <a class="code" href="classzigclient__c.html#a50">chan_write</a>(<span class="keywordtype">int</span> channel_id, NLubyte out, <span class="keywordtype">bool</span> timeout_is_failure = <span class="keyword">true</span>, <span class="keywordtype">double</span> timeout = 3.0) { <span class="keywordflow">if</span> (client) <span class="keywordflow">return</span> client-&gt;chan_write(channel_id, out, timeout_is_failure, timeout); <span class="keywordflow">else</span> <span class="keywordflow">return</span> NL_INVALID; }00381 <a name="l00383"></a><a class="code" href="classzigclient__c.html#a52">00383</a>         <span class="keywordtype">int</span> <a class="code" href="classzigclient__c.html#a50">chan_write</a>(<span class="keywordtype">int</span> channel_id, NLbyte out, <span class="keywordtype">bool</span> timeout_is_failure = <span class="keyword">true</span>, <span class="keywordtype">double</span> timeout = 3.0) { <span class="keywordflow">if</span> (client) <span class="keywordflow">return</span> client-&gt;chan_write(channel_id, out, timeout_is_failure, timeout); <span class="keywordflow">else</span> <span class="keywordflow">return</span> NL_INVALID; }00384 <a name="l00386"></a><a class="code" href="classzigclient__c.html#a53">00386</a>         <span class="keywordtype">int</span> <a class="code" href="classzigclient__c.html#a50">chan_write</a>(<span class="keywordtype">int</span> channel_id, NLushort out, <span class="keywordtype">bool</span> timeout_is_failure = <span class="keyword">true</span>, <span class="keywordtype">double</span> timeout = 3.0) { <span class="keywordflow">if</span> (client) <span class="keywordflow">return</span> client-&gt;chan_write(channel_id, out, timeout_is_failure, timeout); <span class="keywordflow">else</span> <span class="keywordflow">return</span> NL_INVALID; }00387 <a name="l00389"></a><a class="code" href="classzigclient__c.html#a54">00389</a>         <span class="keywordtype">int</span> <a class="code" href="classzigclient__c.html#a50">chan_write</a>(<span class="keywordtype">int</span> channel_id, NLshort out, <span class="keywordtype">bool</span> timeout_is_failure = <span class="keyword">true</span>, <span class="keywordtype">double</span> timeout = 3.0) { <span class="keywordflow">if</span> (client) <span class="keywordflow">return</span> client-&gt;chan_write(channel_id, out, timeout_is_failure, timeout); <span class="keywordflow">else</span> <span class="keywordflow">return</span> NL_INVALID; }00390 <a name="l00392"></a><a class="code" href="classzigclient__c.html#a55">00392</a>         <span class="keywordtype">int</span> <a class="code" href="classzigclient__c.html#a50">chan_write</a>(<span class="keywordtype">int</span> channel_id, NLulong out, <span class="keywordtype">bool</span> timeout_is_failure = <span class="keyword">true</span>, <span class="keywordtype">double</span> timeout = 3.0) { <span class="keywordflow">if</span> (client) <span class="keywordflow">return</span> client-&gt;chan_write(channel_id, out, timeout_is_failure, timeout); <span class="keywordflow">else</span> <span class="keywordflow">return</span> NL_INVALID; }00393 <a name="l00395"></a><a class="code" href="classzigclient__c.html#a56">00395</a>         <span class="keywordtype">int</span> <a class="code" href="classzigclient__c.html#a50">chan_write</a>(<span class="keywordtype">int</span> channel_id, NLlong out, <span class="keywordtype">bool</span> timeout_is_failure = <span class="keyword">true</span>, <span class="keywordtype">double</span> timeout = 3.0) { <span class="keywordflow">if</span> (client) <span class="keywordflow">return</span> client-&gt;chan_write(channel_id, out, timeout_is_failure, timeout); <span class="keywordflow">else</span> <span class="keywordflow">return</span> NL_INVALID; }00396 <a name="l00398"></a><a class="code" href="classzigclient__c.html#a57">00398</a>         <span class="keywordtype">int</span> <a class="code" href="classzigclient__c.html#a50">chan_write</a>(<span class="keywordtype">int</span> channel_id, NLfloat out, <span class="keywordtype">bool</span> timeout_is_failure = <span class="keyword">true</span>, <span class="keywordtype">double</span> timeout = 3.0) { <span class="keywordflow">if</span> (client) <span class="keywordflow">return</span> client-&gt;chan_write(channel_id, out, timeout_is_failure, timeout); <span class="keywordflow">else</span> <span class="keywordflow">return</span> NL_INVALID; }00399 <a name="l00401"></a><a class="code" href="classzigclient__c.html#a58">00401</a>         <span class="keywordtype">int</span> <a class="code" href="classzigclient__c.html#a50">chan_write</a>(<span class="keywordtype">int</span> channel_id, NLdouble out, <span class="keywordtype">bool</span> timeout_is_failure = <span class="keyword">true</span>, <span class="keywordtype">double</span> timeout = 3.0) { <span class="keywordflow">if</span> (client) <span class="keywordflow">return</span> client-&gt;chan_write(channel_id, out, timeout_is_failure, timeout); <span class="keywordflow">else</span> <span class="keywordflow">return</span> NL_INVALID; }00402 <a name="l00404"></a><a class="code" href="classzigclient__c.html#a59">00404</a>         <span class="keywordtype">int</span> <a class="code" href="classzigclient__c.html#a50">chan_write</a>(<span class="keywordtype">int</span> channel_id, string out, <span class="keywordtype">bool</span> timeout_is_failure = <span class="keyword">true</span>, <span class="keywordtype">double</span> timeout = 3.0) { <span class="keywordflow">if</span> (client) <span class="keywordflow">return</span> client-&gt;chan_write(channel_id, out, timeout_is_failure, timeout); <span class="keywordflow">else</span> <span class="keywordflow">return</span> NL_INVALID; }00405         00406         <span class="comment">// ----------------------------------------------------------------------------------------</span>00407         <span class="comment">//    below from this point are a lot of implementation details you shouldn't care</span>00408         <span class="comment">//    about. do not call or override any of the following members...:</span>00409         <span class="comment">// ----------------------------------------------------------------------------------------</span>00410 00411         <span class="comment">//client has connected sucessfully, custom accept packet data passed </span>00412         <span class="keyword">virtual</span> <span class="keywordtype">void</span> leet_connected(<a class="code" href="classbuffer__c.html">buffer_c</a> &amp;hello);00413 00414         <span class="comment">//connection attempt timed out</span>00415         <span class="keyword">virtual</span> <span class="keywordtype">void</span> leet_connection_timed_out();00416 00417         <span class="comment">//connection refused, custom reason data passed</span>00418         <span class="keyword">virtual</span> <span class="keywordtype">void</span> leet_connection_refused(<a class="code" href="classbuffer__c.html">buffer_c</a> &amp;reason);00419 00420         <span class="comment">//client has been disconnected -- reason given</span>00421         <span class="keyword">virtual</span> <span class="keywordtype">void</span> leet_disconnected(<span class="keywordtype">bool</span> server_initiated, <a class="code" href="classbuffer__c.html">buffer_c</a> &amp;reason, <span class="keywordtype">int</span> code_reason, <span class="keywordtype">int</span> internal_reason);00422 00423         <span class="comment">//incoming data from server! this refreshes the zigclient's last_server_packet_time var which </span>00424         <span class="comment">//is used to detect that the server timed out. </span>00425         <span class="keyword">virtual</span> <span class="keywordtype">void</span> leet_incoming_data(<a class="code" href="classbuffer__c.html">buffer_c</a> &amp;in, <span class="keywordtype">int</span> packet_id);00426 00427         <span class="comment">//incoming serverinfo result. time_ms: time in milliseconds between request and response. </span>00428         <span class="comment">// RETURN VALUE: if info.code == 1, then the request TIMED OUT. if info.code == 0, request answered ok. </span>00429         <span class="keyword">virtual</span> <span class="keywordtype">void</span> leet_incoming_server_info(<a class="code" href="classaddress__c.html">address_c</a> &amp;addr, <a class="code" href="classbuffer__c.html">buffer_c</a> &amp;info, <span class="keywordtype">int</span> time_ms);00430 00431         <span class="comment">// leetclient callback: a channel to the server has been opened. </span>00432         <span class="keyword">virtual</span> <span class="keywordtype">void</span> leet_channel_opened(<span class="keywordtype">int</span> channel_id, <a class="code" href="classchannel__c.html">channel_c</a> *ch);00433 00434         <span class="comment">// leetclient incoming request from leetserver </span>00435         <span class="keyword">virtual</span> <span class="keywordtype">void</span> leet_incoming_request(<span class="keywordtype">int</span> request_id, <a class="code" href="classbuffer__c.html">buffer_c</a> &amp;in);00436 00437 <span class="keyword">protected</span>:<a name="l00439"></a><a class="code" href="classzigclient__c.html#n0">00439</a>   thread_c&lt;zigclient_c&gt; <a class="code" href="classzigclient__c.html#n0">m_sender_thread</a>;00440 00441         <span class="comment">//thread run function: packet sender thread (player input, etc.)</span>00442         <span class="keywordtype">void</span> *run_sender_thread(<span class="keywordtype">void</span> *);00443 00444         <span class="comment">//start the client.</span>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -