From 00db53821635ccb92a5291bc003cd5dbf6e97421 Mon Sep 17 00:00:00 2001 From: Cassandra de la Cruz-Munoz Date: Sat, 30 Dec 2023 11:36:41 -0500 Subject: [PATCH] add VmcExtRemote --- src/lib.rs | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index 726b2dd..2964850 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -970,3 +970,36 @@ impl MessageBehavior for VmcExtVrm { return Ok(VmcExtVrm { path, title, hash }); } } + +struct VmcExtRemote { + service: String, + json: String, +} + +impl MessageBehavior for VmcExtRemote { + fn to_osc_message(&self) -> OscMessage { + return OscMessage { + addr: String::from("/VMC/Ext/Remote"), + args: vec![ + OscType::from(self.service.to_owned()), + OscType::from(self.json.to_owned()), + ], + }; + } + fn from_osc_message(msg: OscMessage) -> Result { + if msg.args.len() != 2 { + return Err(String::from("arg count invalid")); + } + let service: String; + let json: String; + match &msg.args[0] { + OscType::String(s) => service = s.to_owned(), + _ => return Err(String::from("arg type invalid")), + } + match &msg.args[1] { + OscType::String(s) => json = s.to_owned(), + _ => return Err(String::from("arg type invalid")), + } + return Ok(VmcExtRemote { service, json }); + } +}