Skip to content

Commit 7d6031a

Browse files
committed
Split NetIPC codec and service implementations
1 parent 600f316 commit 7d6031a

113 files changed

Lines changed: 9223 additions & 9192 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.agents/sow/current/SOW-0014-20260603-maintainability-hotspots.md renamed to .agents/sow/done/SOW-0014-20260603-maintainability-hotspots.md

Lines changed: 157 additions & 6 deletions
Large diffs are not rendered by default.

CMakeLists.txt

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,9 @@ endif()
3737

3838
add_library(netipc_protocol STATIC
3939
src/libnetdata/netipc/src/protocol/netipc_protocol.c
40-
src/libnetdata/netipc/src/protocol/netipc_protocol_cgroups.c
40+
src/libnetdata/netipc/src/protocol/netipc_protocol_increment.c
41+
src/libnetdata/netipc/src/protocol/netipc_protocol_string_reverse.c
42+
src/libnetdata/netipc/src/protocol/netipc_protocol_cgroups_snapshot.c
4143
src/libnetdata/netipc/src/protocol/netipc_protocol_lookup_common.c
4244
src/libnetdata/netipc/src/protocol/netipc_protocol_cgroups_lookup.c
4345
src/libnetdata/netipc/src/protocol/netipc_protocol_apps_lookup.c
@@ -72,7 +74,17 @@ if(NOT NETIPC_WINDOWS_RUNTIME)
7274

7375
add_library(netipc_service STATIC
7476
src/libnetdata/netipc/src/service/netipc_service_common.c
77+
src/libnetdata/netipc/src/service/netipc_service_cgroups_cache_common.c
78+
src/libnetdata/netipc/src/service/netipc_service_cgroups_cache.c
79+
src/libnetdata/netipc/src/service/netipc_service_cgroups_snapshot.c
80+
src/libnetdata/netipc/src/service/netipc_service_cgroups_lookup.c
81+
src/libnetdata/netipc/src/service/netipc_service_apps_lookup.c
7582
src/libnetdata/netipc/src/service/netipc_service.c
83+
src/libnetdata/netipc/src/service/netipc_service_posix_client.c
84+
src/libnetdata/netipc/src/service/netipc_service_posix_client_connect.c
85+
src/libnetdata/netipc/src/service/netipc_service_posix_client_call.c
86+
src/libnetdata/netipc/src/service/netipc_service_posix_server.c
87+
src/libnetdata/netipc/src/service/netipc_service_posix_server_session.c
7688
)
7789
target_include_directories(netipc_service PUBLIC
7890
src/libnetdata/netipc/include
@@ -108,7 +120,17 @@ if(NETIPC_WINDOWS_RUNTIME)
108120

109121
add_library(netipc_service_win STATIC
110122
src/libnetdata/netipc/src/service/netipc_service_common.c
123+
src/libnetdata/netipc/src/service/netipc_service_cgroups_cache_common.c
124+
src/libnetdata/netipc/src/service/netipc_service_cgroups_cache.c
125+
src/libnetdata/netipc/src/service/netipc_service_cgroups_snapshot.c
126+
src/libnetdata/netipc/src/service/netipc_service_cgroups_lookup.c
127+
src/libnetdata/netipc/src/service/netipc_service_apps_lookup.c
111128
src/libnetdata/netipc/src/service/netipc_service_win.c
129+
src/libnetdata/netipc/src/service/netipc_service_win_client.c
130+
src/libnetdata/netipc/src/service/netipc_service_win_client_connect.c
131+
src/libnetdata/netipc/src/service/netipc_service_win_client_call.c
132+
src/libnetdata/netipc/src/service/netipc_service_win_server.c
133+
src/libnetdata/netipc/src/service/netipc_service_win_server_session.c
112134
)
113135
target_include_directories(netipc_service_win PUBLIC
114136
src/libnetdata/netipc/include

bench/drivers/go/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import (
2525
"unsafe"
2626

2727
"github.com/netdata/plugin-ipc/go/pkg/netipc/protocol"
28-
"github.com/netdata/plugin-ipc/go/pkg/netipc/service/cgroups"
28+
cgroups "github.com/netdata/plugin-ipc/go/pkg/netipc/service/cgroups_snapshot"
2929
rawsvc "github.com/netdata/plugin-ipc/go/pkg/netipc/service/raw"
3030
"github.com/netdata/plugin-ipc/go/pkg/netipc/transport/posix"
3131
)

bench/drivers/go/main_windows.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import (
2727
"unsafe"
2828

2929
"github.com/netdata/plugin-ipc/go/pkg/netipc/protocol"
30-
"github.com/netdata/plugin-ipc/go/pkg/netipc/service/cgroups"
30+
cgroups "github.com/netdata/plugin-ipc/go/pkg/netipc/service/cgroups_snapshot"
3131
rawsvc "github.com/netdata/plugin-ipc/go/pkg/netipc/service/raw"
3232
"github.com/netdata/plugin-ipc/go/pkg/netipc/transport/windows"
3333
)

docs/code-organization.md

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,23 @@ src/
4040
posix/ # L1: UDS SEQPACKET, POSIX SHM
4141
windows/ # L1: Named Pipe, Windows SHM
4242
service/ # L2/L3: typed client/server helpers
43+
netipc_service.c # POSIX platform fault/memory/timing helpers
44+
netipc_service_posix_client.c # POSIX public client API/config
45+
netipc_service_posix_client_connect.c # POSIX client connect/reconnect
46+
netipc_service_posix_client_call.c # POSIX client raw-call flow
47+
netipc_service_posix_server.c # POSIX server lifecycle/accept
48+
netipc_service_posix_server_session.c # POSIX server session loop
49+
netipc_service_win.c # Windows platform helpers
50+
netipc_service_win_client*.c # Windows client API/connect/call
51+
netipc_service_win_server*.c # Windows server lifecycle/session
4352
4453
crates/netipc/ # Rust library (Cargo crate)
4554
src/
4655
protocol/ # Codec
4756
mod.rs # Core wire primitives and codec re-exports
57+
increment.rs # increment codec
58+
string_reverse.rs # string-reverse codec
59+
cgroups_snapshot.rs # cgroups-snapshot codec
4860
lookup/ # Lookup codec family
4961
common.rs # Shared lookup helpers
5062
cgroups_lookup.rs # cgroups lookup codec
@@ -53,10 +65,19 @@ src/
5365
posix.rs # L1: UDS, SHM
5466
windows.rs # L1: Named Pipe, SHM
5567
service/ # L2/L3: typed client/server helpers
68+
cgroups_snapshot.rs # cgroups-snapshot public typed facade
69+
cgroups_lookup.rs # cgroups-lookup public typed facade
70+
apps_lookup.rs # apps-lookup public typed facade
71+
cgroups.rs # compatibility re-exports for historical imports
5672
raw.rs # Internal raw helper wrapper/re-exports
5773
raw/ # Shared raw infrastructure plus per-method helpers
58-
client.rs # Shared raw client lifecycle, retry, send/receive
59-
server.rs # Shared managed-server lifecycle
74+
client.rs # Raw client state and public lifecycle
75+
client_call.rs # Shared retry/envelope/send-receive flow
76+
client_unix.rs # POSIX connect and SHM attach
77+
client_windows.rs # Windows connect and SHM attach
78+
server.rs # Managed-server state and public lifecycle
79+
server_unix.rs # POSIX accept and prepared-SHM setup
80+
server_windows.rs # Windows accept and prepared-SHM setup
6081
cgroups_snapshot.rs # cgroups-snapshot raw call/dispatch
6182
cgroups_lookup.rs # cgroups-lookup raw call/dispatch
6283
apps_lookup.rs # apps-lookup raw call/dispatch
@@ -65,13 +86,30 @@ src/
6586
go/pkg/netipc/ # Go library (Go package)
6687
protocol/ # Codec
6788
frame.go # Core wire primitives
89+
increment.go # increment codec
90+
string_reverse.go # string-reverse codec
91+
cgroups_snapshot.go # cgroups-snapshot codec
6892
lookup_common.go # Shared lookup helpers
6993
cgroups_lookup.go # cgroups lookup codec
7094
apps_lookup.go # apps lookup codec
7195
transport/
7296
posix/ # L1: UDS, SHM
7397
windows/ # L1: Named Pipe, SHM
7498
service/ # L2/L3: typed client/server helpers
99+
cgroups_snapshot/ # cgroups-snapshot public typed facade
100+
cgroups_lookup/ # cgroups-lookup public typed facade
101+
apps_lookup/ # apps-lookup public typed facade
102+
cgroups/ # compatibility aliases for historical imports
103+
raw/ # Internal raw helper infrastructure
104+
client.go # shared raw client retry/envelope flow
105+
client_unix.go # POSIX client connect/send/receive
106+
client_windows.go # Windows client connect/send/receive
107+
server.go # shared server dispatch helpers
108+
server_unix.go # POSIX server accept/session loop
109+
server_windows.go # Windows server accept/session loop
110+
*_unix.go # per-method POSIX constructors
111+
*_windows.go # per-method Windows constructors
112+
cgroups_cache*.go # cgroups-snapshot Level 3 cache
75113
76114
tests/
77115
fixtures/ # Helper binaries for live testing
@@ -170,6 +208,14 @@ aliases, dispatch adapters, and Level 3 cache logic for one service
170208
kind must live in service-kind-specific files so adding new service
171209
kinds does not expand a shared catch-all module.
172210

211+
When shared raw/helper files grow beyond one responsibility, split by
212+
goal before adding a new service kind. Keep platform fault/memory helpers,
213+
public client API/config mapping, client connect/reconnect, raw call
214+
send/receive/retry flow, server lifecycle/accept, and server session loops
215+
in separate files where the language layout supports it. POSIX and Windows
216+
implementations should remain explicit files when their wait, SHM, close,
217+
or wake-up behavior differs.
218+
173219
Service modules must NOT contain:
174220

175221
- Transport implementation details (no direct socket/pipe/SHM code)

docs/getting-started.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ client.close();
126126
### Go
127127

128128
```go
129-
import "github.com/netdata/plugin-ipc/go/pkg/netipc/service/cgroups"
129+
import cgroups "github.com/netdata/plugin-ipc/go/pkg/netipc/service/cgroups_snapshot"
130130
import "github.com/netdata/plugin-ipc/go/pkg/netipc/protocol"
131131

132132
config := cgroups.ClientConfig{

docs/netipc-integrator-skill.md

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,18 +87,30 @@ Relevant implementation roots:
8787
- C public service API:
8888
- [src/libnetdata/netipc/include/netipc/netipc_service.h](../src/libnetdata/netipc/include/netipc/netipc_service.h)
8989
- [src/libnetdata/netipc/include/netipc/netipc_protocol.h](../src/libnetdata/netipc/include/netipc/netipc_protocol.h)
90+
- C internal service implementation:
91+
- [src/libnetdata/netipc/src/service/netipc_service_cgroups_snapshot.c](../src/libnetdata/netipc/src/service/netipc_service_cgroups_snapshot.c)
92+
- [src/libnetdata/netipc/src/service/netipc_service_cgroups_lookup.c](../src/libnetdata/netipc/src/service/netipc_service_cgroups_lookup.c)
93+
- [src/libnetdata/netipc/src/service/netipc_service_apps_lookup.c](../src/libnetdata/netipc/src/service/netipc_service_apps_lookup.c)
94+
- [src/libnetdata/netipc/src/service/netipc_service_posix_client*.c](../src/libnetdata/netipc/src/service/)
95+
- [src/libnetdata/netipc/src/service/netipc_service_posix_server*.c](../src/libnetdata/netipc/src/service/)
96+
- [src/libnetdata/netipc/src/service/netipc_service_win_client*.c](../src/libnetdata/netipc/src/service/)
97+
- [src/libnetdata/netipc/src/service/netipc_service_win_server*.c](../src/libnetdata/netipc/src/service/)
9098
- Rust public service API:
91-
- [src/crates/netipc/src/service/cgroups.rs](../src/crates/netipc/src/service/cgroups.rs)
99+
- [src/crates/netipc/src/service/cgroups_snapshot.rs](../src/crates/netipc/src/service/cgroups_snapshot.rs)
92100
- [src/crates/netipc/src/service/cgroups_lookup.rs](../src/crates/netipc/src/service/cgroups_lookup.rs)
93101
- [src/crates/netipc/src/service/apps_lookup.rs](../src/crates/netipc/src/service/apps_lookup.rs)
102+
- [src/crates/netipc/src/service/cgroups.rs](../src/crates/netipc/src/service/cgroups.rs) preserves the historical cgroups-snapshot module path with re-exports.
94103
- Go public service API:
95-
- [src/go/pkg/netipc/service/cgroups/](../src/go/pkg/netipc/service/cgroups/)
104+
- [src/go/pkg/netipc/service/cgroups_snapshot/](../src/go/pkg/netipc/service/cgroups_snapshot/)
96105
- [src/go/pkg/netipc/service/cgroups_lookup/](../src/go/pkg/netipc/service/cgroups_lookup/)
97106
- [src/go/pkg/netipc/service/apps_lookup/](../src/go/pkg/netipc/service/apps_lookup/)
107+
- [src/go/pkg/netipc/service/cgroups/](../src/go/pkg/netipc/service/cgroups/) preserves the historical cgroups-snapshot import path with aliases.
98108
- Internal raw helpers used to build public typed services:
99109
- [src/crates/netipc/src/service/raw.rs](../src/crates/netipc/src/service/raw.rs)
100110
- [src/crates/netipc/src/service/raw/](../src/crates/netipc/src/service/raw/)
101111
- [src/go/pkg/netipc/service/raw/](../src/go/pkg/netipc/service/raw/)
112+
- shared raw/client/server files own generic lifecycle, retry, call, and session loops
113+
- service-kind files own typed calls, handler aliases, dispatch adapters, and cache logic
102114

103115
Important current limitation:
104116

@@ -381,7 +393,9 @@ Current public shapes:
381393

382394
Public typed service facade lives in:
383395

384-
- [src/crates/netipc/src/service/cgroups.rs](../src/crates/netipc/src/service/cgroups.rs)
396+
- [src/crates/netipc/src/service/cgroups_snapshot.rs](../src/crates/netipc/src/service/cgroups_snapshot.rs)
397+
398+
The historical [src/crates/netipc/src/service/cgroups.rs](../src/crates/netipc/src/service/cgroups.rs) module path is compatibility-only.
385399

386400
Current public shapes:
387401

@@ -409,7 +423,9 @@ Current public shapes:
409423

410424
Public typed service facade lives in:
411425

412-
- [src/go/pkg/netipc/service/cgroups/](../src/go/pkg/netipc/service/cgroups/)
426+
- [src/go/pkg/netipc/service/cgroups_snapshot/](../src/go/pkg/netipc/service/cgroups_snapshot/)
427+
428+
The historical [src/go/pkg/netipc/service/cgroups/](../src/go/pkg/netipc/service/cgroups/) import path is compatibility-only.
413429

414430
Current public shapes:
415431

File renamed without changes.

src/crates/netipc/src/protocol/lookup.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,8 @@ mod common;
66

77
pub use apps_lookup::*;
88
pub use cgroups_lookup::*;
9-
pub use common::{LookupLabelView, LOOKUP_DIR_ENTRY_SIZE, LOOKUP_LABEL_ENTRY_SIZE};
9+
pub use common::{
10+
LookupLabelView, LOOKUP_DIR_ENTRY_SIZE, LOOKUP_LABEL_ENTRY_SIZE, ORCHESTRATOR_DOCKER,
11+
ORCHESTRATOR_K8S, ORCHESTRATOR_KVM, ORCHESTRATOR_LXC, ORCHESTRATOR_NSPAWN, ORCHESTRATOR_PODMAN,
12+
ORCHESTRATOR_SYSTEMD, ORCHESTRATOR_UNKNOWN,
13+
};

src/crates/netipc/src/protocol/lookup/apps_lookup.rs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
11
//! APPS_LOOKUP codec.
22
33
use super::common::*;
4-
use crate::protocol::cgroups::StrView;
5-
use crate::protocol::{
6-
align8, NipcError, APPS_CGROUP_HOST_ROOT, APPS_CGROUP_KNOWN, APPS_CGROUP_UNKNOWN_PERMANENT,
7-
APPS_CGROUP_UNKNOWN_RETRY_LATER, NIPC_UID_UNSET, PID_LOOKUP_KNOWN, PID_LOOKUP_UNKNOWN,
8-
};
4+
use crate::protocol::{align8, NipcError, StrView};
5+
6+
pub const NIPC_UID_UNSET: u32 = u32::MAX;
7+
8+
pub const PID_LOOKUP_KNOWN: u16 = 0;
9+
pub const PID_LOOKUP_UNKNOWN: u16 = 1;
10+
11+
pub const APPS_CGROUP_KNOWN: u16 = 0;
12+
pub const APPS_CGROUP_UNKNOWN_RETRY_LATER: u16 = 1;
13+
pub const APPS_CGROUP_UNKNOWN_PERMANENT: u16 = 2;
14+
pub const APPS_CGROUP_HOST_ROOT: u16 = 3;
915

1016
pub const APPS_LOOKUP_REQ_HDR_SIZE: usize = 16;
1117
pub const APPS_LOOKUP_RESP_HDR_SIZE: usize = 16;

0 commit comments

Comments
 (0)