muzzman_daemon/packets/
mod.rs

1use std::{ops::Range, path::PathBuf};
2
3use bytes_kman::prelude::*;
4use muzzman_lib::{
5    prelude::{
6        Data, ElementId, ElementInfo, Event, FileOrData, LocationId, LocationInfo, ModuleId,
7        SessionEvent, Value,
8    },
9    session::SessionError,
10    types::{Type, ID},
11};
12
13// send
14#[derive(Clone, Debug, Bytes)]
15pub enum ServerPackets {
16    LoadModule {
17        id: u128,
18        path: PathBuf,
19    },
20    RemoveModule {
21        id: u128,
22        module_id: ModuleId,
23    },
24
25    GetActionsLen {
26        id: u128,
27    },
28    GetActions {
29        id: u128,
30        range: Range<usize>,
31    },
32    RunAction {
33        id: u128,
34        module_id: ModuleId,
35        name: String,
36        data: Vec<Type>,
37    },
38
39    GetModulesLen {
40        id: u128,
41    },
42    GetModules {
43        id: u128,
44        range: Range<usize>,
45    },
46    ModuleGetName {
47        id: u128,
48        module_id: ModuleId,
49    },
50    ModuleSetName {
51        id: u128,
52        module_id: ModuleId,
53        to: String,
54    },
55    ModuleGetDefaultName {
56        id: u128,
57        module_id: ModuleId,
58    },
59    ModuleGetDesc {
60        id: u128,
61        module_id: ModuleId,
62    },
63    ModuleSetDesc {
64        id: u128,
65        module_id: ModuleId,
66        to: String,
67    },
68    ModuleGetDefaultDesc {
69        id: u128,
70        module_id: ModuleId,
71    },
72    ModuleGetProxy {
73        id: u128,
74        module_id: ModuleId,
75    },
76    ModuleSetProxy {
77        id: u128,
78        module_id: ModuleId,
79        to: usize,
80    },
81    ModuleGetSettings {
82        id: u128,
83        module_id: ModuleId,
84    },
85    ModuleSetSettings {
86        id: u128,
87        module_id: ModuleId,
88        to: Data,
89    },
90
91    ModuleGetElementSettings {
92        id: u128,
93        module_id: ModuleId,
94    },
95    ModuleSetElementSettings {
96        id: u128,
97        module_id: ModuleId,
98        to: Data,
99    },
100    ModuleInitLocation {
101        id: u128,
102        module_id: ModuleId,
103        location_id: LocationId,
104        data: FileOrData,
105    },
106    ModuleInitElement {
107        id: u128,
108        module_id: ModuleId,
109        element_id: ElementId,
110    },
111    ModuleAcceptUrl {
112        id: u128,
113        module_id: ModuleId,
114        url: String,
115    },
116    ModuleAcceptExtension {
117        id: u128,
118        module_id: ModuleId,
119        filename: String,
120    },
121    ModuleAcceptedProtocols {
122        id: u128,
123        module_id: ModuleId,
124    },
125
126    GetDefaultLocation {
127        id: u128,
128    },
129    LocationGetName {
130        id: u128,
131        from: LocationId,
132    },
133    LocationSetName {
134        id: u128,
135        from: LocationId,
136        to: String,
137    },
138    LocationGetDesc {
139        id: u128,
140        from: LocationId,
141    },
142    LocationSetDesc {
143        id: u128,
144        from: LocationId,
145        to: String,
146    },
147    LocationGetInfo {
148        id: u128,
149        from: LocationId,
150    },
151
152    CreateElement {
153        id: u128,
154        location_id: LocationId,
155        name: String,
156    },
157    MoveElement {
158        id: u128,
159        element_id: ElementId,
160        location_id: LocationId,
161    },
162    DestroyElement {
163        id: u128,
164        element_id: ElementId,
165    },
166
167    ElementGetName {
168        id: u128,
169        element_id: ElementId,
170    },
171    ElementSetName {
172        id: u128,
173        element_id: ElementId,
174        to: String,
175    },
176    ElementGetDesc {
177        id: u128,
178        element_id: ElementId,
179    },
180    ElementSetDesc {
181        id: u128,
182        element_id: ElementId,
183        to: String,
184    },
185    ElementGetMeta {
186        id: u128,
187        element_id: ElementId,
188    },
189    ElementSetMeta {
190        id: u128,
191        element_id: ElementId,
192        to: String,
193    },
194    ElementGetUrl {
195        id: u128,
196        element_id: ElementId,
197    },
198    ElementSetUrl {
199        id: u128,
200        element_id: ElementId,
201        to: Option<String>,
202    },
203
204    ElementGetElementData {
205        id: u128,
206        element_id: ElementId,
207    },
208    ElementSetElementData {
209        id: u128,
210        element_id: ElementId,
211        to: Data,
212    },
213    ElementGetModuleData {
214        id: u128,
215        element_id: ElementId,
216    },
217    ElementSetModuleData {
218        id: u128,
219        element_id: ElementId,
220        to: Data,
221    },
222    ElementGetModule {
223        id: u128,
224        element_id: ElementId,
225    },
226    ElementSetModule {
227        id: u128,
228        element_id: ElementId,
229        module: Option<ModuleId>,
230    },
231    ElementGetStatuses {
232        id: u128,
233        element_id: ElementId,
234    },
235    ElementSetStatuses {
236        id: u128,
237        element_id: ElementId,
238        to: Vec<String>,
239    },
240    ElementGetStatus {
241        id: u128,
242        element_id: ElementId,
243    },
244    ElementSetStatus {
245        id: u128,
246        element_id: ElementId,
247        to: usize,
248    },
249    ElementGetData {
250        id: u128,
251        element_id: ElementId,
252    },
253    ElementSetData {
254        id: u128,
255        element_id: ElementId,
256        to: FileOrData,
257    },
258    ElementGetProgress {
259        id: u128,
260        element_id: ElementId,
261    },
262    ElementSetProgress {
263        id: u128,
264        element_id: ElementId,
265        to: f32,
266    },
267    ElementGetShouldSave {
268        id: u128,
269        element_id: ElementId,
270    },
271    ElementSetShouldSave {
272        id: u128,
273        element_id: ElementId,
274        to: bool,
275    },
276    ElementGetEnabled {
277        id: u128,
278        element_id: ElementId,
279    },
280    ElementSetEnabled {
281        id: u128,
282        element_id: ElementId,
283        to: bool,
284    },
285    ElementResolvModule {
286        id: u128,
287        element_id: ElementId,
288    },
289    ElementWait {
290        id: u128,
291        element_id: ElementId,
292    },
293    ElementGetInfo {
294        id: u128,
295        element_id: ElementId,
296    },
297    ElementNotify {
298        id: u128,
299        element_id: ElementId,
300        event: Event,
301    },
302    ElementEmit {
303        id: u128,
304        element_id: ElementId,
305        event: Event,
306    },
307    ElementSubscribe {
308        id: u128,
309        element_id: ElementId,
310        to: ID,
311    },
312    ElementUnSubscribe {
313        id: u128,
314        element_id: ElementId,
315        to: ID,
316    },
317
318    CreateLocation {
319        id: u128,
320        name: String,
321        location_id: LocationId,
322    },
323    GetLocationsLen {
324        id: u128,
325        location_id: LocationId,
326    },
327    GetLocations {
328        id: u128,
329        location_id: LocationId,
330        range: Range<usize>,
331    },
332    DestroyLocation {
333        id: u128,
334        location_id: LocationId,
335    },
336    MoveLocation {
337        id: u128,
338        location_id: LocationId,
339        to: LocationId,
340    },
341    LocationGetPath {
342        id: u128,
343        location_id: LocationId,
344    },
345    LocationSetPath {
346        id: u128,
347        location_id: LocationId,
348        to: PathBuf,
349    },
350    LocationGetShouldSave {
351        id: u128,
352        location_id: LocationId,
353    },
354    LocationSetShouldSave {
355        id: u128,
356        location_id: LocationId,
357        to: bool,
358    },
359    LocationGetElementsLen {
360        id: u128,
361        location_id: LocationId,
362    },
363    LocationGetElements {
364        id: u128,
365        location_id: LocationId,
366        range: Range<usize>,
367    },
368    LocationNotify {
369        id: u128,
370        location_id: LocationId,
371        event: Event,
372    },
373    LocationEmit {
374        id: u128,
375        location_id: LocationId,
376        event: Event,
377    },
378    LocationSubscribe {
379        id: u128,
380        location_id: LocationId,
381        to: ID,
382    },
383    LocationUnSubscribe {
384        id: u128,
385        location_id: LocationId,
386        to: ID,
387    },
388
389    Tick,
390}
391
392pub type Actions = Vec<(String, ModuleId, Vec<(String, Value)>)>;
393
394// recv
395#[derive(Clone, Debug, Bytes)]
396pub enum ClientPackets {
397    LoadModule(u128, Result<ModuleId, SessionError>),
398    RemoveModule(u128, Result<(), SessionError>),
399
400    GetActionsLen(u128, Result<usize, SessionError>),
401    GetActions(u128, Result<Actions, SessionError>),
402    RunAction(u128, Result<(), SessionError>),
403
404    GetModulesLen(u128, Result<usize, SessionError>),
405    GetModules(u128, Result<Vec<ModuleId>, SessionError>),
406    ModuleGetName(u128, Result<String, SessionError>),
407    ModuleSetName(u128, Result<(), SessionError>),
408    ModuleGetDefaultName(u128, Result<String, SessionError>),
409    ModuleGetDesc(u128, Result<String, SessionError>),
410    ModuleSetDesc(u128, Result<(), SessionError>),
411    ModuleGetDefaultDesc(u128, Result<String, SessionError>),
412    ModuleGetProxy(u128, Result<usize, SessionError>),
413    ModuleSetProxy(u128, Result<(), SessionError>),
414    ModuleGetSettings(u128, Box<Result<Data, SessionError>>),
415    ModuleSetSettings(u128, Result<(), SessionError>),
416    ModuleGetElementSettings(u128, Result<Data, SessionError>),
417    ModuleSetElementSettings(u128, Result<(), SessionError>),
418    ModuleInitLocation(u128, Result<(), SessionError>),
419    ModuleInitElement(u128, Result<(), SessionError>),
420    ModuleAcceptUrl(u128, Result<bool, SessionError>),
421    ModuleAcceptExtension(u128, Result<bool, SessionError>),
422    ModuleAcceptedProtocols(u128, Result<Vec<String>, SessionError>),
423
424    CreateLocation(u128, Result<LocationId, SessionError>),
425    GetLocationsLen(u128, Result<usize, SessionError>),
426    GetLocations(u128, Result<Vec<LocationId>, SessionError>),
427    DestroyLocation(u128, Result<(), SessionError>),
428    MoveLocation(u128, Result<(), SessionError>),
429    GetDefaultLocation(u128, Result<LocationId, SessionError>),
430    LocationGetName(u128, Result<String, SessionError>),
431    LocationSetName(u128, Result<(), SessionError>),
432    LocationGetDesc(u128, Result<String, SessionError>),
433    LocationSetDesc(u128, Result<(), SessionError>),
434    LocationGetInfo(u128, Result<LocationInfo, SessionError>),
435    LocationGetPath(u128, Result<PathBuf, SessionError>),
436    LocationSetPath(u128, Result<(), SessionError>),
437    LocationGetShouldSave(u128, Result<bool, SessionError>),
438    LocationSetShouldSave(u128, Result<(), SessionError>),
439    LocationGetElementsLen(u128, Result<usize, SessionError>),
440    LocationGetElements(u128, Result<Vec<ElementId>, SessionError>),
441    LocationNotify(u128, Result<(), SessionError>),
442    LocationEmit(u128, Result<(), SessionError>),
443    LocationSubscribe(u128, Result<(), SessionError>),
444    LocationUnSubscribe(u128, Result<(), SessionError>),
445
446    CreateElement(u128, Result<ElementId, SessionError>),
447    MoveElement(u128, Result<(), SessionError>),
448    DestroyElement(u128, Result<(), SessionError>),
449    ElementGetName(u128, Result<String, SessionError>),
450    ElementSetName(u128, Result<(), SessionError>),
451    ElementGetDesc(u128, Result<String, SessionError>),
452    ElementSetDesc(u128, Result<(), SessionError>),
453    ElementGetMeta(u128, Result<String, SessionError>),
454    ElementSetMeta(u128, Result<(), SessionError>),
455    ElementGetUrl(u128, Result<Option<String>, SessionError>),
456    ElementSetUrl(u128, Result<(), SessionError>),
457    ElementGetElementData(u128, Result<Data, SessionError>),
458    ElementSetElementData(u128, Result<(), SessionError>),
459    ElementGetModuleData(u128, Result<Data, SessionError>),
460    ElementSetModuleData(u128, Result<(), SessionError>),
461    ElementGetModule(u128, Result<Option<ModuleId>, SessionError>),
462    ElementSetModule(u128, Result<(), SessionError>),
463    ElementGetStatuses(u128, Result<Vec<String>, SessionError>),
464    ElementSetStatuses(u128, Result<(), SessionError>),
465    ElementGetStatus(u128, Result<usize, SessionError>),
466    ElementSetStatus(u128, Result<(), SessionError>),
467    ElementGetData(u128, Result<FileOrData, SessionError>),
468    ElementSetData(u128, Result<(), SessionError>),
469    ElementGetProgress(u128, Result<f32, SessionError>),
470    ElementSetProgress(u128, Result<(), SessionError>),
471    ElementGetShouldSave(u128, Result<bool, SessionError>),
472    ElementSetShouldSave(u128, Result<(), SessionError>),
473    ElementGetEnabled(u128, Result<bool, SessionError>),
474    ElementSetEnabled(u128, Result<(), SessionError>),
475    ElementResolvModule(u128, Result<bool, SessionError>),
476    ElementWait(u128, Result<(), SessionError>),
477    ElementGetInfo(u128, Box<Result<ElementInfo, SessionError>>),
478    ElementNotify(u128, Result<(), SessionError>),
479    ElementEmit(u128, Result<(), SessionError>),
480    ElementSubscribe(u128, Result<(), SessionError>),
481    ElementUnSubscribe(u128, Result<(), SessionError>),
482
483    NewSessionEvent(SessionEvent),
484}
485
486impl ClientPackets {
487    pub fn id(&self) -> u128 {
488        match self {
489            ClientPackets::GetDefaultLocation(id, _) => *id,
490            ClientPackets::LocationGetName(id, _) => *id,
491            ClientPackets::LocationSetName(id, _) => *id,
492            ClientPackets::LocationGetDesc(id, _) => *id,
493            ClientPackets::LocationSetDesc(id, _) => *id,
494            ClientPackets::LocationGetInfo(id, _) => *id,
495            ClientPackets::CreateElement(id, _) => *id,
496            ClientPackets::ElementGetName(id, _) => *id,
497            ClientPackets::ElementSetName(id, _) => *id,
498            ClientPackets::ElementGetDesc(id, _) => *id,
499            ClientPackets::ElementSetDesc(id, _) => *id,
500            ClientPackets::ElementGetMeta(id, _) => *id,
501            ClientPackets::ElementSetMeta(id, _) => *id,
502            ClientPackets::ElementGetInfo(id, _) => *id,
503            ClientPackets::LoadModule(id, _) => *id,
504            ClientPackets::RemoveModule(id, _) => *id,
505            ClientPackets::GetActionsLen(id, _) => *id,
506            ClientPackets::GetActions(id, _) => *id,
507            ClientPackets::RunAction(id, _) => *id,
508            ClientPackets::GetModulesLen(id, _) => *id,
509            ClientPackets::GetModules(id, _) => *id,
510            ClientPackets::ModuleGetName(id, _) => *id,
511            ClientPackets::ModuleSetName(id, _) => *id,
512            ClientPackets::ModuleGetDefaultName(id, _) => *id,
513            ClientPackets::ModuleGetDesc(id, _) => *id,
514            ClientPackets::ModuleSetDesc(id, _) => *id,
515            ClientPackets::ModuleGetDefaultDesc(id, _) => *id,
516            ClientPackets::ModuleGetProxy(id, _) => *id,
517            ClientPackets::ModuleSetProxy(id, _) => *id,
518            ClientPackets::ModuleGetSettings(id, _) => *id,
519            ClientPackets::ModuleSetSettings(id, _) => *id,
520            ClientPackets::ModuleGetElementSettings(id, _) => *id,
521            ClientPackets::ModuleSetElementSettings(id, _) => *id,
522            ClientPackets::ModuleInitLocation(id, _) => *id,
523            ClientPackets::ModuleInitElement(id, _) => *id,
524            ClientPackets::ModuleAcceptUrl(id, _) => *id,
525            ClientPackets::ModuleAcceptExtension(id, _) => *id,
526            ClientPackets::MoveElement(id, _) => *id,
527            ClientPackets::DestroyElement(id, _) => *id,
528            ClientPackets::ElementGetElementData(id, _) => *id,
529            ClientPackets::ElementSetElementData(id, _) => *id,
530            ClientPackets::ElementGetModuleData(id, _) => *id,
531            ClientPackets::ElementSetModuleData(id, _) => *id,
532            ClientPackets::ElementGetModule(id, _) => *id,
533            ClientPackets::ElementSetModule(id, _) => *id,
534            ClientPackets::ElementGetStatuses(id, _) => *id,
535            ClientPackets::ElementSetStatuses(id, _) => *id,
536            ClientPackets::ElementGetStatus(id, _) => *id,
537            ClientPackets::ElementSetStatus(id, _) => *id,
538            ClientPackets::ElementGetData(id, _) => *id,
539            ClientPackets::ElementSetData(id, _) => *id,
540            ClientPackets::ElementGetProgress(id, _) => *id,
541            ClientPackets::ElementSetProgress(id, _) => *id,
542            ClientPackets::ElementGetShouldSave(id, _) => *id,
543            ClientPackets::ElementSetShouldSave(id, _) => *id,
544            ClientPackets::ElementSetEnabled(id, _) => *id,
545            ClientPackets::ElementGetEnabled(id, _) => *id,
546            ClientPackets::ElementResolvModule(id, _) => *id,
547            ClientPackets::ElementWait(id, _) => *id,
548            ClientPackets::ElementNotify(id, _) => *id,
549            ClientPackets::ElementEmit(id, _) => *id,
550            ClientPackets::ElementSubscribe(id, _) => *id,
551            ClientPackets::ElementUnSubscribe(id, _) => *id,
552            ClientPackets::CreateLocation(id, _) => *id,
553            ClientPackets::GetLocationsLen(id, _) => *id,
554            ClientPackets::GetLocations(id, _) => *id,
555            ClientPackets::DestroyLocation(id, _) => *id,
556            ClientPackets::MoveLocation(id, _) => *id,
557            ClientPackets::LocationGetPath(id, _) => *id,
558            ClientPackets::LocationSetPath(id, _) => *id,
559            ClientPackets::LocationGetShouldSave(id, _) => *id,
560            ClientPackets::LocationSetShouldSave(id, _) => *id,
561            ClientPackets::LocationGetElementsLen(id, _) => *id,
562            ClientPackets::LocationGetElements(id, _) => *id,
563            ClientPackets::LocationNotify(id, _) => *id,
564            ClientPackets::LocationEmit(id, _) => *id,
565            ClientPackets::LocationSubscribe(id, _) => *id,
566            ClientPackets::LocationUnSubscribe(id, _) => *id,
567            ClientPackets::ModuleAcceptedProtocols(id, _) => *id,
568            ClientPackets::ElementGetUrl(id, _) => *id,
569            ClientPackets::ElementSetUrl(id, _) => *id,
570            ClientPackets::NewSessionEvent(_) => 0,
571        }
572    }
573}