aws_lambda_events/event/cloudwatch_events/
gamelift.rs

1use serde::{Deserialize, Serialize};
2
3use crate::custom_serde::deserialize_nullish_boolean;
4
5#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
6#[serde(rename_all = "camelCase")]
7pub struct MatchmakingSearching {
8    pub tickets: Vec<Ticket>,
9    pub estimated_wait_millis: String,
10    pub r#type: String,
11    pub game_session_info: GameSessionInfo,
12}
13
14#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
15#[serde(rename_all = "camelCase")]
16pub struct Ticket {
17    pub ticket_id: String,
18    pub start_time: String,
19    pub players: Vec<Player>,
20}
21
22#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
23#[serde(rename_all = "camelCase")]
24pub struct Player {
25    pub player_id: String,
26    pub team: Option<String>,
27    #[serde(default, deserialize_with = "deserialize_nullish_boolean")]
28    pub accepted: bool,
29    pub player_session_id: Option<String>,
30}
31
32#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
33#[serde(rename_all = "camelCase")]
34pub struct GameSessionInfo {
35    pub players: Vec<Player>,
36}
37
38#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
39#[serde(rename_all = "camelCase")]
40pub struct PotentialMatchCreated {
41    pub tickets: Vec<Ticket>,
42    pub acceptance_timeout: i64,
43    pub rule_evaluation_metrics: Vec<RuleEvaluationMetric>,
44    pub acceptance_required: bool,
45    pub r#type: String,
46    pub game_session_info: GameSessionInfo,
47    pub match_id: String,
48}
49
50#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
51#[serde(rename_all = "camelCase")]
52pub struct RuleEvaluationMetric {
53    pub rule_name: String,
54    pub passed_count: i64,
55    pub failed_count: i64,
56}
57
58#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
59#[serde(rename_all = "camelCase")]
60pub struct AcceptMatch {
61    pub tickets: Vec<Ticket>,
62    pub r#type: String,
63    pub game_session_info: GameSessionInfo,
64    pub match_id: String,
65}
66
67#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
68#[serde(rename_all = "camelCase")]
69pub struct AcceptMatchCompleted {
70    pub tickets: Vec<Ticket>,
71    pub acceptance: String,
72    pub r#type: String,
73    pub game_session_info: GameSessionInfo,
74    pub match_id: String,
75}
76
77#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
78#[serde(rename_all = "camelCase")]
79pub struct MatchmakingSucceeded {
80    pub tickets: Vec<Ticket>,
81    pub r#type: String,
82    pub game_session_info: GameSessionInfo,
83    pub match_id: String,
84}
85
86#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
87#[serde(rename_all = "camelCase")]
88pub struct MatchmakingTimedOut {
89    pub reason: String,
90    pub tickets: Vec<Ticket>,
91    pub rule_evaluation_metrics: Vec<RuleEvaluationMetric>,
92    pub r#type: String,
93    pub message: String,
94    pub game_session_info: GameSessionInfo,
95}
96
97#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
98#[serde(rename_all = "camelCase")]
99pub struct MatchmakingCancelled {
100    pub reason: String,
101    pub tickets: Vec<Ticket>,
102    pub rule_evaluation_metrics: Vec<RuleEvaluationMetric>,
103    pub r#type: String,
104    pub message: String,
105    pub game_session_info: GameSessionInfo,
106}
107
108#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
109#[serde(rename_all = "camelCase")]
110pub struct MatchmakingFailed {
111    pub tickets: Vec<Ticket>,
112    pub custom_event_data: String,
113    pub r#type: String,
114    pub reason: String,
115    pub message: String,
116    pub game_session_info: GameSessionInfo,
117    pub match_id: String,
118}