denis7774@gmail.com Denis Reva rarogcmex co-maintainers welcome lssndrbarbieri@gmail.com Alessandro Barbieri Client / Server abstraction You're probably familiar with Java's Netty, or Python's twisted, or similar libraries. It is built on top of folly/async/io, so it's one level up the stack from that (or similar abstractions like boost::asio) ServerBootstrap - easily manage creation of threadpools and pipelines ClientBootstrap - the same for clients Pipeline - set up a series of handlers that modify your socket data Request / Response abstraction This is roughly equivalent to the Finagle library. Aims to provide easy testing, load balancing, client pooling, retry logic, etc. for any request/response type service - i.e. thrift, http, etc. Service - a matched interface between client/server. A server will implement this interface, and a client will call in to it. These are protocol-specific ServiceFilter - a generic filter on a service. Examples: stats, request timeouts, rate limiting ServiceFactory - A factory that creates client connections. Any protocol specific setup code goes here ServiceFactoryFilter - Generic filters that control how connections are created. Client examples: load balancing, pooling, idle timeouts, markdowns, etc. ServerBootstrap Easily create a new server ServerBootstrap does the work to set up one or multiple acceptor threads, and one or multiple sets of IO threads. The thread pools can be the same. SO_REUSEPORT is automatically supported for multiple accept threads. tcp is most common, although udp is also supported. https://github.com/facebook/wangle/issues facebook/wangle