gitextract_3mi7bcus/ ├── .bazelrc ├── .clang-format ├── .gitattributes ├── .github/ │ └── workflows/ │ ├── CI.yml │ └── benchmark.yml ├── .gitignore ├── .travis.yml ├── BUILD.bazel ├── BUILD.md ├── CMakeLists.txt ├── LICENSE ├── Makefile ├── Makefile.in ├── Makefile.vars ├── README-CN.md ├── README.md ├── TREE.md ├── WORKSPACE.bazel ├── base/ │ ├── README.md │ ├── array.h │ ├── hatomic.h │ ├── hbase.c │ ├── hbase.h │ ├── hbuf.h │ ├── hdef.h │ ├── heap.h │ ├── hendian.h │ ├── herr.c │ ├── herr.h │ ├── hlog.c │ ├── hlog.h │ ├── hmain.c │ ├── hmain.h │ ├── hmath.h │ ├── hmutex.h │ ├── hplatform.h │ ├── hproc.h │ ├── hsocket.c │ ├── hsocket.h │ ├── hsysinfo.h │ ├── hthread.h │ ├── htime.c │ ├── htime.h │ ├── hversion.c │ ├── hversion.h │ ├── list.h │ ├── netinet.h │ ├── queue.h │ ├── rbtree.c │ └── rbtree.h ├── cert/ │ ├── cacert.pem │ ├── gen.sh │ ├── server.crt │ └── server.key ├── cmake/ │ ├── ios.toolchain.cmake │ ├── libhvConfig.cmake │ ├── utils.cmake │ └── vars.cmake ├── config.ini ├── configure ├── cpputil/ │ ├── LRUCache.h │ ├── RAII.cpp │ ├── README.md │ ├── ThreadLocalStorage.cpp │ ├── ThreadLocalStorage.h │ ├── hasync.cpp │ ├── hasync.h │ ├── hdir.cpp │ ├── hdir.h │ ├── hfile.h │ ├── hmap.h │ ├── hobjectpool.h │ ├── hpath.cpp │ ├── hpath.h │ ├── hscope.h │ ├── hstring.cpp │ ├── hstring.h │ ├── hthreadpool.h │ ├── hurl.cpp │ ├── hurl.h │ ├── ifconfig.cpp │ ├── ifconfig.h │ ├── iniparser.cpp │ ├── iniparser.h │ ├── json.hpp │ └── singleton.h ├── docs/ │ ├── API.md │ ├── PLAN.md │ └── cn/ │ ├── Channel.md │ ├── EventLoop.md │ ├── HttpClient.md │ ├── HttpContext.md │ ├── HttpMessage.md │ ├── HttpServer.md │ ├── README.md │ ├── TcpClient.md │ ├── TcpServer.md │ ├── UdpClient.md │ ├── UdpServer.md │ ├── WebSocketClient.md │ ├── WebSocketServer.md │ ├── hbase.md │ ├── hlog.md │ └── hloop.md ├── echo-servers/ │ ├── asio_echo.cpp │ ├── benchmark.sh │ ├── build.sh │ ├── libev_echo.c │ ├── libevent_echo.c │ ├── libhv_echo.c │ ├── libuv_echo.c │ ├── muduo_echo.cpp │ ├── pingpong_client.cpp │ └── poco_echo.cpp ├── etc/ │ ├── hmain_test.conf │ ├── httpd.conf │ └── nginx.conf ├── event/ │ ├── README.md │ ├── epoll.c │ ├── evport.c │ ├── hevent.c │ ├── hevent.h │ ├── hloop.c │ ├── hloop.h │ ├── io_uring.c │ ├── iocp.c │ ├── iowatcher.h │ ├── kcp/ │ │ ├── LICENSE │ │ ├── hkcp.c │ │ ├── hkcp.h │ │ ├── ikcp.c │ │ └── ikcp.h │ ├── kqueue.c │ ├── nio.c │ ├── nlog.c │ ├── nlog.h │ ├── noevent.c │ ├── overlapio.c │ ├── overlapio.h │ ├── poll.c │ ├── rudp.c │ ├── rudp.h │ ├── select.c │ ├── unpack.c │ ├── unpack.h │ └── wepoll/ │ ├── LICENSE │ ├── README.md │ ├── wepoll.c │ └── wepoll.h ├── evpp/ │ ├── Buffer.h │ ├── Channel.h │ ├── Event.h │ ├── EventLoop.h │ ├── EventLoopThread.h │ ├── EventLoopThreadPool.h │ ├── EventLoopThreadPool_test.cpp │ ├── EventLoopThread_test.cpp │ ├── EventLoop_test.cpp │ ├── README.md │ ├── Status.h │ ├── TcpClient.h │ ├── TcpClientEventLoop_test.cpp │ ├── TcpClient_test.cpp │ ├── TcpServer.h │ ├── TcpServer_test.cpp │ ├── TimerThread.h │ ├── TimerThread_test.cpp │ ├── UdpClient.h │ ├── UdpClient_test.cpp │ ├── UdpServer.h │ ├── UdpServer_test.cpp │ └── build_test.sh ├── examples/ │ ├── BUILD.bazel │ ├── CMakeLists.txt │ ├── README.md │ ├── consul/ │ │ ├── consul.cpp │ │ ├── consul.h │ │ └── main.cpp │ ├── curl.cpp │ ├── hloop_test.c │ ├── hmain_test.cpp │ ├── htimer_test.c │ ├── http_client_test.cpp │ ├── http_server_test.cpp │ ├── httpd/ │ │ ├── handler.cpp │ │ ├── handler.h │ │ ├── httpd.cpp │ │ ├── router.cpp │ │ └── router.h │ ├── jsonrpc/ │ │ ├── cJSON.c │ │ ├── cJSON.h │ │ ├── handler.h │ │ ├── jsonrpc_client.c │ │ ├── jsonrpc_server.c │ │ └── router.h │ ├── kcptun/ │ │ ├── README.md │ │ ├── client/ │ │ │ └── main.cpp │ │ ├── server/ │ │ │ └── main.cpp │ │ └── smux/ │ │ ├── smux.cpp │ │ └── smux.h │ ├── mqtt/ │ │ ├── mqtt_client_test.cpp │ │ ├── mqtt_pub.c │ │ └── mqtt_sub.c │ ├── multi-thread/ │ │ ├── multi-acceptor-processes.c │ │ ├── multi-acceptor-threads.c │ │ └── one-acceptor-multi-workers.c │ ├── nc.c │ ├── nmap/ │ │ ├── main.cpp │ │ ├── nmap.cpp │ │ └── nmap.h │ ├── pipe_test.c │ ├── protorpc/ │ │ ├── handler/ │ │ │ ├── calc.h │ │ │ ├── handler.h │ │ │ └── login.h │ │ ├── proto/ │ │ │ ├── base.proto │ │ │ ├── calc.proto │ │ │ ├── login.proto │ │ │ └── protoc.sh │ │ ├── protorpc.c │ │ ├── protorpc.h │ │ ├── protorpc_client.cpp │ │ ├── protorpc_server.cpp │ │ └── router.h │ ├── socks5_proxy_server.c │ ├── tcp_chat_server.c │ ├── tcp_client_test.c │ ├── tcp_echo_server.c │ ├── tcp_proxy_server.c │ ├── tinyhttpd.c │ ├── tinyproxyd.c │ ├── udp_echo_server.c │ ├── udp_proxy_server.c │ ├── websocket_client_test.cpp │ ├── websocket_server_test.cpp │ ├── wget.cpp │ └── wrk.cpp ├── getting_started.sh ├── hconfig.h.in ├── hexport.h ├── html/ │ ├── EventSource.html │ ├── WebSocket.html │ ├── downloads/ │ │ └── 中文.html │ ├── error.html │ ├── index.html │ └── 中文路径/ │ └── 中文名称.txt ├── http/ │ ├── Http1Parser.cpp │ ├── Http1Parser.h │ ├── Http2Parser.cpp │ ├── Http2Parser.h │ ├── HttpMessage.cpp │ ├── HttpMessage.h │ ├── HttpParser.cpp │ ├── HttpParser.h │ ├── README.md │ ├── WebSocketChannel.cpp │ ├── WebSocketChannel.h │ ├── WebSocketParser.cpp │ ├── WebSocketParser.h │ ├── client/ │ │ ├── AsyncHttpClient.cpp │ │ ├── AsyncHttpClient.h │ │ ├── HttpClient.cpp │ │ ├── HttpClient.h │ │ ├── WebSocketClient.cpp │ │ ├── WebSocketClient.h │ │ ├── axios.h │ │ └── requests.h │ ├── grpcdef.h │ ├── http2def.h │ ├── http_content.cpp │ ├── http_content.h │ ├── http_parser.c │ ├── http_parser.h │ ├── httpdef.c │ ├── httpdef.h │ ├── multipart_parser.c │ ├── multipart_parser.h │ ├── server/ │ │ ├── FileCache.cpp │ │ ├── FileCache.h │ │ ├── HttpContext.h │ │ ├── HttpHandler.cpp │ │ ├── HttpHandler.h │ │ ├── HttpMiddleware.cpp │ │ ├── HttpMiddleware.h │ │ ├── HttpResponseWriter.cpp │ │ ├── HttpResponseWriter.h │ │ ├── HttpServer.cpp │ │ ├── HttpServer.h │ │ ├── HttpService.cpp │ │ ├── HttpService.h │ │ ├── WebSocketServer.h │ │ ├── http_page.cpp │ │ └── http_page.h │ ├── websocket_parser.c │ ├── websocket_parser.h │ ├── wsdef.c │ └── wsdef.h ├── hv.h ├── hv.rc.in ├── misc/ │ ├── grpc_server.h │ └── win32_getopt.h ├── mqtt/ │ ├── mqtt_client.c │ ├── mqtt_client.h │ ├── mqtt_protocol.c │ └── mqtt_protocol.h ├── protocol/ │ ├── README.md │ ├── dns.c │ ├── dns.h │ ├── ftp.c │ ├── ftp.h │ ├── icmp.c │ ├── icmp.h │ ├── smtp.c │ └── smtp.h ├── scripts/ │ ├── check.sh │ ├── cmake_cross_compile.sh │ ├── consul.py │ ├── consul_agent.sh │ ├── coredump.sh │ ├── create_repo.sh │ ├── libhv.cmake │ ├── shini.sh │ ├── test-coverage.sh │ ├── toolchain.sh │ ├── unittest.sh │ └── websocket_server.py ├── ssl/ │ ├── appletls.c │ ├── gnutls.c │ ├── hssl.c │ ├── hssl.h │ ├── mbedtls.c │ ├── nossl.c │ ├── openssl.c │ └── wintls.c ├── unittest/ │ ├── CMakeLists.txt │ ├── base64_test.c │ ├── connect_test.c │ ├── date_test.c │ ├── defer_test.cpp │ ├── ftp_test.c │ ├── hatomic_test.c │ ├── hatomic_test.cpp │ ├── hbase_test.c │ ├── hlog_test.c │ ├── hmutex_test.c │ ├── hpath_test.cpp │ ├── hstring_test.cpp │ ├── hthread_test.cpp │ ├── hurl_test.cpp │ ├── ifconfig_test.cpp │ ├── listdir_test.cpp │ ├── md5_test.c │ ├── mkdir_test.c │ ├── nslookup_test.c │ ├── objectpool_test.cpp │ ├── ping_test.c │ ├── rbtree_test.c │ ├── rmdir_test.c │ ├── sendmail_test.c │ ├── sha1_test.c │ ├── sizeof_test.cpp │ ├── socketpair_test.c │ ├── synchronized_test.cpp │ ├── threadpool_test.cpp │ └── webbench.c └── util/ ├── README.md ├── base64.c ├── base64.h ├── md5.c ├── md5.h ├── sha1.c └── sha1.h