use crate::message::{
ButtplugMessageFinalizer,
ErrorV0,
OkV0,
OutputCmdV4,
PingV0,
RequestDeviceListV0,
RequestServerInfoV4,
ScanningFinishedV0,
ServerInfoV4,
StartScanningV0,
StopCmdV4,
StopScanningV0,
v4::input_cmd::InputCmdV4,
};
use enum_dispatch::enum_dispatch;
use serde::{Deserialize, Serialize};
use super::{DeviceListV4, InputReadingV4};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[enum_dispatch(ButtplugMessage, ButtplugMessageValidator)]
pub enum ButtplugClientMessageV4 {
RequestServerInfo(RequestServerInfoV4),
Ping(PingV0),
StartScanning(StartScanningV0),
StopScanning(StopScanningV0),
RequestDeviceList(RequestDeviceListV0),
StopCmd(StopCmdV4),
OutputCmd(OutputCmdV4),
InputCmd(InputCmdV4),
}
impl ButtplugMessageFinalizer for ButtplugClientMessageV4 {
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[enum_dispatch(ButtplugMessage, ButtplugMessageValidator)]
pub enum ButtplugServerMessageV4 {
Ok(OkV0),
Error(ErrorV0),
ServerInfo(ServerInfoV4),
DeviceList(DeviceListV4),
ScanningFinished(ScanningFinishedV0),
InputReading(InputReadingV4),
}
impl ButtplugMessageFinalizer for ButtplugServerMessageV4 {
fn finalize(&mut self) {
if let ButtplugServerMessageV4::DeviceList(dl) = self {
dl.finalize()
}
}
}
#[derive(Copy, Debug, Clone, PartialEq, Eq, Hash, Display)]
pub enum ButtplugDeviceMessageNameV4 {
StopCmd,
InputCmd,
OutputCmd,
}