optimize netio code.

git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1674 bbd45198-f89e-11dd-88c7-29a3b14d5316
This commit is contained in:
bernard.xiong@gmail.com 2011-08-20 14:34:05 +00:00
parent e1e75c4572
commit 3dcb78d3e0
1 changed files with 11 additions and 5 deletions

View File

@ -183,6 +183,7 @@ netio_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err)
} }
} else if (ns->state == NETIO_STATE_RECV_DATA) { } else if (ns->state == NETIO_STATE_RECV_DATA) {
int chunk_length;
if(ns->cntr == 0){ if(ns->cntr == 0){
/* save the first byte of this new round of data /* save the first byte of this new round of data
@ -192,12 +193,17 @@ netio_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err)
ns->first_byte = *data_ptr; ns->first_byte = *data_ptr;
} }
ns->buf_ptr[ns->buf_pos++] = *data_ptr++; if (ns->cntr + (data_cntr + 1) < ns->data_len) chunk_length = data_cntr + 1;
ns->cntr++; else chunk_length = (ns->data_len - ns->cntr);
if (ns->buf_pos == NETIO_BUF_SIZE) { ns->buf_pos += chunk_length;
data_ptr += chunk_length;
ns->cntr += chunk_length;
data_cntr -= (chunk_length - 1);
if (ns->buf_pos >= NETIO_BUF_SIZE) {
/* circularize the buffer */ /* circularize the buffer */
ns->buf_pos = 0; ns->buf_pos %= NETIO_BUF_SIZE;
} }
if(ns->cntr == ns->data_len){ if(ns->cntr == ns->data_len){