tokio_process_tools/process_handle/
replay.rs1use super::ProcessHandle;
2use crate::output_stream::OutputStream;
3use crate::output_stream::backend::broadcast::BroadcastOutputStream;
4use crate::output_stream::backend::single_subscriber::SingleSubscriberOutputStream;
5use crate::output_stream::policy::{Delivery, ReplayEnabled};
6
7macro_rules! impl_seal_stdout_replay {
11 ($stdout:ident) => {
12 impl<StdoutD, Stderr> ProcessHandle<$stdout<StdoutD, ReplayEnabled>, Stderr>
13 where
14 StdoutD: Delivery,
15 Stderr: OutputStream,
16 {
17 pub fn seal_stdout_replay(&self) {
19 self.std_out_stream.seal_replay();
20 }
21 }
22 };
23}
24
25macro_rules! impl_seal_stderr_replay {
27 ($stderr:ident) => {
28 impl<Stdout, StderrD> ProcessHandle<Stdout, $stderr<StderrD, ReplayEnabled>>
29 where
30 Stdout: OutputStream,
31 StderrD: Delivery,
32 {
33 pub fn seal_stderr_replay(&self) {
35 self.std_err_stream.seal_replay();
36 }
37 }
38 };
39}
40
41macro_rules! impl_seal_output_replay {
45 ($stdout:ident, $stderr:ident) => {
46 impl<StdoutD, StderrD>
47 ProcessHandle<$stdout<StdoutD, ReplayEnabled>, $stderr<StderrD, ReplayEnabled>>
48 where
49 StdoutD: Delivery,
50 StderrD: Delivery,
51 {
52 pub fn seal_output_replay(&self) {
54 self.seal_stdout_replay();
55 self.seal_stderr_replay();
56 }
57 }
58 };
59}
60
61impl_seal_stdout_replay!(BroadcastOutputStream);
62impl_seal_stdout_replay!(SingleSubscriberOutputStream);
63impl_seal_stderr_replay!(BroadcastOutputStream);
64impl_seal_stderr_replay!(SingleSubscriberOutputStream);
65impl_seal_output_replay!(BroadcastOutputStream, BroadcastOutputStream);
66impl_seal_output_replay!(BroadcastOutputStream, SingleSubscriberOutputStream);
67impl_seal_output_replay!(SingleSubscriberOutputStream, BroadcastOutputStream);
68impl_seal_output_replay!(SingleSubscriberOutputStream, SingleSubscriberOutputStream);