-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathroot.zig
More file actions
269 lines (254 loc) · 13 KB
/
Copy pathroot.zig
File metadata and controls
269 lines (254 loc) · 13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
//! Pure-Zig libp2p-oriented networking helpers for Lean Ethereum clients.
//!
//! Add this package in `build.zig.zon`, then `b.dependency("zig_libp2p", …)`
//! and `dep.module("zig_libp2p")` on your executable or library module.
pub const errors = @import("primitives/errors.zig");
pub const metrics = @import("primitives/metrics.zig");
pub const layer_events = @import("core/layer_events.zig");
pub const peer_events = @import("core/peer_events.zig");
pub const connection_manager = @import("core/connection_manager.zig");
pub const swarm = @import("core/swarm.zig");
pub const host = @import("core/host.zig");
/// Canonical node bundle from [#31](https://github.com/ch4r10t33r/zig-libp2p/issues/31); same as [`host.Host`](host.zig).
pub const Node = host.Host;
/// Configuration for [`Node`]($).
pub const NodeConfig = host.HostConfig;
pub const wall_time = @import("primitives/wall_time.zig");
pub const protocol = @import("primitives/protocol.zig");
pub const varint = @import("primitives/varint.zig");
pub const addr_list = @import("primitives/addr_list.zig");
pub const multistream = @import("primitives/multistream.zig");
pub const ping = @import("protocols/ping/ping.zig");
pub const ping_wire_quic = @import("protocols/ping/ping_wire_quic.zig");
pub const identify = @import("protocols/identify/identify.zig");
pub const autonat = @import("protocols/autonat/root.zig");
pub const rendezvous = @import("protocols/rendezvous/root.zig");
pub const kad_dht = @import("protocols/kad_dht/root.zig");
pub const discovery = @import("protocols/discovery/root.zig");
pub const relay = @import("protocols/relay/root.zig");
pub const dcutr = @import("protocols/dcutr/root.zig");
pub const gossip = struct {
pub const topic = @import("protocols/gossip/topic.zig");
};
pub const gossipsub = struct {
pub const config = @import("protocols/gossipsub/config.zig");
pub const message_id = @import("protocols/gossipsub/message_id.zig");
pub const duplicate_cache = @import("protocols/gossipsub/duplicate_cache.zig");
pub const runtime = @import("protocols/gossipsub/runtime.zig");
pub const rpc = @import("protocols/gossipsub/rpc.zig");
pub const control = @import("protocols/gossipsub/control.zig");
pub const message = @import("protocols/gossipsub/message.zig");
pub const wire_limits = @import("protocols/gossipsub/wire_limits.zig");
};
pub const protobuf = struct {
pub const wire = @import("primitives/protobuf/wire.zig");
};
/// Libp2p peer IDs (`blockblaz/peer-id`), same pin as `multiaddr-zig`.
pub const peer_id = @import("peer_id");
pub const identity = @import("primitives/identity.zig");
pub const keypair = @import("primitives/keypair.zig");
/// Block Snappy (`zig_snappy`), same module name as in Zeam.
pub const snappyz = @import("snappyz");
/// Snappy framing for libp2p streams (`snappyframesz`).
pub const snappyframesz = @import("snappyframesz");
pub const req_resp = struct {
pub const frame = @import("protocols/req_resp/frame.zig");
pub const stream = @import("protocols/req_resp/stream.zig");
pub const snappy_wire = @import("protocols/req_resp/snappy_wire.zig");
pub const runtime = @import("protocols/req_resp/runtime.zig");
pub const wire_framing = @import("protocols/req_resp/wire_framing.zig");
pub const wire_tcp = @import("protocols/req_resp/wire_tcp.zig");
pub const wire_quic = @import("protocols/req_resp/wire_quic.zig");
};
pub const transport = struct {
pub const quic_v1 = @import("transport/quic/v1.zig");
pub const quic = @import("transport/quic/quic.zig");
pub const quic_raw_stream_io = @import("transport/quic/raw_stream_io.zig");
pub const quic_endpoint = @import("transport/quic/endpoint.zig");
pub const quic_peer_identity = @import("transport/quic/peer_identity.zig");
pub const quic_runtime = @import("transport/quic/runtime.zig");
pub const stream_multistream = @import("transport/stream_multistream.zig");
pub const tcp = @import("transport/tcp.zig");
pub const tcp_tls = @import("transport/tcp_tls.zig");
pub const ws_codec = @import("transport/ws_codec.zig");
pub const ws_handshake = @import("transport/ws_handshake.zig");
pub const ws = @import("transport/ws.zig");
pub const multistream_negotiate = @import("transport/multistream_negotiate.zig");
pub const transport_error = @import("transport/transport_error.zig");
pub const yamux = @import("transport/yamux/root.zig");
pub const mplex = @import("transport/mplex/root.zig");
pub const circuit_transport = @import("transport/circuit_transport.zig");
pub const dcutr_punch = @import("transport/dcutr_punch.zig");
pub const quic_relay_live = @import("transport/quic/relay_live.zig");
pub const quic_dcutr_live = @import("transport/quic/dcutr_live.zig");
};
pub const security = struct {
pub const libp2p_tls = @import("security/libp2p_tls.zig");
pub const libp2p_tls_cert = @import("security/libp2p_tls_cert.zig");
pub const noise = struct {
pub const protocol = @import("security/noise/protocol.zig");
pub const payload = @import("security/noise/payload.zig");
pub const identity = @import("security/noise/identity.zig");
pub const libp2p = @import("security/noise/libp2p_noise.zig");
pub const stream_upgrade = @import("security/noise/stream_upgrade.zig");
};
};
/// Pure-Zig QUIC/TLS stack ([zquic](https://github.com/ch4r10t33r/zquic)), Zig 0.16–pinned in `build.zig.zon`.
pub const zquic = @import("zquic");
/// Canonical nested module layout (flat aliases above remain until 1.0 freeze).
pub const primitives = struct {
pub const errors = @import("primitives/errors.zig");
pub const metrics = @import("primitives/metrics.zig");
pub const wall_time = @import("primitives/wall_time.zig");
pub const protocol = @import("primitives/protocol.zig");
pub const varint = @import("primitives/varint.zig");
pub const addr_list = @import("primitives/addr_list.zig");
pub const multistream = @import("primitives/multistream.zig");
pub const identity = @import("primitives/identity.zig");
pub const keypair = @import("primitives/keypair.zig");
pub const protobuf = struct {
pub const wire = @import("primitives/protobuf/wire.zig");
};
};
pub const core = struct {
pub const host = @import("core/host.zig");
pub const swarm = @import("core/swarm.zig");
pub const connection_manager = @import("core/connection_manager.zig");
pub const peer_events = @import("core/peer_events.zig");
pub const layer_events = @import("core/layer_events.zig");
};
pub const protocols = struct {
pub const ping = @import("protocols/ping/ping.zig");
pub const ping_wire_quic = @import("protocols/ping/ping_wire_quic.zig");
pub const identify = @import("protocols/identify/identify.zig");
pub const autonat = @import("protocols/autonat/root.zig");
pub const rendezvous = @import("protocols/rendezvous/root.zig");
pub const kad_dht = @import("protocols/kad_dht/root.zig");
pub const discovery = @import("protocols/discovery/root.zig");
pub const relay = @import("protocols/relay/root.zig");
pub const dcutr = @import("protocols/dcutr/root.zig");
pub const gossip = struct {
pub const topic = @import("protocols/gossip/topic.zig");
};
pub const gossipsub = struct {
pub const config = @import("protocols/gossipsub/config.zig");
pub const message_id = @import("protocols/gossipsub/message_id.zig");
pub const duplicate_cache = @import("protocols/gossipsub/duplicate_cache.zig");
pub const runtime = @import("protocols/gossipsub/runtime.zig");
pub const rpc = @import("protocols/gossipsub/rpc.zig");
pub const control = @import("protocols/gossipsub/control.zig");
pub const message = @import("protocols/gossipsub/message.zig");
pub const wire_limits = @import("protocols/gossipsub/wire_limits.zig");
};
pub const req_resp = struct {
pub const frame = @import("protocols/req_resp/frame.zig");
pub const stream = @import("protocols/req_resp/stream.zig");
pub const snappy_wire = @import("protocols/req_resp/snappy_wire.zig");
pub const runtime = @import("protocols/req_resp/runtime.zig");
pub const wire_framing = @import("protocols/req_resp/wire_framing.zig");
pub const wire_tcp = @import("protocols/req_resp/wire_tcp.zig");
pub const wire_quic = @import("protocols/req_resp/wire_quic.zig");
};
};
test {
_ = @import("wire_boundaries.zig");
_ = @import("transport/tcp_tls/sni.zig");
_ = @import("transport/yamux/root.zig");
_ = @import("transport/yamux/frame.zig");
_ = @import("transport/yamux/session.zig");
_ = @import("transport/mplex/root.zig");
_ = @import("transport/mplex/frame.zig");
_ = @import("transport/mplex/session.zig");
// Force discovery of modules whose tests would otherwise be skipped because
// nothing references them from already-discovered modules. This is the test
// analyzer's dead-code-elimination behaviour in Zig 0.16: tests in modules
// declared only through `pub const X = @import(…)` aren't pulled into the
// test binary unless the module is actually consumed somewhere. Adding the
// file here is the minimal force-discovery hook.
//
// Note: more modules can and should be added (#TBD-tracking-issue), but each
// addition currently surfaces latent compile errors that have been masked by
// the same elimination, so they need to be fixed alongside.
_ = @import("gossipsub/runtime.zig");
_ = @import("gossipsub/config.zig");
_ = @import("gossipsub/duplicate_cache.zig");
_ = @import("gossipsub/message_id.zig");
_ = @import("autonat/root.zig");
_ = @import("rendezvous/root.zig");
_ = @import("kad_dht/root.zig");
_ = @import("discovery/root.zig");
_ = @import("relay/root.zig");
_ = @import("dcutr/root.zig");
_ = @import("transport/circuit_transport.zig");
_ = @import("transport/dcutr_punch.zig");
_ = @import("transport/quic/relay_live.zig");
_ = @import("transport/quic/dcutr_live.zig");
_ = @import("relay/scenario.zig");
_ = @import("identify.zig");
_ = @import("identify_advertisement.zig");
_ = @import("autonat/root.zig");
_ = @import("connection_manager.zig");
_ = @import("metrics.zig");
_ = @import("security/libp2p_tls.zig");
_ = @import("security/libp2p_tls_cert.zig");
_ = @import("transport/ws_codec.zig");
_ = @import("transport/ws_handshake.zig");
_ = @import("transport/ws.zig");
_ = @import("security/noise/identity.zig");
_ = @import("security/noise/libp2p_noise.zig");
_ = @import("security/noise/payload.zig");
_ = @import("security/noise/protocol.zig");
// The following files run TCP/QUIC loopback handshakes on real OS
// threads via `Io.Threaded` and are deliberately *not* in test discovery:
// the same parallel accept/dial ordering that already forces the example
// smoke step to run serially (`build.zig` comment "Parallel runs were
// observed to hang indefinitely") also hangs the test runner on Linux CI.
// Their wire-level logic is covered by sibling modules that don't open
// real sockets (`noise/identity.zig`, `noise/protocol.zig`,
// `noise/payload.zig`, `transport/over_cap.zig`, `req_resp/frame.zig`,
// `req_resp/stream.zig`, etc.).
// - security/noise/stream_upgrade.zig
// - transport/quic_endpoint.zig
// - transport/tcp.zig
// - transport/tcp_tls/stream_upgrade.zig (loopback; not force-discovered)
// - req_resp/wire_tcp.zig
_ = @import("transport/tcp_tls.zig");
_ = @import("transport/over_cap.zig");
_ = @import("transport/multistream_negotiate.zig");
_ = @import("transport/quic/quic.zig");
_ = @import("transport/quic_peer_identity.zig");
_ = @import("transport/quic/raw_stream_io.zig");
_ = @import("transport/quic/runtime.zig");
_ = @import("transport/quic/v1.zig");
_ = @import("transport/stream_multistream.zig");
_ = @import("transport/transport_error.zig");
_ = @import("transport/zquic_feed_addr.zig");
_ = @import("transport/quic_posix_udp.zig");
_ = @import("multistream.zig");
_ = @import("swarm.zig");
_ = @import("host.zig");
_ = @import("identity.zig");
_ = @import("keypair.zig");
_ = @import("ping.zig");
_ = @import("ping_wire_quic.zig");
_ = @import("addr_list.zig");
_ = @import("protocol.zig");
_ = @import("varint.zig");
_ = @import("layer_events.zig");
_ = @import("peer_events.zig");
_ = @import("errors.zig");
_ = @import("protobuf/wire.zig");
_ = @import("gossip/topic.zig");
_ = @import("gossipsub/control.zig");
_ = @import("gossipsub/message.zig");
_ = @import("gossipsub/rpc.zig");
_ = @import("gossipsub/wire_limits.zig");
_ = @import("req_resp/frame.zig");
_ = @import("req_resp/stream.zig");
_ = @import("req_resp/snappy_wire.zig");
_ = @import("req_resp/runtime.zig");
_ = @import("req_resp/wire_framing.zig");
// `req_resp/wire_tcp.zig` excluded — see TCP loopback note above.
_ = @import("req_resp/wire_quic.zig");
_ = @import("wall_time.zig");
}