91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 34KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-17
  • 語言: C/C++
  • 標簽: C語言http??

資源簡介

C 語言實現的http文件上傳下載服務 系統平臺:windows 開發工具:vs2010 開發語言:C 程序為單線程,使用I/O多路復用實現并發 抽取libevent的最最最基礎框架,自己封裝event 使用BSD tree.h的紅黑樹

資源截圖

代碼片段和文件信息

#include?“httpd.h“
#include?“tree.h“


struct?rbnode_t?{
????RB_ENTRY(rbnode_t)?node;
????event_t???????????*ev;
};
RB_HEAD(rbtree_t?rbnode_t)?_read_evs?_write_evs?_except_evs;

fd_set???????????_readfds???????????????????=?{?0?};
fd_set???????????_writefds??????????????????=?{?0?};
fd_set???????????_exceptfds?????????????????=?{?0?};
struct?rbnode_t?*_active_ns[FD_SETSIZE?*?3]?=?{?0?};
uint32_t?????????_active_size???????????????=?0;

static?int??compare(struct?rbnode_t?*n1?struct?rbnode_t?*n2);
RB_PROTOTYPE(rbtree_t?rbnode_t?node?compare);
RB_GENERATE(rbtree_t?rbnode_t?node?compare);
static?struct?rbnode_t?*create_rbnode(event_t?*ev);
static?struct?rbnode_t?*find_rbnode(uint32_t?fd?struct?rbtree_t?*t);
static?void?release_rbnode(struct?rbnode_t?*n);
static?void?release_rbtree(struct?rbtree_t?*t);
static?int??event_del_by_fd(uint32_t?fd?struct?rbtree_t?*t?fd_set?*s);
static?int??rbnode_del_no_free(struct?rbnode_t?*n);

ret_code_t?event_init()
{
????RB_INIT(&_read_evs);
????RB_INIT(&_write_evs);
????RB_INIT(&_except_evs);
????FD_ZERO(&_readfds);
????FD_ZERO(&_writefds);
????FD_ZERO(&_exceptfds);
????memset(_active_ns?0?sizeof(struct?rbnode_t*)?*?FD_SETSIZE?*?3);
????_active_size?=?0;
????return?SUCC;
}

ret_code_t?event_uninit()
{
????release_rbtree(&_read_evs);
????release_rbtree(&_write_evs);
????release_rbtree(&_except_evs);
????FD_ZERO(&_readfds);
????FD_ZERO(&_writefds);
????FD_ZERO(&_exceptfds);
????memset(_active_ns?0?sizeof(struct?rbnode_t*)?*?FD_SETSIZE?*?3);
????_active_size?=?0;
????return?SUCC;
}

ret_code_t?event_add(event_t?*ev)
{
????struct?rbnode_t??k;
????struct?rbnode_t?*n?=?NULL;
????struct?rbtree_t?*t?=?NULL;
????fd_set??????????*s?=?NULL;
????if?(ev->type?&?EV_READ)
????{
????????t?=?&_read_evs;
????????s?=?&_readfds;
????}
????else?if?(ev->type?&?EV_WRITE)
????{
????????t?=?&_write_evs;
????????s?=?&_writefds;
????}
????else?if?(ev->type?&?EV_EXCEPT)
????{
????????t?=?&_except_evs;
????????s?=?&_exceptfds;
????}
????if?(!t?||?!s)
????{
????????log_error(“{%s:%d}?invalid?params“?__FUNCTION__?__LINE__);
????????return?PARA;
????}

????if?(s->fd_count?>=?FD_SETSIZE)
????{
????????log_warn(“{%s:%d}?event?map?is?full“?__FUNCTION__?__LINE__);
????????return?FULL;
????}
????k.ev?=?ev;
????n?=?RB_FIND(rbtree_t?t?&k);
????if?(n)
????{
????????log_warn(“{%s:%d}?event?is?already?exist?fd=%d“?__FUNCTION__?__LINE__?ev->fd);
????????return?EXIS;
????}
????n?=?create_rbnode(ev);
????if?(!n)
????{
????????return?FAIL;
????}
????RB_INSERT(rbtree_t?t?n);
????FD_SET(ev->fd?s);
????return?SUCC;
}

ret_code_t?event_del(event_t?*ev)
{
????uint32_t?fd?=?ev->fd;
????event_del_by_fd(fd?&_read_evs?&_readfds);
????event_del_by_fd(fd?&_write_evs?&_writefds);
????event_del_by_fd(fd?&_except_evs?&_exceptfds);
????return?SUCC;
}

ret_code_t?event_dispatch()
{
????fd_set?readfds;
????fd_set?writefds;
????fd_set?e

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????????882??2018-09-25?14:19??httpd.sln
?????文件????????7787??2018-09-28?10:21??httpd\event.c
?????文件????????1298??2018-09-28?13:36??httpd\event.h
?????文件???????30914??2018-09-29?14:03??httpd\http.c
?????文件??????????85??2018-09-26?10:10??httpd\http.h
?????文件?????????589??2018-09-29?13:07??httpd\httpd.h
?????文件????????4510??2018-09-29?14:15??httpd\httpd.vcxproj
?????文件????????2155??2018-09-29?14:15??httpd\httpd.vcxproj.filters
?????文件????????2795??2018-09-29?13:07??httpd\logger.c
?????文件?????????359??2018-09-27?14:29??httpd\logger.h
?????文件????????1324??2018-09-28?11:01??httpd\main.c
?????文件????????3856??2018-09-29?13:41??httpd\network.c
?????文件?????????372??2018-09-29?13:41??httpd\network.h
?????文件???????45308??2015-01-05?22:34??httpd\tree.h
?????文件?????????470??2018-09-28?09:55??httpd\types.h
?????文件????????2741??2018-09-28?13:01??httpd\utils.c
?????文件?????????425??2018-09-28?12:36??httpd\utils.h
?????文件???????27136??2018-09-29?14:15??httpd.exe

評論

共有 條評論