summary refs log tree commit diff
path: root/msg_socket2/src/ser.rs
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2020-03-20 05:48:28 +0000
committerAlyssa Ross <hi@alyssa.is>2020-06-15 09:37:05 +0000
commit8214c4c64fbdbf6ae84634bb822a90959271cad5 (patch)
tree6d46db38cb233ae7a7cf592b485608af96accf12 /msg_socket2/src/ser.rs
parentb76f0d1043ffde3c6525abaecb421c0a4dc4c277 (diff)
downloadcrosvm-8214c4c64fbdbf6ae84634bb822a90959271cad5.tar
crosvm-8214c4c64fbdbf6ae84634bb822a90959271cad5.tar.gz
crosvm-8214c4c64fbdbf6ae84634bb822a90959271cad5.tar.bz2
crosvm-8214c4c64fbdbf6ae84634bb822a90959271cad5.tar.lz
crosvm-8214c4c64fbdbf6ae84634bb822a90959271cad5.tar.xz
crosvm-8214c4c64fbdbf6ae84634bb822a90959271cad5.tar.zst
crosvm-8214c4c64fbdbf6ae84634bb822a90959271cad5.zip
msg_socket2: initial commit
Diffstat (limited to 'msg_socket2/src/ser.rs')
-rw-r--r--msg_socket2/src/ser.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/msg_socket2/src/ser.rs b/msg_socket2/src/ser.rs
new file mode 100644
index 0000000..0a60ea8
--- /dev/null
+++ b/msg_socket2/src/ser.rs
@@ -0,0 +1,20 @@
+use serde::Serializer;
+use std::os::unix::prelude::*;
+
+pub trait SerializeWithFds {
+    fn serialize<Ser>(&self, serializer: SerializerWithFds<Ser>) -> Result<Ser::Ok, Ser::Error>
+    where
+        Ser: Serializer;
+}
+
+#[derive(Debug)]
+pub struct SerializerWithFds<'fds, Ser> {
+    pub serializer: Ser,
+    pub fds: &'fds mut Vec<RawFd>,
+}
+
+impl<'fds, Ser> SerializerWithFds<'fds, Ser> {
+    pub fn new(fds: &'fds mut Vec<RawFd>, serializer: Ser) -> Self {
+        Self { serializer, fds }
+    }
+}