为方便用户及平台控制推流通道,本设计提供了HTTP配置接口,由于HTTP服务可以封装成相对独立的模块,固决定封装一个简单的HTTP服务,用于提供简单的配置服务。
http消息定义 typedef struct { char method[8]; //request only char uri[128]; //request only unsigned int status_code; //responsse only unsigned int version; //0-HTTP/1.0 1-HTTP/1.1 … } ehttp_msg;
事件回调接口 typedef struct { int (on_client_comming) (const char ipaddr, unsigned int port, void* pdata, void** ppdata_new); int (on_client_request) (const ehttp_msg reqmsg, ehttp_msg* resmsg, void* pdata); void (on_client_close) (void pdata); } ehttpd_callback;
创建http服务 ehttpd_handle ehttpd_create(unsigned int port, const ehttpd_callback* cb, void* pdata);
事务处理 int ehttpd_do_event(ehttpd_handle handle);销毁服务 void ehttpd_release(ehttpd_handle handle);本模块旨在实现一个简单的http服务模型,用于实现简单的http配置服务。 由于仅用于配置,这里只简单实现,越简单越好,不支持多线程。 http事件处理全在ehttpd_do_event里,每调一次此函数,内部会去查询socket是否有新的请求到来, 如果有新请求数据,就进行http解析,解析完成后回调on_client_request通知外部去处理请求, 外部处理后,将结果填入resmsg里,返回后内部会把消息格式化后返回到http客户端, 整个流程非常清晰。
邮件:support@easydarwin.org WEB:www.EasyDarwin.org Copyright © EasyDarwin.org 2012-2017