ctoolbox/workspace/ipc/
types.rs1use serde::{Deserialize, Serialize};
2use std::fmt;
3use std::time::Duration;
4use uuid::Uuid;
5
6pub type RequestId = u64;
8
9pub type StreamId = u64;
11
12#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
14pub struct ProcessId(pub Uuid);
15
16impl Default for ProcessId {
17 fn default() -> Self {
18 Self::new()
19 }
20}
21
22impl ProcessId {
23 pub fn new() -> Self {
25 Self(Uuid::new_v4())
26 }
27}
28
29impl fmt::Display for ProcessId {
30 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
31 self.0.fmt(f)
32 }
33}
34
35#[derive(
37 Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize, Default,
38)]
39pub struct ConnectionId(pub Uuid);
40
41impl fmt::Display for ConnectionId {
42 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
43 self.0.fmt(f)
44 }
45}
46
47#[derive(
49 Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize, Default,
50)]
51pub struct BlobId(pub Uuid);
52
53impl fmt::Display for BlobId {
54 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
55 self.0.fmt(f)
56 }
57}
58
59#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
61pub enum ChildKind {
62 External,
64 Formats,
65 Io,
67 Network,
68 Renderer,
70 Storage,
71}
72
73#[derive(
75 Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, Default,
76)]
77pub struct BlobToken {
78 pub id: BlobId,
79 pub size: u64,
80 pub lease_ms: Option<u64>,
82}
83
84#[must_use]
89pub fn ipc_process_span(process_id: ProcessId) -> tracing::Span {
90 tracing::info_span!("ipc.process", process_id = %process_id)
91}
92
93#[must_use]
98pub fn ipc_connection_span(connection_id: ConnectionId) -> tracing::Span {
99 tracing::info_span!("ipc.connection", conn_id = %connection_id)
100}
101
102#[must_use]
106pub fn ipc_request_span(request_id: RequestId) -> tracing::Span {
107 tracing::info_span!("ipc.request", request_id)
108}
109
110#[must_use]
112pub fn ipc_stream_span(stream_id: StreamId) -> tracing::Span {
113 tracing::info_span!("ipc.stream", stream_id)
114}
115
116#[derive(Debug, Clone, Serialize, Deserialize)]
118pub struct Timeouts {
119 pub handshake: Duration,
120 pub request: Duration,
121 pub graceful_shutdown: Duration,
122 pub heartbeat_interval: Duration,
123 pub heartbeat_miss_tolerance: u32,
124}