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

📄 http__server_8c-source.html

📁 Freescale mcu OpenTCP-1.0.4.doc.html.zip 文档
💻 HTML
📖 第 1 页 / 共 3 页
字号:
00207                         00208                         <span class="keywordflow">return</span>;                 00209                 00210                 }00211                 00212                 <span class="comment">/* More data to send    */</span>00213                 00214                 len = <a class="code" href="https__callbacks_8c.html#a2">https_loadbuffer</a>(ses, &amp;net_buf[<a class="code" href="tcp__ip_8h.html#a61">TCP_APP_OFFSET</a>], <a class="code" href="group__opentcp__config.html#a4">NETWORK_TX_BUFFER_SIZE</a> - <a class="code" href="tcp__ip_8h.html#a61">TCP_APP_OFFSET</a>);00215                         00216                 <span class="keywordflow">if</span>(len&lt;0)00217                         <span class="keywordflow">return</span>;00218                         00219                 len = <a class="code" href="tcp_8c.html#a7">tcp_send</a>(https[ses].ownersocket, &amp;net_buf[<a class="code" href="tcp__ip_8h.html#a61">TCP_APP_OFFSET</a>], <a class="code" href="group__opentcp__config.html#a4">NETWORK_TX_BUFFER_SIZE</a> - <a class="code" href="tcp__ip_8h.html#a61">TCP_APP_OFFSET</a>, len); 00220                 00221                 <span class="keywordflow">if</span>(len&lt;0)00222                 {00223                         <a class="code" href="tcp_8c.html#a8">tcp_close</a>(https[ses].ownersocket);00224                         https_deletesession(ses);00225                         00226                         ses++;00227 00228                         <span class="keywordflow">return</span>;                 00229                 00230                 }00231                 00232                 https[ses].<a class="code" href="structhttp__server__state.html#m5">funacked</a> = len;00233                 00234                 00235                 <span class="comment">/* Serve another session on next run    */</span>00236                 00237                 ses++;00238                 00239                 <span class="keywordflow">return</span>;         00240                 00241         00242         }       00243         00244         00245 00246 00247 }00248 00249 <span class="comment">/********************************************************************************</span>00250 <span class="comment">Function:               https_eventlistener</span>00251 <span class="comment"></span>00252 <span class="comment">Parameters:             INT8 cbhandle - handle to TCP socket where event is coming from </span>00253 <span class="comment">                                UINT8 event - type of event</span>00254 <span class="comment">                                UINT32 par1 - parameter the meaning of depends on event</span>00255 <span class="comment">                                UINT32 par2 - parameter the meaning of depends on event</span>00256 <span class="comment">                                </span>00257 <span class="comment">Return val:             INT32 - depends on event but usually (-1) is error of some</span>00258 <span class="comment">                                                kind and positive reply means OK</span>00259 <span class="comment">                                </span>00260 <span class="comment">Date:                   13.10.2002</span>00261 <span class="comment"></span>00262 <span class="comment">Desc:                   This function is given to TCP socket as function pointer to be</span>00263 <span class="comment">                                used by TCP engine to make callbacks to inform about events</span>00264 <span class="comment">                                on TCP e.g. arriving data. </span>00265 <span class="comment">*********************************************************************************/</span>00266 00267 00268 INT32 https_eventlistener (INT8 cbhandle, UINT8 event, UINT32 par1, UINT32 par2)00269 {00270         <span class="comment">/* This function is called by TCP stack to inform about events  */</span>00271         00272         INT16   i;00273         INT16   session;00274                 00275         <span class="keywordflow">if</span>( <a class="code" href="http__server_8c.html#a0">https_enabled</a> == 0)00276                 <span class="keywordflow">return</span>(-1);00277         00278         <span class="keywordflow">if</span>(cbhandle &lt; 0)00279                 <span class="keywordflow">return</span>(-1);     00280                 00281         <span class="comment">/* Search for rigth session     */</span>00282         00283         session = https_searchsession(cbhandle);        00284         00285         <span class="keywordflow">switch</span>( event )00286         {00287         00288                 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a54">TCP_EVENT_CONREQ</a>:00289                 00290                         <span class="comment">/* Do we have a session for requesting socket?  */</span>00291                         00292                         <span class="keywordflow">if</span>(session &lt; 0)00293                                 <span class="keywordflow">return</span>(-1);00294 00295                         00296                         <span class="comment">/* Try to get new session       */</span>00297                         00298                         session = https_bindsession(cbhandle);00299                         00300                         <span class="keywordflow">if</span>(session &lt; 0)                 <span class="comment">/* No resources */</span>00301                                 <span class="keywordflow">return</span>(-1);00302 00303                         00304                         <span class="keywordflow">return</span>(1);00305         00306                 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a57">TCP_EVENT_ABORT</a>:00307                 00308                         <span class="keywordflow">if</span>(session &lt; 0)00309                                 <span class="keywordflow">return</span>(1);00310                         00311                         https_deletesession((UINT8)session);            00312                         00313                         <span class="keywordflow">return</span>(1);00314                 00315                 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a55">TCP_EVENT_CONNECTED</a>:00316                 00317                         <span class="keywordflow">if</span>(session &lt; 0)00318                                 <span class="keywordflow">return</span>(-1);00319                 00320                         https_activatesession((UINT8)session);00321                         00322                         <span class="keywordflow">return</span>(1);00323                         00324                 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a56">TCP_EVENT_CLOSE</a>:00325                 00326                         <span class="keywordflow">if</span>(session &lt; 0)00327                                 <span class="keywordflow">return</span>(-1);00328                         00329                         https_deletesession((UINT8)session);            00330                         00331                         <span class="keywordflow">return</span>(1);              00332                 00333                         00334                 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a58">TCP_EVENT_ACK</a>:00335                 00336                         <span class="keywordflow">if</span>(session &lt; 0)00337                                 <span class="keywordflow">return</span>(-1);00338                 00339                         https[session].<a class="code" href="structhttp__server__state.html#m4">fpoint</a> += https[session].<a class="code" href="structhttp__server__state.html#m5">funacked</a>;00340                         https[session].<a class="code" href="structhttp__server__state.html#m5">funacked</a> = 0;00341                 00342                         <span class="keywordflow">return</span>(1);00343                         00344                 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a60">TCP_EVENT_DATA</a>:00345                 00346                         <span class="comment">/* Check for GET request        */</span>00347                         00348                         <span class="keywordflow">if</span>(session &lt; 0)00349                                 <span class="keywordflow">return</span>(-1);00350                         00351                         <span class="keywordflow">if</span>(https[session].<a class="code" href="structhttp__server__state.html#m2">fstart</a> == 0)00352                         {00353                                 <span class="keywordflow">if</span>(par1 &lt;= 3)00354                                         <span class="keywordflow">return</span>(1);00355                                 00356                                 <span class="comment">/* Check for GET        */</span>00357                                 00358                                 <span class="keywordflow">if</span>(<a class="code" href="system_8h.html#a9">RECEIVE_NETWORK_B</a>() != <span class="charliteral">'G'</span>)00359                                         <span class="keywordflow">return</span>(1);00360                                 <span class="keywordflow">if</span>(<a class="code" href="system_8h.html#a9">RECEIVE_NETWORK_B</a>() != <span class="charliteral">'E'</span>)00361                                         <span class="keywordflow">return</span>(1);      00362                                 <span class="keywordflow">if</span>(<a class="code" href="system_8h.html#a9">RECEIVE_NETWORK_B</a>() != <span class="charliteral">'T'</span>)00363                                         <span class="keywordflow">return</span>(1);                      00364                                         00365                                 par1 -= 3;00366                                 00367                                 <span class="comment">/* Search for '/'       */</span>00368                                 00369                                 <span class="keywordflow">for</span>(i=0; i&lt;par1; i++)00370                                 {00371                                         <span class="keywordflow">if</span>(<a class="code" href="system_8h.html#a9">RECEIVE_NETWORK_B</a>() == <span class="charliteral">'/'</span>)00372                                         {00373                                                 i++;00374                                                 <span class="keywordflow">break</span>;00375                                         }00376                                 }               00377                                 00378                                 par1 -= i;00379                                 00380                                 <span class="comment">/* Calculate Hash       */</span>00381                                 00382                                 i = https_calculatehash(par1);  00383                                 00384                                 <span class="keywordflow">if</span>(i &lt; 0)00385                                 {00386                                         <span class="comment">/* Invalid GET  */</span>00387                                         <span class="keywordflow">return</span>(1);00388                                 }       00389                                 00390                                 <span class="comment">/* Get FileRef  */</span>00391                                 00392                                 i = <a class="code" href="https__callbacks_8c.html#a1">https_findfile</a>((UINT8)i, (UINT8)session);

⌨️ 快捷键说明

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