gitextract_80xohvuq/ ├── .clang-tidy ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ └── bug_report.md │ └── issue_template.md ├── .gitignore ├── .travis.yml ├── BUILD.bazel ├── CMakeLists.txt ├── ChangeLog ├── ChangeLog2 ├── License ├── README ├── WORKSPACE ├── build.sh ├── contrib/ │ ├── CMakeLists.txt │ ├── hiredis/ │ │ ├── CMakeLists.txt │ │ ├── Hiredis.cc │ │ ├── Hiredis.h │ │ ├── README.md │ │ └── mrediscli.cc │ └── thrift/ │ ├── CMakeLists.txt │ ├── ThriftConnection.cc │ ├── ThriftConnection.h │ ├── ThriftServer.cc │ ├── ThriftServer.h │ └── tests/ │ ├── .gitignore │ ├── CMakeLists.txt │ ├── echo/ │ │ ├── CMakeLists.txt │ │ ├── EchoServer.cc │ │ ├── echo.thrift │ │ └── echoclient.py │ └── ping/ │ ├── CMakeLists.txt │ ├── PingServer.cc │ ├── ping.thrift │ └── pingclient.py ├── examples/ │ ├── CMakeLists.txt │ ├── ace/ │ │ ├── logging/ │ │ │ ├── CMakeLists.txt │ │ │ ├── client.cc │ │ │ ├── logrecord.proto │ │ │ └── server.cc │ │ └── ttcp/ │ │ ├── CMakeLists.txt │ │ ├── common.cc │ │ ├── common.h │ │ ├── main.cc │ │ ├── ttcp.cc │ │ ├── ttcp_asio_async.cc │ │ ├── ttcp_asio_sync.cc │ │ └── ttcp_blocking.cc │ ├── asio/ │ │ ├── chat/ │ │ │ ├── CMakeLists.txt │ │ │ ├── client.cc │ │ │ ├── codec.h │ │ │ ├── loadtest.cc │ │ │ ├── server.cc │ │ │ ├── server_threaded.cc │ │ │ ├── server_threaded_efficient.cc │ │ │ └── server_threaded_highperformance.cc │ │ ├── echo_see_simple │ │ └── tutorial/ │ │ ├── CMakeLists.txt │ │ ├── daytime_see_simple │ │ ├── there_is_no_timer1 │ │ ├── timer2/ │ │ │ └── timer.cc │ │ ├── timer3/ │ │ │ └── timer.cc │ │ ├── timer4/ │ │ │ └── timer.cc │ │ ├── timer5/ │ │ │ └── timer.cc │ │ └── timer6/ │ │ └── timer.cc │ ├── cdns/ │ │ ├── CMakeLists.txt │ │ ├── Resolver.cc │ │ ├── Resolver.h │ │ └── dns.cc │ ├── curl/ │ │ ├── CMakeLists.txt │ │ ├── Curl.cc │ │ ├── Curl.h │ │ ├── README │ │ ├── download.cc │ │ └── mcurl.cc │ ├── fastcgi/ │ │ ├── CMakeLists.txt │ │ ├── fastcgi.cc │ │ ├── fastcgi.h │ │ ├── fastcgi_test.cc │ │ └── nginx.conf │ ├── filetransfer/ │ │ ├── CMakeLists.txt │ │ ├── download.cc │ │ ├── download2.cc │ │ ├── download3.cc │ │ └── loadtest/ │ │ ├── Client.java │ │ └── Handler.java │ ├── hub/ │ │ ├── CMakeLists.txt │ │ ├── README │ │ ├── codec.cc │ │ ├── codec.h │ │ ├── hub.cc │ │ ├── pub.cc │ │ ├── pubsub.cc │ │ ├── pubsub.h │ │ └── sub.cc │ ├── idleconnection/ │ │ ├── CMakeLists.txt │ │ ├── echo.cc │ │ ├── echo.h │ │ ├── main.cc │ │ └── sortedlist.cc │ ├── maxconnection/ │ │ ├── CMakeLists.txt │ │ ├── echo.cc │ │ ├── echo.h │ │ └── main.cc │ ├── memcached/ │ │ ├── README │ │ ├── client/ │ │ │ ├── CMakeLists.txt │ │ │ └── bench.cc │ │ └── server/ │ │ ├── CMakeLists.txt │ │ ├── Item.cc │ │ ├── Item.h │ │ ├── MemcacheServer.cc │ │ ├── MemcacheServer.h │ │ ├── Session.cc │ │ ├── Session.h │ │ ├── footprint_test.cc │ │ └── server.cc │ ├── multiplexer/ │ │ ├── CMakeLists.txt │ │ ├── demux.cc │ │ ├── harness/ │ │ │ ├── run.sh │ │ │ └── src/ │ │ │ └── com/ │ │ │ └── chenshuo/ │ │ │ └── muduo/ │ │ │ └── example/ │ │ │ └── multiplexer/ │ │ │ ├── DataEvent.java │ │ │ ├── Event.java │ │ │ ├── EventQueue.java │ │ │ ├── EventSource.java │ │ │ ├── MockBackendServer.java │ │ │ ├── MockClient.java │ │ │ ├── MultiplexerTest.java │ │ │ ├── MyCountDownLatch.java │ │ │ ├── TestCase.java │ │ │ ├── TestFailedException.java │ │ │ └── testcase/ │ │ │ ├── TestOneClientBackendSend.java │ │ │ ├── TestOneClientBothSend.java │ │ │ ├── TestOneClientNoData.java │ │ │ ├── TestOneClientSend.java │ │ │ └── TestTwoClients.java │ │ ├── multiplexer.cc │ │ └── multiplexer_simple.cc │ ├── netty/ │ │ ├── discard/ │ │ │ ├── CMakeLists.txt │ │ │ ├── client.cc │ │ │ └── server.cc │ │ ├── echo/ │ │ │ ├── CMakeLists.txt │ │ │ ├── client.cc │ │ │ ├── server.cc │ │ │ └── server2.cc │ │ └── uptime/ │ │ ├── CMakeLists.txt │ │ └── uptime.cc │ ├── pingpong/ │ │ ├── CMakeLists.txt │ │ ├── bench.cc │ │ ├── client.cc │ │ └── server.cc │ ├── procmon/ │ │ ├── CMakeLists.txt │ │ ├── dummyload.cc │ │ ├── plot.cc │ │ ├── plot.h │ │ ├── plot_test.cc │ │ └── procmon.cc │ ├── protobuf/ │ │ ├── CMakeLists.txt │ │ ├── codec/ │ │ │ ├── CMakeLists.txt │ │ │ ├── client.cc │ │ │ ├── codec.cc │ │ │ ├── codec.h │ │ │ ├── codec_test.cc │ │ │ ├── dispatcher.h │ │ │ ├── dispatcher_lite.h │ │ │ ├── dispatcher_lite_test.cc │ │ │ ├── dispatcher_test.cc │ │ │ ├── query.proto │ │ │ └── server.cc │ │ ├── resolver/ │ │ │ ├── CMakeLists.txt │ │ │ ├── client.cc │ │ │ ├── resolver.proto │ │ │ └── server.cc │ │ ├── rpc/ │ │ │ ├── CMakeLists.txt │ │ │ ├── client.cc │ │ │ ├── server.cc │ │ │ └── sudoku.proto │ │ ├── rpcbalancer/ │ │ │ ├── CMakeLists.txt │ │ │ ├── balancer.cc │ │ │ └── balancer_raw.cc │ │ └── rpcbench/ │ │ ├── CMakeLists.txt │ │ ├── client.cc │ │ ├── echo.proto │ │ └── server.cc │ ├── roundtrip/ │ │ ├── CMakeLists.txt │ │ ├── roundtrip.cc │ │ └── roundtrip_udp.cc │ ├── shorturl/ │ │ ├── CMakeLists.txt │ │ └── shorturl.cc │ ├── simple/ │ │ ├── CMakeLists.txt │ │ ├── allinone/ │ │ │ └── allinone.cc │ │ ├── chargen/ │ │ │ ├── chargen.cc │ │ │ ├── chargen.h │ │ │ └── main.cc │ │ ├── chargenclient/ │ │ │ └── chargenclient.cc │ │ ├── daytime/ │ │ │ ├── daytime.cc │ │ │ ├── daytime.h │ │ │ └── main.cc │ │ ├── discard/ │ │ │ ├── discard.cc │ │ │ ├── discard.h │ │ │ └── main.cc │ │ ├── echo/ │ │ │ ├── echo.cc │ │ │ ├── echo.h │ │ │ └── main.cc │ │ ├── time/ │ │ │ ├── main.cc │ │ │ ├── time.cc │ │ │ └── time.h │ │ └── timeclient/ │ │ └── timeclient.cc │ ├── socks4a/ │ │ ├── CMakeLists.txt │ │ ├── balancer.cc │ │ ├── socks4a.cc │ │ ├── tcprelay.cc │ │ └── tunnel.h │ ├── sudoku/ │ │ ├── CMakeLists.txt │ │ ├── batch.cc │ │ ├── loadtest.cc │ │ ├── percentile.h │ │ ├── pipeline.cc │ │ ├── server_basic.cc │ │ ├── server_hybrid.cc │ │ ├── server_multiloop.cc │ │ ├── server_prod.cc │ │ ├── server_threadpool.cc │ │ ├── stat.h │ │ ├── stat_unittest.cc │ │ ├── sudoku.cc │ │ └── sudoku.h │ ├── twisted/ │ │ └── finger/ │ │ ├── CMakeLists.txt │ │ ├── README │ │ ├── finger01.cc │ │ ├── finger02.cc │ │ ├── finger03.cc │ │ ├── finger04.cc │ │ ├── finger05.cc │ │ ├── finger06.cc │ │ └── finger07.cc │ ├── wordcount/ │ │ ├── CMakeLists.txt │ │ ├── README │ │ ├── gen.py │ │ ├── hash.h │ │ ├── hasher.cc │ │ ├── receiver.cc │ │ └── slowsink.py │ └── zeromq/ │ ├── CMakeLists.txt │ ├── README │ ├── local_lat.cc │ └── remote_lat.cc ├── muduo/ │ ├── base/ │ │ ├── AsyncLogging.cc │ │ ├── AsyncLogging.h │ │ ├── Atomic.h │ │ ├── BUILD.bazel │ │ ├── BlockingQueue.h │ │ ├── BoundedBlockingQueue.h │ │ ├── CMakeLists.txt │ │ ├── Condition.cc │ │ ├── Condition.h │ │ ├── CountDownLatch.cc │ │ ├── CountDownLatch.h │ │ ├── CurrentThread.cc │ │ ├── CurrentThread.h │ │ ├── Date.cc │ │ ├── Date.h │ │ ├── Exception.cc │ │ ├── Exception.h │ │ ├── FileUtil.cc │ │ ├── FileUtil.h │ │ ├── GzipFile.h │ │ ├── LogFile.cc │ │ ├── LogFile.h │ │ ├── LogStream.cc │ │ ├── LogStream.h │ │ ├── Logging.cc │ │ ├── Logging.h │ │ ├── Mutex.h │ │ ├── ProcessInfo.cc │ │ ├── ProcessInfo.h │ │ ├── Singleton.h │ │ ├── StringPiece.h │ │ ├── Thread.cc │ │ ├── Thread.h │ │ ├── ThreadLocal.h │ │ ├── ThreadLocalSingleton.h │ │ ├── ThreadPool.cc │ │ ├── ThreadPool.h │ │ ├── TimeZone.cc │ │ ├── TimeZone.h │ │ ├── Timestamp.cc │ │ ├── Timestamp.h │ │ ├── Types.h │ │ ├── WeakCallback.h │ │ ├── copyable.h │ │ ├── noncopyable.h │ │ └── tests/ │ │ ├── AsyncLogging_test.cc │ │ ├── Atomic_unittest.cc │ │ ├── BlockingQueue_bench.cc │ │ ├── BlockingQueue_bench2.cc │ │ ├── BlockingQueue_test.cc │ │ ├── BoundedBlockingQueue_test.cc │ │ ├── CMakeLists.txt │ │ ├── Date_unittest.cc │ │ ├── Exception_test.cc │ │ ├── FileUtil_test.cc │ │ ├── Fork_test.cc │ │ ├── GzipFile_test.cc │ │ ├── LogFile_test.cc │ │ ├── LogStream_bench.cc │ │ ├── LogStream_test.cc │ │ ├── Logging_test.cc │ │ ├── Mutex_test.cc │ │ ├── ProcessInfo_test.cc │ │ ├── SingletonThreadLocal_test.cc │ │ ├── Singleton_test.cc │ │ ├── ThreadLocalSingleton_test.cc │ │ ├── ThreadLocal_test.cc │ │ ├── ThreadPool_test.cc │ │ ├── Thread_bench.cc │ │ ├── Thread_test.cc │ │ ├── TimeZone_unittest.cc │ │ ├── TimeZone_util.cc │ │ └── Timestamp_unittest.cc │ └── net/ │ ├── Acceptor.cc │ ├── Acceptor.h │ ├── BUILD.bazel │ ├── Buffer.cc │ ├── Buffer.h │ ├── CMakeLists.txt │ ├── Callbacks.h │ ├── Channel.cc │ ├── Channel.h │ ├── Connector.cc │ ├── Connector.h │ ├── Endian.h │ ├── EventLoop.cc │ ├── EventLoop.h │ ├── EventLoopThread.cc │ ├── EventLoopThread.h │ ├── EventLoopThreadPool.cc │ ├── EventLoopThreadPool.h │ ├── InetAddress.cc │ ├── InetAddress.h │ ├── Poller.cc │ ├── Poller.h │ ├── Socket.cc │ ├── Socket.h │ ├── SocketsOps.cc │ ├── SocketsOps.h │ ├── TcpClient.cc │ ├── TcpClient.h │ ├── TcpConnection.cc │ ├── TcpConnection.h │ ├── TcpServer.cc │ ├── TcpServer.h │ ├── Timer.cc │ ├── Timer.h │ ├── TimerId.h │ ├── TimerQueue.cc │ ├── TimerQueue.h │ ├── ZlibStream.h │ ├── boilerplate.cc │ ├── boilerplate.h │ ├── http/ │ │ ├── BUILD.bazel │ │ ├── CMakeLists.txt │ │ ├── HttpContext.cc │ │ ├── HttpContext.h │ │ ├── HttpRequest.h │ │ ├── HttpResponse.cc │ │ ├── HttpResponse.h │ │ ├── HttpServer.cc │ │ ├── HttpServer.h │ │ └── tests/ │ │ ├── HttpRequest_unittest.cc │ │ └── HttpServer_test.cc │ ├── inspect/ │ │ ├── BUILD.bazel │ │ ├── CMakeLists.txt │ │ ├── Inspector.cc │ │ ├── Inspector.h │ │ ├── PerformanceInspector.cc │ │ ├── PerformanceInspector.h │ │ ├── ProcessInspector.cc │ │ ├── ProcessInspector.h │ │ ├── SystemInspector.cc │ │ ├── SystemInspector.h │ │ └── tests/ │ │ ├── BUILD.bazel │ │ └── Inspector_test.cc │ ├── poller/ │ │ ├── DefaultPoller.cc │ │ ├── EPollPoller.cc │ │ ├── EPollPoller.h │ │ ├── PollPoller.cc │ │ └── PollPoller.h │ ├── protobuf/ │ │ ├── BufferStream.h │ │ ├── CMakeLists.txt │ │ ├── ProtobufCodecLite.cc │ │ └── ProtobufCodecLite.h │ ├── protorpc/ │ │ ├── CMakeLists.txt │ │ ├── README │ │ ├── RpcChannel.cc │ │ ├── RpcChannel.h │ │ ├── RpcCodec.cc │ │ ├── RpcCodec.h │ │ ├── RpcCodec_test.cc │ │ ├── RpcServer.cc │ │ ├── RpcServer.h │ │ ├── google-inl.h │ │ ├── rpc.proto │ │ └── rpcservice.proto │ └── tests/ │ ├── Buffer_unittest.cc │ ├── CMakeLists.txt │ ├── Channel_test.cc │ ├── EchoClient_unittest.cc │ ├── EchoServer_unittest.cc │ ├── EventLoopThreadPool_unittest.cc │ ├── EventLoopThread_unittest.cc │ ├── EventLoop_unittest.cc │ ├── InetAddress_unittest.cc │ ├── TcpClient_reg1.cc │ ├── TcpClient_reg2.cc │ ├── TcpClient_reg3.cc │ ├── TimerQueue_unittest.cc │ └── ZlibStream_unittest.cc └── patches/ ├── MacOSX.diff ├── armlinux.diff └── backport.diff