- Renamed client
Connection
toClientSideConnection
and serverClientConnection
toServerSideConnection
- Added
get_connection
andget_connection_mut
onEndpoint
to retrieve aServerSideConnection
- Added
connection_stats
toServerSideConnection
- Renamed
connection_stats
onEndpoint
toget_connection_stats
- Added
received_bytes_count
,clear_received_bytes_count
,sent_bytes_count
andclear_sent_bytes_count
to bothClientSideConnection
andServerSideConnection
- Changed
try_send_payload
,try_send_payload_on
,send_payload_on
,send_payload
,send_message
,send_message_on
,try_send_message
,try_send_message_on
onClientSideConnection
to take&mut self
- Changed
..._send_message_...
,..._send_group_message_...
,..._broadcast_...
methods onEndpoint
to take&mut self
- Updated
bevy
to 0.15
- Updated
rustls
to 0.23 andquinn
to 0.11 (thanks to Cyannide, PR #28) - Changed doc & examples to use IPv6 by default (thanks to MyZeD, PR #29)
- Changed some errors logs to be warnnings
- Fixed: channels send tasks won't try to flush anymore if we know that the peer connection is closed/lost: less warnings logs emitted.
- Added
client
&server
features.
- Update to use Bevy 0.14
- Update to use Bevy 0.14
- Added a new crate
bevy_replicon_quinnet
with tests and examples, providing an integration of bevy_quinnet as a replicon back-end. - Added a
shared-client-id
cargo feature: server sends the client id to the client, client wait for it before being “connected” - Added #![warn(missing_docs)]
- Channels:
- Changed
ChannelId
to be au8
- Some channels can be preconfigured to be opened on a client or server connection by using
ChannelsConfiguration
- Channels payloads now contain the
channel_id
- When receiving a message, the message's
channel_id
is now available - You can now have only up to 256 channels opened simultaneously
- You can now have more than 1
Unreliable
orUnorderedReliable
channel
- Changed
- Client:
- Renamed
Client
toQuinnetClient
- In
QuinnetClient::Connection
- Changed
disconnect
function to bepub
(was previously only accessible throughClient::close_connection
) - Added
reconnect
function - Added a new bevy event
ConnectionFailedEvent
raised when a connection fails- Added a
QuinnetConnectionError
type
- Added a
- Renamed
ConnectionId
toConnectionLocalId
- State:
- Removed
is_connected
- Renamed internal
ConnectionState
toInternalConnectionState
- Added a new
ConnectionState
- Added
state
function
- Removed
- Changed
- Changed
update_sync_client
system to bepub
- Added
client_connecting
,client_connected
,client_just_connected
andclient_just_disconnected
ergonomic system conditions
- Renamed
- Server:
- Renamed
Server
toQuinnetServer
- Added
Debug
,Copy
,Clone
traits to the server's bevy events - Changed
update_sync_server
system to bepub
- Added
server_listening
,server_just_opened
andserver_just_closed
ergonomic system conditions - Removed unnecessary
Clone
requirement from broadcast methods
- Renamed
- Tests:
- Updated to use the new channel API
- Added a reconnection test
- Moved
QuinnetError
toshared::error
- Update plugins, tests & examples to use Bevy 0.13
- Update Tokio to 1.36
- Update Bytes to 1.5
- Update ring to 0.17.7
- Update rcgen to 0.12.1
- Fix breakout example UI (by protofarer)
- Fix minor code documentation
- Update plugins, tests & examples to use Bevy 0.12
- Update plugins, tests & examples to use Bevy 0.11
- Update quinn & rustls
- Update other dependencies: tokio, bytes, rcgen
- [example:breakout] Reduce the collision sound volume
- Update Bevy to 0.10
- [client]: Add missing
try_send_message_on
andtry_send_payload_on
inconnection
- Internal improvements to channels and server's
send_group_message
AsyncRuntime
is now pub- [client & server] In order to have more control over plugin initialization and only do the strict necessary, which is registering systems and events in the Bevy schedule,
.add_plugin(QuinnetClient/ServerPlugin { initialize_later: true })
can now be used, which will not create the Client/ServerResource
immediately.- A command such as
commands.init_resource::<Client/Server>();
can be used later on when needed. - Client & server plugins systems are scheduled to only run if their respective resource exists.
- Their respective
Resource
can be removed through a command at runtime.
- A command such as
- [client]: Fix IPv6 handling.
- Remove
ConnectionConfiguration::new
- Add
ConnectionConfiguration::from_strings
,ConnectionConfiguration::from_ips
andConnectionConfiguration::from_addrs
- Remove
- [server]: Fix IPv6 handling.
- Rename
ServerConfigurationData
toServerConfiguration
. - Remove
ServerConfiguration::new
- Add
ServerConfiguration::from_string
,ServerConfiguration::from_ip
andServerConfiguration::from_addr
- Add
server_hostname
toCertificateRetrievalMode::GenerateSelfSigned
andCertificateRetrievalMode::LoadFromFileOrGenerateSelfSigned
- Rename
- [client & server] Add
OrderedReliable
,UnorderedReliable
andUnreliable
send channels. The existing API uses default channels, additional channel can be opened/closed withopen_channel
/close_channel
and used with derivatives ofsend_message_on
. - [client & server] Now also receive
Unreliable
messages - [client & server] Add a stats() function on a connection to retrieve statistics (thanks to Andrewvy, PR #4)
- [server] Add a clients() function to retrieve all the connected Client ids
- [tests] Add tests for channels, and move tests to cargo integration test directory
- [server]
receive_message
andreceive_payload
functions are nowreceive_message_from
andreceive_payload_from
, taking a ClientId as parameter (clients messages are now stored on separate queues to prevent a client from filling the shared queue) - [client] Expose
ConnectionId
aspub
inConnectionEvent
andConnectionLostEvent
(thanks to Zheilbron, PR #5) - [example:breakout] Make use of Unreliable and UnorderedReliable channels
- Updated dependencies
- [client & server] Enhancement on disconnection behaviours, existing outgoing messages are now flushed (thanks to Zheilbron, PR #6)
- [client] Do not fail in store_known_hosts_to_file if the path has no prefix
- [server] Do not fail in write_certs_to_files if the cert and key files have non-existing parent directories, create them instead
- New events: ConnectionEvent and ConnectionLostEvent on both client & server
- Implemented Trust on First Use authentication scheme on the client
- Added CertificateVerificationMode for client : SkipVerification, SignedByCertificateAuthority and TrustOnFirstUse
- New client events for the certificate verification: CertInteractionEvent, CertTrustUpdateEvent and CertConnectionAbortEvent
- Added new ways to handle server certificates with CertificateRetrievalMode: GenerateSelfSigned, LoadFromFile & LoadFromFileOrGenerateSelfSigned
- Client can now have multiple connections simultaneously to multiple servers
- Server now returns the generated/loaded certificate
- It is now possible to host a server locally on a client
- New example: Bevy breakout demo as a 2 players versus game, hosted from a client
- New open_connection & close_connection methods on the client
- New start_endpoint and close_endpoint on the server
- New is_listening method on the server
- New "try" methods that log the errors
- Added tests
- Added documentation
- Client & Server configurations now taken as parameter at connection/listen time rather than from a resource. (User can still store it inside a resource)
- Raised DEFAULT_INTERNAL_MESSAGE_CHANNEL_SIZE in client to 100
- Use thiserror internally
- Update Quinn to 0.9
- Update Bevy to 0.9 (by Lemonzy)
- Updated all dependencies (minors)
- Moved chat demo to its own directory
Initial release