pub struct ConnectToken { /* private fields */ }Expand description
A token containing all the information required for a client to connect to a server.
The token should be provided to the client by some out-of-band method, such as a web service or a game server browser.
See netcode’s upstream specification for more details.
§Example
use lightyear_netcode::{generate_key, ConnectToken, CONNECT_TOKEN_BYTES, USER_DATA_BYTES};
// mandatory fields
let server_address = "192.168.0.0:12345"; // the server's public address (can also be multiple addresses)
let private_key = generate_key(); // 32-byte private key, used to encrypt the token
let protocol_id = 0x11223344; // must match the server's protocol id - unique to your app/game
let client_id = 123; // globally unique identifier for an authenticated client
// optional fields
let expire_seconds = -1; // defaults to 30 seconds, negative for no expiry
let timeout_seconds = -1; // defaults to 15 seconds, negative for no timeout
let user_data = [0u8; USER_DATA_BYTES]; // custom data
let connect_token = ConnectToken::build(server_address, protocol_id, client_id, private_key)
.expire_seconds(expire_seconds)
.timeout_seconds(timeout_seconds)
.user_data(user_data)
.generate()
.unwrap();
// Serialize the connect token to a 2048-byte array
let token_bytes = connect_token.try_into_bytes().unwrap();
assert_eq!(token_bytes.len(), CONNECT_TOKEN_BYTES);Alternatively, you can use Server::token to generate a connect token from an already existing Server.
Implementations§
Source§impl ConnectToken
impl ConnectToken
Sourcepub fn expire_timestamp(&self) -> u64
pub fn expire_timestamp(&self) -> u64
The timestamp when the token expires, in seconds since the unix epoch.
Source§impl ConnectToken
impl ConnectToken
Sourcepub fn build<A: ToSocketAddrs>(
server_addresses: A,
protocol_id: u64,
client_id: u64,
private_key: Key,
) -> ConnectTokenBuilder<A>
pub fn build<A: ToSocketAddrs>( server_addresses: A, protocol_id: u64, client_id: u64, private_key: Key, ) -> ConnectTokenBuilder<A>
Creates a new connect token builder that can be used to generate a connect token.
Sourcepub fn try_into_bytes(self) -> Result<[u8; 2048], Error>
pub fn try_into_bytes(self) -> Result<[u8; 2048], Error>
Tries to convert the token into a 2048-byte array.
Sourcepub fn try_from_bytes(bytes: &[u8]) -> Result<Self, InvalidTokenError>
pub fn try_from_bytes(bytes: &[u8]) -> Result<Self, InvalidTokenError>
Tries to convert a 2048-byte array into a connect token.
Trait Implementations§
Source§impl Clone for ConnectToken
impl Clone for ConnectToken
Source§fn clone(&self) -> ConnectToken
fn clone(&self) -> ConnectToken
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for ConnectToken
impl RefUnwindSafe for ConnectToken
impl Send for ConnectToken
impl Sync for ConnectToken
impl Unpin for ConnectToken
impl UnwindSafe for ConnectToken
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Converts
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Converts
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.