1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
use super::{JoinRequest, JoinRequestReply};

pub trait EventHandlers {
    fn ready() {}

    fn errored(_errcode: i32, _message: &str) {}

    fn disconnected(_errcode: i32, _message: &str) {}

    fn join_game(_secret: &str) {}

    fn spectate_game(_secret: &str) {}

    fn join_request<R: FnOnce(JoinRequestReply)>(_request: JoinRequest, _respond: R) {}
}

use sys;

pub(crate) fn wrap<EH: EventHandlers>() -> sys::DiscordEventHandlers {
    use event_wrappers::*;

    sys::DiscordEventHandlers {
        ready: Some(ready_wrapper::<EH>),
        disconnected: Some(disconnected_wrapper::<EH>),
        errored: Some(errored_wrapper::<EH>),
        joinGame: Some(join_game_wrapper::<EH>),
        spectateGame: Some(spectate_game_wrapper::<EH>),
        joinRequest: Some(join_request_wrapper::<EH>),
    }
}