Buttplug sex toy control library
at dev 1.7 kB view raw
1// Buttplug Rust Source Code File - See https://buttplug.io for more info. 2// 3// Copyright 2016-2024 Nonpolynomial Labs LLC. All rights reserved. 4// 5// Licensed under the BSD 3-Clause license. See LICENSE file in the project root 6// for full license information. 7 8use buttplug_core::{ 9 errors::ButtplugMessageError, 10 message::{ 11 ButtplugMessage, 12 ButtplugMessageFinalizer, 13 ButtplugMessageSpecVersion, 14 ButtplugMessageValidator, 15 ServerInfoV4, 16 }, 17}; 18use getset::{CopyGetters, Getters}; 19use serde::{Deserialize, Serialize}; 20 21#[derive( 22 Debug, 23 ButtplugMessage, 24 ButtplugMessageFinalizer, 25 PartialEq, 26 Eq, 27 Clone, 28 Getters, 29 CopyGetters, 30 Serialize, 31 Deserialize, 32)] 33pub struct ServerInfoV2 { 34 #[serde(rename = "Id")] 35 id: u32, 36 #[serde(rename = "MessageVersion")] 37 #[getset(get_copy = "pub")] 38 message_version: ButtplugMessageSpecVersion, 39 #[serde(rename = "MaxPingTime")] 40 #[getset(get_copy = "pub")] 41 max_ping_time: u32, 42 #[serde(rename = "ServerName")] 43 #[getset(get = "pub")] 44 server_name: String, 45} 46 47impl ServerInfoV2 { 48 pub fn new( 49 server_name: &str, 50 message_version: ButtplugMessageSpecVersion, 51 max_ping_time: u32, 52 ) -> Self { 53 Self { 54 id: 1, 55 message_version, 56 max_ping_time, 57 server_name: server_name.to_string(), 58 } 59 } 60} 61 62impl ButtplugMessageValidator for ServerInfoV2 { 63 fn is_valid(&self) -> Result<(), ButtplugMessageError> { 64 self.is_not_system_id(self.id) 65 } 66} 67 68impl From<ServerInfoV4> for ServerInfoV2 { 69 fn from(value: ServerInfoV4) -> Self { 70 Self { 71 id: value.id(), 72 server_name: value.server_name().clone(), 73 message_version: value.protocol_version_major(), 74 max_ping_time: value.max_ping_time(), 75 } 76 } 77}