klhttp.h
上传用户:jnmzc84
上传日期:2022-08-08
资源大小:35k
文件大小:1k
源码类别:

网络编程

开发平台:

Visual C++

  1. /**
  2.   @file klhttp.h
  3.   @author Kevin Lynx
  4.   @date 7.29.2008
  5.   @brief the interface of klhttpd ( an simple embeded http server )
  6. */
  7. #ifndef ___KL_HTTP_H_
  8. #define ___KL_HTTP_H_
  9. #ifdef __cplusplus
  10. extern "C" {
  11. #endif
  12. #include <sys/queue.h>
  13. struct evbuffer;
  14. /**
  15.   information logger.
  16. */
  17. typedef void (*info_log_cb)( const char *info );
  18. /**
  19.   set info logger.
  20. */
  21. void http_set_info_log( info_log_cb log );
  22. /**
  23.   http connection structure.
  24. */
  25. struct http_connection
  26. {
  27. int fd;
  28. struct evbuffer *inbuf;
  29. struct evbuffer *outbuf;
  30. LIST_ENTRY( http_connection ) next;
  31. };
  32. /**
  33.   http connection list head.
  34. */
  35. LIST_HEAD( http_connection_head, http_connection );
  36. /** request handler */
  37. typedef void (*request_cb)( struct http_connection *conn, const struct http_request *request, void *arg );
  38. /**
  39.   http server structure.
  40. */
  41. struct http_server
  42. {
  43. struct tcp_server *server;
  44. struct http_connection_head conns;
  45. request_cb r_cb;
  46. void *arg;
  47. };
  48. /**
  49.   startup the server.
  50. */
  51. struct http_server *http_start( const char *ip, unsigned short port, int max_conn );
  52. /**
  53.   set request handler.
  54. */
  55. void http_set_rcb( struct http_server *server, request_cb cb, void *arg );
  56. /**
  57.   run the server.
  58. */
  59. int http_poll( struct http_server *server, struct timeval *timeout );
  60. /**
  61.   cleanup the server.
  62. */
  63. void http_free( struct http_server *server );
  64. #ifdef __cplusplus
  65. }
  66. #endif
  67. #endif /* ___KL_HTTP_H_ */