📄 zigclient_8h-source.html
字号:
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->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->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> &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> &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> &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> &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> &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> &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> &addr, <a class="code" href="classbuffer__c.html">buffer_c</a> &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> &message, <span class="keywordtype">int</span> policy = RSP_USE_DEFAULT) { <span class="keywordflow">if</span> (client) <span class="keywordflow">return</span> (client->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> &udata, <span class="keywordtype">int</span> *packet_id = 0); <span class="comment">// { if (client) return (client->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->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> &msgbuf) { <span class="keywordflow">if</span> (client) <span class="keywordflow">return</span> client->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> &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> &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->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->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->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->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->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->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->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->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->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->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> &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> &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> &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> &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> &addr, <a class="code" href="classbuffer__c.html">buffer_c</a> &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> &in);00436 00437 <span class="keyword">protected</span>:<a name="l00439"></a><a class="code" href="classzigclient__c.html#n0">00439</a> thread_c<zigclient_c> <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 + -