httppacket *httppacket_new() { httppacket *p = calloc(1,sizeof(*p)); cast(packet*,p)->type = HTTPPACKET; p->method = -1; cast(packet*,p)->dctor = httppacket_dctor; INIT_CONSTROUCTOR(p); return p; }
static packet *rawpacket_clone(packet *p) { rawpacket *raw = calloc(1,sizeof(*raw)); cast(packet*,raw)->type = RAWPACKET; cast(packet*,raw)->head = p->head; cast(packet*,raw)->spos = p->spos; refobj_inc(cast(refobj*,p->head)); cast(packet*,raw)->len_packet = p->len_packet; INIT_CONSTROUCTOR(raw); return cast(packet*,raw); }
//will add reference count of b rawpacket *rawpacket_new_by_buffer(bytebuffer *b,uint32_t spos) { rawpacket *raw = calloc(1,sizeof(*raw)); cast(packet*,raw)->type = RAWPACKET; cast(packet*,raw)->head = b; cast(packet*,raw)->spos = spos; refobj_inc(cast(refobj*,b)); cast(packet*,raw)->len_packet = b->size - spos; buffer_writer_init(&raw->writer,b,b->size); INIT_CONSTROUCTOR(raw); return raw; }
static packet* rawpacket_clone(packet *p) { rawpacket *raw = (rawpacket*)CALLOC(g_rawpk_allocator,1,sizeof(*raw)); ((packet*)raw)->type = RAWPACKET; ((packet*)raw)->head = p->head; ((packet*)raw)->spos = p->spos; refobj_inc((refobj*)p->head); ((packet*)raw)->len_packet = p->len_packet; //buffer_writer_init(&raw->writer,p->head,p->len_packet); INIT_CONSTROUCTOR(raw); return (packet*)raw; }
//will add reference count of b rawpacket* rawpacket_new_by_buffer(bytebuffer *b,uint32_t spos) { rawpacket *raw = (rawpacket*)CALLOC(g_rawpk_allocator,1,sizeof(*raw)); ((packet*)raw)->type = RAWPACKET; ((packet*)raw)->head = b; ((packet*)raw)->spos = spos; refobj_inc((refobj*)b); ((packet*)raw)->len_packet = b->size - spos; buffer_writer_init(&raw->writer,b,b->size); INIT_CONSTROUCTOR(raw); return raw; }
rawpacket* rawpacket_new(uint32_t size) { size = size_of_pow2(size); if(size < MIN_BUFFER_SIZE) size = MIN_BUFFER_SIZE; bytebuffer *b = bytebuffer_new(size); rawpacket *raw = (rawpacket*)CALLOC(g_rawpk_allocator,1,sizeof(*raw)); ((packet*)raw)->type = RAWPACKET; ((packet*)raw)->head = b; buffer_writer_init(&raw->writer,b,0); INIT_CONSTROUCTOR(raw); return raw; }
rawpacket *rawpacket_new(uint32_t size) { bytebuffer *b; rawpacket *raw; size = size_of_pow2(size); if(size < MIN_BUFFER_SIZE) size = MIN_BUFFER_SIZE; b = bytebuffer_new(size); raw = calloc(1,sizeof(*raw)); cast(packet*,raw)->type = RAWPACKET; cast(packet*,raw)->head = b; buffer_writer_init(&raw->writer,b,0); INIT_CONSTROUCTOR(raw); return raw; }
packet* rpacket_makewrite(packet *p) { if(p->type == RPACKET){ wpacket *w = (wpacket*)CALLOC(g_wpk_allocator,1,sizeof(*w)); ((packet*)w)->type = WPACKET; ((packet*)w)->head = p->head; refobj_inc((refobj*)p->head); ((packet*)w)->spos = p->spos; ((packet*)w)->len_packet = p->len_packet; INIT_CONSTROUCTOR(w); return (packet*)w; }else return NULL; }
packet* wpacket_makeread(packet *p) { if(p->type == WPACKET){ rpacket *r = rpacket_new(NULL,0); ((packet*)r)->head = p->head; refobj_inc((refobj*)p->head); ((packet*)r)->spos = p->spos; buffer_reader_init(&r->reader,p->head,p->spos + SIZE_HEAD); ((packet*)r)->len_packet = p->len_packet; r->data_remain = p->len_packet - SIZE_HEAD; INIT_CONSTROUCTOR(r); return (packet*)r; } return NULL; }
rpacket* rpacket_new(bytebuffer *b,uint32_t start_pos) { rpacket *r = (rpacket*)CALLOC(g_rpk_allocator,1,sizeof(*r)); ((packet*)r)->type = RPACKET; if(b){ ((packet*)r)->head = b; ((packet*)r)->spos = start_pos; refobj_inc((refobj*)b); buffer_reader_init(&r->reader,b,start_pos); buffer_read(&r->reader,&r->data_remain,sizeof(r->data_remain)); ((packet*)r)->len_packet = r->data_remain + SIZE_HEAD; } INIT_CONSTROUCTOR(r); return r; }
wpacket* wpacket_new(uint16_t size) { size = size_of_pow2(size); if(size < MIN_BUFFER_SIZE) size = MIN_BUFFER_SIZE; bytebuffer *b = bytebuffer_new(size); wpacket *w = (wpacket*)CALLOC(g_wpk_allocator,1,sizeof(*w)); ((packet*)w)->type = WPACKET; ((packet*)w)->head = b; buffer_writer_init(&w->writer,b,sizeof(*w->len)); w->len = (TYPE_HEAD*)b->data; ((packet*)w)->len_packet = SIZE_HEAD; ((packet*)w)->head->size = SIZE_HEAD; INIT_CONSTROUCTOR(w); return w; }
static packet* rpacket_clone(packet *p) { rpacket *ori = (rpacket*)p; if(p->type == RPACKET){ rpacket *r = rpacket_new(NULL,0); ((packet*)r)->head = p->head; refobj_inc((refobj*)p->head); ((packet*)r)->spos = p->spos; buffer_reader_init(&r->reader,ori->reader.cur,ori->reader.pos); ((packet*)r)->len_packet = p->len_packet; r->data_remain = p->len_packet - SIZE_HEAD; INIT_CONSTROUCTOR(r); return (packet*)r; } return NULL; }
static packet *httppacket_clone(packet *_){ st_header *h,*hh; listnode *cur,*end; httppacket *o = cast(httppacket*,_); httppacket *p = calloc(1,sizeof(*p)); cast(packet*,p)->type = HTTPPACKET; cast(packet*,p)->dctor = httppacket_dctor; p->method = o->method; p->url = string_retain(o->url); p->status = string_retain(o->status); p->body = string_retain(o->body); cur = list_begin(&o->headers); end = list_end(&o->headers); for(; cur != end;cur = cur->next){ h = cast(st_header*,cur); hh = calloc(1,sizeof(*hh)); hh->field = string_retain(h->field); hh->value = string_retain(h->value); list_pushback(&p->headers,cast(listnode*,hh)); } INIT_CONSTROUCTOR(p); return cast(packet*,p); }