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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
pub type OnStartGameSessionOutputType =
    std::pin::Pin<Box<dyn std::future::Future<Output = ()> + std::marker::Send>>;
pub type OnStartGameSessionType = dyn Fn(crate::entity::GameSession) -> OnStartGameSessionOutputType
    + std::marker::Send
    + std::marker::Sync;

pub type OnUpdateGameSessionOutputType =
    std::pin::Pin<Box<dyn std::future::Future<Output = ()> + std::marker::Send>>;
pub type OnUpdateGameSessionType = dyn Fn(crate::entity::UpdateGameSession) -> OnUpdateGameSessionOutputType
    + std::marker::Send
    + std::marker::Sync;

pub type OnProcessTerminateOutputType =
    std::pin::Pin<Box<dyn std::future::Future<Output = ()> + std::marker::Send>>;
pub type OnProcessTerminateType =
    dyn Fn() -> OnProcessTerminateOutputType + std::marker::Send + std::marker::Sync;

pub type HealthCheckOutputType =
    std::pin::Pin<Box<dyn std::future::Future<Output = bool> + std::marker::Send>>;
pub type OnHealthCheckType =
    dyn Fn() -> HealthCheckOutputType + std::marker::Send + std::marker::Sync;

/// This data type contains the set of parameters sent to the GameLift service
/// in a [ProcessReady](crate::api::Api::process_ready) call.
pub struct ProcessParameters {
    /// Name of callback function that the GameLift service invokes to activate
    /// a new game session. GameLift calls this function in response to the
    /// client request CreateGameSession. The callback function takes a
    /// GameSession object (defined in the GameLift Service API Reference).
    pub on_start_game_session: Box<OnStartGameSessionType>,

    /// Name of callback function that the GameLift service invokes to pass an
    /// updated game session object to the server process. GameLift calls this
    /// function when a match backfill request has been processed in order to
    /// provide updated matchmaker data. It passes a GameSession object, a
    /// status update (updateReason), and the match backfill ticket ID.
    pub on_update_game_session: Box<OnUpdateGameSessionType>,

    /// Name of callback function that the GameLift service invokes to force the
    /// server process to shut down. After calling this function, GameLift waits
    /// five minutes for the server process to shut down and respond with a
    /// ProcessEnding() call before it shuts down the server process.
    pub on_process_terminate: Box<OnProcessTerminateType>,

    /// Name of callback function that the GameLift service invokes to request a
    /// health status report from the server process. GameLift calls this
    /// function every 60 seconds. After calling this function GameLift waits 60
    /// seconds for a response, and if none is received. records the server
    /// process as unhealthy.
    pub on_health_check: Box<OnHealthCheckType>,

    /// Port number the server process will listen on for new player
    /// connections. The value must fall into the port range configured for any
    /// fleet deploying this game server build. This port number is included in
    /// game session and player session objects, which game sessions use when
    /// connecting to a server process.
    pub port: i32,

    /// Object with a list of directory paths to game session log files.
    pub log_parameters: crate::log_parameters::LogParameters,
}