This is a lightweight & stable cross-platform support library with a focus on asynchronous socket I/O, support win32 & linux & apple & android & wp8 & wp8.1-universal & win10-universal
The core design is reference from https://github.com/chriskohlhoff/asio but very small. This lib has been used by project http://hongjing.qq.com/ and run at millions of devices.
Features:
support IPv6-only network.
support multi-connections at one thread.
support deadline timer.
processing tcp sticky internal, user do not need to care it.
support lua bindings
support cocos2d-x jsb
support CocosCreator jsb2.0
support Unity3D
per io_service, per thread to process socket read,write,connect operations.
There is a simple http client GET implementation with yasio: http-client
Tidy option macros.
Add YCF_ enums to control channel to support more features.
Add multicast support.
Add a workaround implementation to support win32 udp-server.
Add io_service::cindex_to_handle.
Add ftp sever example.
Remove loop behavior of deadline_timer, user can schedule again when it’s expired.
Add obstream::write_byte.
Add to_strf_v4 for ip::endpoint.
Optimizing for file transfer, avoid high cpu occupation when system kernel send buffer is full.
More safe to check object valid which allocated from pool.
Add send complete callback.
Mark io_service::dispatch_events deprecated, use dispatch to instead.
Add YCF_REUSEPORT to control whether to enable socket can bind same port, default and previous vesion is enabled.
Implement case insensitive starts_with, ends_with at string_view.hpp.
Ignore SIGPIPE for tcp at non-win32 system.
Remove reconnect timeout.
Add Initial Bytes To Strip support for length field based frame decode, use YOPT_C_LFBFD_IBTS.
Add SSL client support, use YASIO_HAVE_SSL to enable, YCM_SSL_CLIENT to open a channel with ssl client support, require openssl, so make sure your build system already have openssl.
Integrate c-ares support, use YASIO_HAVE_CARES to enable, make sure your build system already have c-ares.
Refactor timeout options, use YOPT_S_CONNECT_TIMEOUT, YOPT_S_DNS_CACHE_TIMEOUT, YOPT_S_DNS_QUERIES_TIMEOUT to instead YOPT_S_TIMEOUTS.
Optimize schedule_timer behavior, always replace timer_cb when timer exist.