aboutsummaryrefslogtreecommitdiffstats
path: root/components/profile_traits/ipc.rs
diff options
context:
space:
mode:
authorsumit0190 <sumi29@gmail.com>2018-09-20 21:36:34 -0400
committersumit0190 <sumi29@gmail.com>2018-09-20 21:36:34 -0400
commit3e8f7fcefdfb1b61b547db1dea7273b44e36203c (patch)
tree40d57c6c9afc9c549112432c2edc9d344f3ecf9a /components/profile_traits/ipc.rs
parentfc0c191246e6c49947dc5d5dc0d2275709fe047e (diff)
downloadservo-3e8f7fcefdfb1b61b547db1dea7273b44e36203c.tar.gz
servo-3e8f7fcefdfb1b61b547db1dea7273b44e36203c.zip
Add support for IpcBytesReceiver in profile_traits::ipc - #21704
Diffstat (limited to 'components/profile_traits/ipc.rs')
-rw-r--r--components/profile_traits/ipc.rs30
1 files changed, 30 insertions, 0 deletions
diff --git a/components/profile_traits/ipc.rs b/components/profile_traits/ipc.rs
index cd4553ea8bc..7436ef5d5f1 100644
--- a/components/profile_traits/ipc.rs
+++ b/components/profile_traits/ipc.rs
@@ -53,3 +53,33 @@ where
};
Ok((ipc_sender, profiled_ipc_receiver))
}
+
+pub struct IpcBytesReceiver
+{
+ ipc_bytes_receiver: ipc::IpcBytesReceiver,
+ time_profile_chan: ProfilerChan,
+}
+
+impl IpcBytesReceiver
+{
+ pub fn recv(&self) -> Result<Vec<u8>, bincode::Error> {
+ time::profile(
+ ProfilerCategory::IpcBytesReceiver,
+ None,
+ self.time_profile_chan.clone(),
+ move || self.ipc_bytes_receiver.recv(),
+ )
+ }
+}
+
+pub fn bytes_channel(
+ time_profile_chan: ProfilerChan,
+) -> Result<(ipc::IpcBytesSender, IpcBytesReceiver), Error>
+{
+ let (ipc_bytes_sender, ipc_bytes_receiver) = ipc::bytes_channel()?;
+ let profiled_ipc_bytes_receiver = IpcBytesReceiver {
+ ipc_bytes_receiver,
+ time_profile_chan,
+ };
+ Ok((ipc_bytes_sender, profiled_ipc_bytes_receiver))
+}