diff options
| author | Max Audron <audron@cocaine.farm> | 2021-11-30 18:45:42 +0100 |
|---|---|---|
| committer | Max Audron <audron@cocaine.farm> | 2021-11-30 18:45:42 +0100 |
| commit | 5bb762ba5e5ef24bf25438d57dc8951f08072a91 (patch) | |
| tree | 9ebcfa5e8e0dd136af93b8a3fb92ecf458ba353d /src | |
| parent | add default and skip properties to Network derive macros (diff) | |
fix bufferviewconfig remove and add methods
Diffstat (limited to 'src')
| -rw-r--r-- | src/message/signalproxy/mod.rs | 7 | ||||
| -rw-r--r-- | src/message/signalproxy/objects/bufferview.rs | 38 |
2 files changed, 27 insertions, 18 deletions
diff --git a/src/message/signalproxy/mod.rs b/src/message/signalproxy/mod.rs index 9516105..d6490d4 100644 --- a/src/message/signalproxy/mod.rs +++ b/src/message/signalproxy/mod.rs @@ -54,12 +54,15 @@ impl SyncProxy { function: &str, params: VariantList, ) { - self.sync_channel.send(SyncMessage { + let msg = SyncMessage { class_name: class_name.to_string(), object_name: object_name.unwrap_or("").to_string(), slot_name: function.to_string(), params, - }).unwrap(); + }; + + debug!("submitting {:#?}", msg); + self.sync_channel.send(msg).unwrap(); } /// Send an RpcCall diff --git a/src/message/signalproxy/objects/bufferview.rs b/src/message/signalproxy/objects/bufferview.rs index 88ae56e..0e3c904 100644 --- a/src/message/signalproxy/objects/bufferview.rs +++ b/src/message/signalproxy/objects/bufferview.rs @@ -62,10 +62,8 @@ pub struct BufferViewConfig { #[network(rename = "TemporarilyRemovedBuffers", network, variant = "VariantList")] pub temporarily_removed_buffers: Vec<i32>, - // TODO think about how to handle the buffer view id - // we might introduce a default flag for the network macro - // #[network(rename = "bufferViewId")] - // pub buffer_view_id: i32, + #[network(rename = "bufferViewId", default, skip)] + pub buffer_view_id: i32, #[network(rename = "bufferViewName")] pub buffer_view_name: String, #[network(rename = "networkId")] @@ -123,10 +121,22 @@ impl BufferViewConfig { self.buffers.insert(pos, id) } + if let Some(old_pos) = self.removed_buffers.iter().position(|&x| x == id) { + self.removed_buffers.remove(old_pos); + } + + if let Some(old_pos) = self.temporarily_removed_buffers.iter().position(|&x| x == id) { + self.temporarily_removed_buffers.remove(old_pos); + } + #[cfg(feature = "server")] { // TODO replace the None with self.buffer_view_id - self.send_sync(None, "addBuffer", vec![id.into(), (pos as i32).into()]) + self.send_sync( + Some(&self.buffer_view_id.to_string()), + "addBuffer", + vec![id.into(), (pos as i32).into()], + ) } } @@ -137,34 +147,30 @@ impl BufferViewConfig { } fn remove_buffer(&mut self, id: i32) { - if self.buffers.contains(&id) { - let old_pos = self.buffers.iter().position(|&x| x == id).unwrap(); + if let Some(old_pos) = self.buffers.iter().position(|&x| x == id) { self.buffers.remove(old_pos); } - if self.removed_buffers.contains(&id) { - let old_pos = self.removed_buffers.iter().position(|&x| x == id).unwrap(); + if let Some(old_pos) = self.removed_buffers.iter().position(|&x| x == id) { self.removed_buffers.remove(old_pos); } if !self.temporarily_removed_buffers.contains(&id) { - self.buffers.push(id) + self.temporarily_removed_buffers.push(id) } } fn remove_buffer_permanently(&mut self, id: i32) { - if self.buffers.contains(&id) { - let old_pos = self.buffers.iter().position(|&x| x == id).unwrap(); + if let Some(old_pos) = self.buffers.iter().position(|&x| x == id) { self.buffers.remove(old_pos); } - if self.temporarily_removed_buffers.contains(&id) { - let old_pos = self.removed_buffers.iter().position(|&x| x == id).unwrap(); - self.removed_buffers.remove(old_pos); + if let Some(old_pos) = self.temporarily_removed_buffers.iter().position(|&x| x == id) { + self.temporarily_removed_buffers.remove(old_pos); } if !self.removed_buffers.contains(&id) { - self.buffers.push(id) + self.removed_buffers.push(id) } } } |
