Releases: mas-bandwidth/yojimbo
Reliable message preview 8
This release adds per-client silos for allocators, packet factories and message factories on the server. This is a security measure so a malicious client can exhaust only their own resources (leading to disconnection) and cannot affect resources for other clients. Previously, allocators and factories were shared by all clients on the server. This release also includes a bunch of fixes to get libyojimbo passing Coverity with zero defects. See this page for details.
Reliable message preview 7
This release adds an example showing how to shim libyojimbo to your existing message format, use a connection without the client/server framework, and read write connection packets directly to memory buffers so you can handle sending and receiving packets yourself. See "simple_messages.cpp" for more details.
Reliable message preview 6
This release fixes an issue where profile.cpp sometimes would not connect all clients. What was going on was that on some OS's (windows...) the default socket send and receive buffer sizes were so small that only packets from the first n clients would actually get through. Now SO_RCVBUF and SO_SNDBUF are each set to 1mb on socket create so this doesn't happen anymore. If you would like larger or smaller buffers, pass the value you want into the "bufferSize" parameter of the socket or socket transport constructor.
Reliable message preview 5
This release adds support for unreliable unordered message channels. You can select between CHANNEL_TYPE_RELIABLE_ORDERED (default) and CHANNEL_TYPE_UNRELIABLE_UNORDERED via the "type" parameter in ChannelConfig. See test_connection_unreliable_unordered_messages for an example of usage.
You can send both messages and blocks over an unreliable unordered channel, but blocks are serialized all at once rather than fragmented like they are in the reliable ordered channel. This is because unreliable unordered data is usually time critical so there is no point resending unacked fragments.
This is OK for small blocks right now, but large blocks that are too big to fit in the packet will be discarded. In the next release I will add support for packet fragmentation and reassembly, so you can bump up the maximum packet size to send large blocks unreliably, and packet fragmentation and reassembly will take care of fragmenting and reassembling any packets larger than MTU. This is a great strategy for large state update messages like snapshot deltas.
Reliable message preview 4
This release adds support for multiple message channels. SendMessage, ReceiveMessage now all have a channel id parameter. You can now configure multiple message channels (up to 64 per-connection) and define their budgets in a ConnectionConfig struct passed to client/server. See test_connection_messages_and_blocks_multiple_channels in test.cpp for an example of usage.
Reliable message preview 3
This release is a maintainance release with bugfixes and performance improvements. It adds a profile test suite "profile.cpp" that connects 64 clients to a secure server in one process and exchanges messages and blocks over encrypted packets. See BUILDING.md for instructions on how to view the profile results yourself in Visual Studio.
Reliable message preview 2
This release adds support for sending blocks of data (larger than MTU) in the same ordered stream as reliable ordered messages. These blocks are sliced up and reassembled on the other side transparently to the user and received in the same order they were sent relative to other messages. Block messages can also serialize message data in the serialization function to act a header for their block data.
Reliable message preview 1
This release adds adds support for reliable-ordered messages over UDP. Run "premake5 soak" under MacOSX/Linux. Windows users, run "premake5 solution" then build and run the "soak" project in Visual Studio. This example is self-validating. As long as messages are received it is working correctly. CTRL-C to exit.
Docker 0.2.0 release
This release adds support for running a secure server "premake5 secure_server" and connecting 64 clients to it via the matcher: "premake5 matcher" and "premake5 stress". Also, fixes a serious memory trash in the packet send and receive queue that only showed up with 64 connected clients.
Docker release preview 5
This release fixes a race condition in matcher.go spotted by Egon Elbre, and fixes "premake5 connect" failing with "error: failed to initialize matcher" on MacOSX due to mismatched mbedtls headers.