NautServer

Struct NautServer 

Source
pub struct NautServer { /* private fields */ }

Implementations§

Source§

impl NautServer

Source

pub fn new(config: ServerConfig) -> Self

Source

pub fn get_client_addr(&self, id: &ConnectionId) -> Option<&SocketAddr>

Gets the client’s id from an address

Source

pub fn get_client_id(&self, addr: &SocketAddr) -> Option<&ConnectionId>

Gets the client’s address from an id

Examples found in repository?
examples/godot/godot_server.rs (line 11)
5fn main() {
6    let mut socket =
7        NautSocket::<NautServer>::new("127.0.0.1:8008", ServerConfig::default()).unwrap();
8    socket.register_plugin(LoggingPlugin);
9
10    socket.on("join", move |socket, (addr, _packet)| {
11        let client = socket.server().get_client_id(&addr);
12        let _ = socket.send("hello", &[], PacketDelivery::Reliable, *client.unwrap());
13    });
14
15    loop {
16        sleep(Duration::from_millis(1));
17        socket.poll();
18        socket.run_events();
19    }
20}
More examples
Hide additional examples
examples/chat/chat_server.rs (line 60)
59fn on_send_message(socket: &mut NautSocket<'_, NautServer>, (addr, packet): (SocketAddr, &[u8])) {
60    let Some(id) = socket.server().get_client_id(&addr) else {
61        return;
62    };
63
64    let name = {
65        let Some(chatters) = socket.get_persistent::<Chatters>() else {
66            return;
67        };
68        let Ok(chatters) = chatters.read() else {
69            return;
70        };
71
72        chatters.names.get(id).cloned()
73    };
74
75    let Some(name) = name else {
76        return;
77    };
78
79    let msg = String::from_utf8(packet.to_vec()).unwrap();
80    let string = format!("{}: {}", name, msg);
81    let _ = socket.broadcast("recv_message", string.as_bytes(), PacketDelivery::Reliable);
82}
83
84fn create_new_chatter(
85    socket: &mut NautSocket<'_, NautServer>,
86    (addr, packet): (SocketAddr, &[u8]),
87) {
88    let Some(id) = socket.server().get_client_id(&addr) else {
89        return;
90    };
91
92    let Some(chatters) = socket.get_persistent::<Chatters>() else {
93        return;
94    };
95
96    let name = String::from_utf8(packet.to_vec()).unwrap();
97    {
98        let Ok(mut chatters) = chatters.write() else {
99            return;
100        };
101
102        chatters.names.insert(*id, name.clone());
103    }
104
105    let join_msg = format!("Welcome {name}");
106
107    let _ = socket.broadcast(
108        "recv_message",
109        join_msg.as_bytes(),
110        PacketDelivery::Reliable,
111    );
112}
Source

pub fn iter_server_events(&self) -> Iter<'_, ServerEvent>

Gets an iterator to all server events in the queue, this will not remove any from queue

Examples found in repository?
examples/chat/chat_server.rs (line 41)
40fn remove_chatters_on_disconnect(socket: &mut NautSocket<'_, NautServer>) {
41    for event in socket.server().iter_server_events() {
42        match event {
43            ServerEvent::OnClientTimeout(id) | ServerEvent::OnClientDisconnected(id) => {
44                let Some(chatters) = socket.get_persistent::<Chatters>() else {
45                    return;
46                };
47
48                let Ok(mut chatters) = chatters.write() else {
49                    return;
50                };
51
52                chatters.names.remove(id);
53            }
54            _ => {}
55        }
56    }
57}
Source

pub fn get_max_connections(&self) -> u8

Gets the max amount of connections the server can handle

Source

pub fn get_current_connections(&self) -> u8

Gets the current amount of established connections

Source

pub fn close_connection_with_client(&mut self, id: ConnectionId)

Closes a connection with a client and pushes a client disconnected event to the server events queue

Trait Implementations§

Source§

impl Default for NautServer

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl SocketPlugin<'_, NautServer> for LoggingPlugin

Source§

fn register(&self, socket: &mut NautSocket<'_, NautServer>)

Source§

impl<'socket> SocketType<'socket> for NautServer

Source§

fn last_recv_seq_num_for_event( &'socket mut self, addr: &SocketAddr, event: &str, ) -> Option<&'socket mut SequenceNumber>

Returns a mutable reference to the last received sequence number, it should be changed to the newest sequence number if the last received sequence number is lower
Source§

fn update_current_send_seq_num_for_event( &mut self, addr: &SocketAddr, event: &str, ) -> Option<SequenceNumber>

Updates the current sequence number for that specific event and should be handled on a per client basis

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.