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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
#[non_exhaustive]
pub enum PropertyId {
ServerGroup(ServerGroupId),
ChannelGroup(ChannelGroupId),
OptionalChannelData(ChannelId),
Channel(ChannelId),
OptionalClientData(ClientId),
ConnectionClientData(ClientId),
Client(ClientId),
OptionalServerData,
ConnectionServerData,
Server,
Connection,
ServerGroupId(ServerGroupId),
ServerGroupName(ServerGroupId),
ServerGroupGroupType(ServerGroupId),
ServerGroupIcon(ServerGroupId),
ServerGroupIsPermanent(ServerGroupId),
ServerGroupSortId(ServerGroupId),
ServerGroupNamingMode(ServerGroupId),
ServerGroupNeededModifyPower(ServerGroupId),
ServerGroupNeededMemberAddPower(ServerGroupId),
ServerGroupNeededMemberRemovePower(ServerGroupId),
ChannelGroupId(ChannelGroupId),
ChannelGroupName(ChannelGroupId),
ChannelGroupGroupType(ChannelGroupId),
ChannelGroupIcon(ChannelGroupId),
ChannelGroupIsPermanent(ChannelGroupId),
ChannelGroupSortId(ChannelGroupId),
ChannelGroupNamingMode(ChannelGroupId),
ChannelGroupNeededModifyPower(ChannelGroupId),
ChannelGroupNeededMemberAddPower(ChannelGroupId),
ChannelGroupNeededMemberRemovePower(ChannelGroupId),
ChannelId(ChannelId),
ChannelGuid(ChannelId),
ChannelParent(ChannelId),
ChannelName(ChannelId),
ChannelTopic(ChannelId),
ChannelCodec(ChannelId),
ChannelCodecQuality(ChannelId),
ChannelMaxClients(ChannelId),
ChannelMaxFamilyClients(ChannelId),
ChannelOrder(ChannelId),
ChannelChannelType(ChannelId),
ChannelIsDefault(ChannelId),
ChannelHasPassword(ChannelId),
ChannelCodecLatencyFactor(ChannelId),
ChannelIsUnencrypted(ChannelId),
ChannelDeleteDelay(ChannelId),
ChannelNeededTalkPower(ChannelId),
ChannelForcedSilence(ChannelId),
ChannelPhoneticName(ChannelId),
ChannelIcon(ChannelId),
ChannelIsPrivate(ChannelId),
ChannelSubscribed(ChannelId),
ChannelPermissionHints(ChannelId),
ClientId(ClientId),
ClientChannel(ClientId),
ClientUid(ClientId),
ClientName(ClientId),
ClientInputMuted(ClientId),
ClientOutputMuted(ClientId),
ClientOutputOnlyMuted(ClientId),
ClientInputHardwareEnabled(ClientId),
ClientOutputHardwareEnabled(ClientId),
ClientTalkPowerGranted(ClientId),
ClientMetadata(ClientId),
ClientIsRecording(ClientId),
ClientDatabaseId(ClientId),
ClientChannelGroup(ClientId),
ClientServerGroup(ClientId, ServerGroupId),
ClientAwayMessage(ClientId),
ClientClientType(ClientId),
ClientAvatarHash(ClientId),
ClientTalkPower(ClientId),
ClientTalkPowerRequest(ClientId),
ClientDescription(ClientId),
ClientIsPrioritySpeaker(ClientId),
ClientUnreadMessages(ClientId),
ClientPhoneticName(ClientId),
ClientNeededServerqueryViewPower(ClientId),
ClientIcon(ClientId),
ClientIsChannelCommander(ClientId),
ClientCountryCode(ClientId),
ClientInheritedChannelGroupFromChannel(ClientId),
ClientBadges(ClientId),
ClientPermissionHints(ClientId),
ServerPublicKey,
ServerId,
ServerName,
ServerNickname,
ServerWelcomeMessage,
ServerPlatform,
ServerVersion,
ServerMaxClients,
ServerCreated,
ServerCodecEncryptionMode,
ServerHostmessage,
ServerHostmessageMode,
ServerDefaultServerGroup,
ServerDefaultChannelGroup,
ServerHostbannerUrl,
ServerHostbannerGfxUrl,
ServerHostbannerGfxInterval,
ServerPrioritySpeakerDimmModificator,
ServerHostbuttonTooltip,
ServerHostbuttonUrl,
ServerHostbuttonGfxUrl,
ServerPhoneticName,
ServerIcon,
ServerIp(IpAddr),
ServerAskForPrivilegekey,
ServerHostbannerMode,
ServerTempChannelDefaultDeleteDelay,
ServerProtocolVersion,
ServerLicense,
ConnectionOwnClient,
}
#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
#[non_exhaustive]
pub enum PropertyValue {
ServerGroup(ServerGroup),
ChannelGroup(ChannelGroup),
OptionalChannelData(Option<OptionalChannelData>),
Channel(Channel),
OptionalClientData(Option<OptionalClientData>),
ConnectionClientData(Option<ConnectionClientData>),
Client(Client),
OptionalServerData(Option<OptionalServerData>),
ConnectionServerData(Option<ConnectionServerData>),
Server(Server),
Connection(Connection),
ServerGroupId(ServerGroupId),
String(String),
GroupType(GroupType),
IconId(IconId),
Bool(bool),
I32(i32),
GroupNamingMode(GroupNamingMode),
OptionI32(Option<i32>),
ChannelGroupId(ChannelGroupId),
ChannelId(ChannelId),
OptionString(Option<String>),
Codec(Codec),
OptionU8(Option<u8>),
OptionMaxClients(Option<MaxClients>),
ChannelType(ChannelType),
OptionBool(Option<bool>),
OptionDuration(Option<Duration>),
OptionIconId(Option<IconId>),
OptionChannelPermissionHint(Option<ChannelPermissionHint>),
ClientId(ClientId),
OptionUidBuf(Option<UidBuf>),
ClientDbId(ClientDbId),
ClientType(ClientType),
OptionTalkPowerRequest(Option<TalkPowerRequest>),
U32(u32),
OptionClientPermissionHint(Option<ClientPermissionHint>),
EccKeyPubP256(EccKeyPubP256),
U64(u64),
U16(u16),
OffsetDateTime(OffsetDateTime),
CodecEncryptionMode(CodecEncryptionMode),
HostMessageMode(HostMessageMode),
Duration(Duration),
F32(f32),
IpAddr(IpAddr),
HostBannerMode(HostBannerMode),
LicenseType(LicenseType),
}
#[derive(Clone, Debug, PartialEq)]
#[non_exhaustive]
pub enum PropertyValueRef<'a> {
ServerGroup(&'a ServerGroup),
ChannelGroup(&'a ChannelGroup),
OptionalChannelData(Option<&'a OptionalChannelData>),
Channel(&'a Channel),
OptionalClientData(Option<&'a OptionalClientData>),
ConnectionClientData(Option<&'a ConnectionClientData>),
Client(&'a Client),
OptionalServerData(Option<&'a OptionalServerData>),
ConnectionServerData(Option<&'a ConnectionServerData>),
Server(&'a Server),
Connection(&'a Connection),
ServerGroupId(ServerGroupId),
String(&'a str),
GroupType(GroupType),
IconId(IconId),
Bool(bool),
I32(i32),
GroupNamingMode(GroupNamingMode),
OptionI32(Option<i32>),
ChannelGroupId(ChannelGroupId),
ChannelId(ChannelId),
OptionString(Option<&'a str>),
Codec(Codec),
OptionU8(Option<u8>),
OptionMaxClients(Option<MaxClients>),
ChannelType(ChannelType),
OptionBool(Option<bool>),
OptionDuration(Option<Duration>),
OptionIconId(Option<IconId>),
OptionChannelPermissionHint(Option<ChannelPermissionHint>),
ClientId(ClientId),
OptionUidBuf(Option<&'a Uid>),
ClientDbId(ClientDbId),
ClientType(ClientType),
OptionTalkPowerRequest(Option<&'a TalkPowerRequest>),
U32(u32),
OptionClientPermissionHint(Option<ClientPermissionHint>),
EccKeyPubP256(&'a EccKeyPubP256),
U64(u64),
U16(u16),
OffsetDateTime(OffsetDateTime),
CodecEncryptionMode(CodecEncryptionMode),
HostMessageMode(HostMessageMode),
Duration(Duration),
F32(f32),
IpAddr(IpAddr),
HostBannerMode(HostBannerMode),
LicenseType(LicenseType),
}
impl PropertyValue {
pub fn as_ref(&self) -> PropertyValueRef {
match self {
PropertyValue::ServerGroup(s) => PropertyValueRef::ServerGroup(&s),
PropertyValue::ChannelGroup(s) => PropertyValueRef::ChannelGroup(&s),
PropertyValue::OptionalChannelData(s) => PropertyValueRef::OptionalChannelData(s.as_ref()),
PropertyValue::Channel(s) => PropertyValueRef::Channel(&s),
PropertyValue::OptionalClientData(s) => PropertyValueRef::OptionalClientData(s.as_ref()),
PropertyValue::ConnectionClientData(s) => PropertyValueRef::ConnectionClientData(s.as_ref()),
PropertyValue::Client(s) => PropertyValueRef::Client(&s),
PropertyValue::OptionalServerData(s) => PropertyValueRef::OptionalServerData(s.as_ref()),
PropertyValue::ConnectionServerData(s) => PropertyValueRef::ConnectionServerData(s.as_ref()),
PropertyValue::Server(s) => PropertyValueRef::Server(&s),
PropertyValue::Connection(s) => PropertyValueRef::Connection(&s),
PropertyValue::ServerGroupId(s) => PropertyValueRef::ServerGroupId(*s),
PropertyValue::String(s) => PropertyValueRef::String(s.as_str()),
PropertyValue::GroupType(s) => PropertyValueRef::GroupType(*s),
PropertyValue::IconId(s) => PropertyValueRef::IconId(*s),
PropertyValue::Bool(s) => PropertyValueRef::Bool(*s),
PropertyValue::I32(s) => PropertyValueRef::I32(*s),
PropertyValue::GroupNamingMode(s) => PropertyValueRef::GroupNamingMode(*s),
PropertyValue::OptionI32(s) => PropertyValueRef::OptionI32(*s),
PropertyValue::ChannelGroupId(s) => PropertyValueRef::ChannelGroupId(*s),
PropertyValue::ChannelId(s) => PropertyValueRef::ChannelId(*s),
PropertyValue::OptionString(s) => PropertyValueRef::OptionString(s.as_deref()),
PropertyValue::Codec(s) => PropertyValueRef::Codec(*s),
PropertyValue::OptionU8(s) => PropertyValueRef::OptionU8(*s),
PropertyValue::OptionMaxClients(s) => PropertyValueRef::OptionMaxClients(*s),
PropertyValue::ChannelType(s) => PropertyValueRef::ChannelType(*s),
PropertyValue::OptionBool(s) => PropertyValueRef::OptionBool(*s),
PropertyValue::OptionDuration(s) => PropertyValueRef::OptionDuration(*s),
PropertyValue::OptionIconId(s) => PropertyValueRef::OptionIconId(*s),
PropertyValue::OptionChannelPermissionHint(s) => PropertyValueRef::OptionChannelPermissionHint(*s),
PropertyValue::ClientId(s) => PropertyValueRef::ClientId(*s),
PropertyValue::OptionUidBuf(s) => PropertyValueRef::OptionUidBuf(s.as_ref().map(|s| s.as_ref())),
PropertyValue::ClientDbId(s) => PropertyValueRef::ClientDbId(*s),
PropertyValue::ClientType(s) => PropertyValueRef::ClientType(*s),
PropertyValue::OptionTalkPowerRequest(s) => PropertyValueRef::OptionTalkPowerRequest(s.as_ref()),
PropertyValue::U32(s) => PropertyValueRef::U32(*s),
PropertyValue::OptionClientPermissionHint(s) => PropertyValueRef::OptionClientPermissionHint(*s),
PropertyValue::EccKeyPubP256(s) => PropertyValueRef::EccKeyPubP256(s),
PropertyValue::U64(s) => PropertyValueRef::U64(*s),
PropertyValue::U16(s) => PropertyValueRef::U16(*s),
PropertyValue::OffsetDateTime(s) => PropertyValueRef::OffsetDateTime(*s),
PropertyValue::CodecEncryptionMode(s) => PropertyValueRef::CodecEncryptionMode(*s),
PropertyValue::HostMessageMode(s) => PropertyValueRef::HostMessageMode(*s),
PropertyValue::Duration(s) => PropertyValueRef::Duration(*s),
PropertyValue::F32(s) => PropertyValueRef::F32(*s),
PropertyValue::IpAddr(s) => PropertyValueRef::IpAddr(*s),
PropertyValue::HostBannerMode(s) => PropertyValueRef::HostBannerMode(*s),
PropertyValue::LicenseType(s) => PropertyValueRef::LicenseType(*s),
}
}
}