donet_core/
protocol.rs

1/*
2    This file is part of Donet.
3
4    Copyright © 2024 Max Rodriguez <[email protected]>
5
6    Donet is free software; you can redistribute it and/or modify
7    it under the terms of the GNU Affero General Public License,
8    as published by the Free Software Foundation, either version 3
9    of the License, or (at your option) any later version.
10
11    Donet is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14    GNU Affero General Public License for more details.
15
16    You should have received a copy of the GNU Affero General Public
17    License along with Donet. If not, see <https://www.gnu.org/licenses/>.
18*/
19
20//! This module defines the `Protocol` enum, which stores every
21//! type of message in the Donet protocol, along with their 16-bit ID.
22
23use strum_macros::EnumIter;
24
25/// Enum variants for all message types in the Donet protocol.
26#[repr(u16)] // 16-bit alignment
27#[derive(Debug, Copy, Clone, PartialEq, EnumIter)]
28pub enum Protocol {
29    /// Client Messages
30    ClientHello = 1,
31    ClientHelloResp = 2,
32    ClientDisconnect = 3,
33    ClientEject = 4,
34    ClientHeartbeat = 5,
35
36    ClientObjectSetField = 120,
37    ClientObjectSetFields = 121,
38    ClientObjectLeaving = 132,
39    ClientObjectLeavingOwner = 161,
40    ClientEnterObjectRequired = 142,
41    ClientEnterObjectRequiredOther = 143,
42    ClientEnterObjectRequiredOwner = 172,
43    ClientEnterObjectRequiredOwnerOther = 173,
44
45    ClientDoneInterestResp = 204,
46
47    ClientAddInterest = 200,
48    ClientAddInterestMultiple = 201,
49    ClientRemoveInterest = 203,
50    ClientObjectLocation = 140,
51
52    /// Client Agent
53    CASetState = 1000,
54    CASetClientID = 1001,
55    CASendDatagram = 1002,
56    CAEject = 1004,
57    CADrop = 1005,
58    CAGetNetworkAddress = 1006,
59    CAGetNetworkAddressResp = 1007,
60    CADeclareObject = 1010,
61    CAUndeclareObject = 1011,
62    CAAddSessionObject = 1012,
63    CARemoveSessionObject = 1013,
64    CASetFieldsSendable = 1014,
65    CAOpenChannel = 1100,
66    CACloseChannel = 1101,
67    CAAddPostRemove = 1110,
68    CAClearPostRemoves = 1111,
69    CAAddInterest = 1200,
70    CAAddInterestMultiple = 1201,
71    CARemoveInterest = 1203,
72
73    /// State Server
74    SSCreateObjectWithRequired = 2000,
75    SSCreateObjectWithRequiredOther = 2001,
76    SSDeleteAIObjects = 2009,
77    SSObjectGetField = 2010,
78    SSObjectGetFieldResp = 2011,
79    SSObjectGetFields = 2012,
80    SSObjectGetFieldsResp = 2013,
81    SSObjectGetAll = 2014,
82    SSObjectGetAllResp = 2015,
83    SSObjectSetField = 2020,
84    SSObjectSetFields = 2021,
85    SSObjectDeleteFieldRAM = 2030,
86    SSObjectDeleteFieldsRAM = 2031,
87    SSObjectDeleteRAM = 2032,
88    SSObjectSetLocation = 2040,
89    SSObjectChangingLocation = 2041,
90    SSObjectEnterLocationWithRequired = 2042,
91    SSObjectEnterLocationWithRequiredOther = 2043,
92    SSObjectGetLocation = 2044,
93    SSObjectGetLocationResp = 2045,
94    SSObjectSetAI = 2050,
95    SSObjectChangingAI = 2051,
96    SSObjectEnterAIWithRequired = 2052,
97    SSObjectEnterAIWithRequiredOther = 2053,
98    SSObjectGetAI = 2054,
99    SSObjectGetAIResp = 2055,
100    SSObjectSetOwner = 2060,
101    SSObjectChangingOwner = 2061,
102    SSObjectEnterOwnerWithRequired = 2062,
103    SSObjectEnterOwnerWithRequiredOther = 2063,
104    SSObjectGetOwner = 2064,
105    SSObjectGetOwnerResp = 2065,
106    SSObjectGetZoneObjects = 2100,
107    SSObjectGetZonesObjects = 2102,
108    SSObjectGetChildren = 2104,
109    SSObjectGetZoneCount = 2110,
110    SSObjectGetZoneCountResp = 2111,
111    SSObjectGetZonesCount = 2112,
112    SSObjectGetZonesCountResp = 2113,
113    SSObjectGetChildCount = 2114,
114    SSObjectGetChildCountResp = 2115,
115    SSObjectDeleteZone = 2120,
116    SSObjectDeleteZones = 2122,
117    SSObjectDeleteChildren = 2124,
118
119    /// Database State Server
120    DBSSObjectActivateWithDefaults = 2200,
121    DBSSObjectActivateWithDefaultsOther = 2201,
122    DBSSObjectGetActivated = 2207,
123    DBSSObjectGetActivatedResp = 2208,
124    DBSSObjectDeleteFieldDisk = 2230,
125    DBSSObjectDeleteFieldsDisk = 2231,
126    DBSSObjectDeleteDisk = 2232,
127
128    /// Database Server
129    DBCreateObject = 3000,
130    DBCreateObjectResp = 3001,
131    DBObjectGetField = 3010,
132    DBObjectGetFieldResp = 3011,
133    DBObjectGetFields = 3012,
134    DBObjectGetFieldsResp = 3013,
135    DBObjectGetAll = 3014,
136    DBObjectGetAllResp = 3015,
137    DBObjectSetField = 3020,
138    DBObjectSetFields = 3021,
139    DBObjectSetFieldIfEquals = 3022,
140    DBObjectSetFieldIfEqualsResp = 3023,
141    DBObjectSetFieldsIfEquals = 3024,
142    DBObjectSetFieldsIfEqualsResp = 3025,
143    DBObjectSetFieldIfEmpty = 3026,
144    DBObjectSetFieldIfEmptyResp = 3027,
145    DBObjectDeleteField = 3030,
146    DBObjectDeleteFields = 3031,
147    DBObjectDelete = 3032,
148
149    /// Message Director (Control)
150    MDAddChannel = 9000,
151    MDRemoveChannel = 9001,
152    MDAddRange = 9002,
153    MDRemoveRange = 9003,
154    MDAddPostRemove = 9010,
155    MDClearPostRemoves = 9011,
156    MDSetConName = 9012,
157    MDSetConUrl = 9013,
158    MDLogMessage = 9014,
159}