From 49a79b6c2a11c438e15bbe02380649254823bfff Mon Sep 17 00:00:00 2001 From: Tony Aiuto Date: Sun, 19 Apr 2026 12:41:41 -0400 Subject: [PATCH 1/2] [go-migration] layer 0, some things in comp/a* - comp/agent/autoexit - comp/agent/cloudfoundrycontainer/mock/ - comp/agent/expvarserver/fx/ - comp/agent/expvarserver/impl - comp/agent/expvarserver/mock - comp/agent/jmxlogger/jmxloggerimpl - comp/api/api/apiimpl - comp/api/api/apiimpl/internal/config - comp/api/api/apiimpl/listener - comp/api/api/apiimpl/observability - comp/api/grpcserver/fx-none - comp/api/grpcserver/helpers - comp/api/grpcserver/impl-none - comp/api/grpcserver/mock - comp/autoscaling/datadogclient/fx - comp/autoscaling/datadogclient/impl - comp/autoscaling/datadogclient/mock comp/agent comp/autoscaling/datadogclient/BUILD.bazel --- BUILD.bazel | 4 -- comp/agent/BUILD.bazel | 5 +- comp/agent/autoexit/fx/BUILD.bazel | 12 +++++ comp/agent/autoexit/impl/BUILD.bazel | 30 ++++++++++++ comp/agent/autoexit/mock/BUILD.bazel | 9 ++++ .../cloudfoundrycontainer/mock/BUILD.bazel | 9 ++++ comp/agent/expvarserver/fx/BUILD.bazel | 12 +++++ comp/agent/expvarserver/impl/BUILD.bazel | 14 ++++++ comp/agent/expvarserver/mock/BUILD.bazel | 9 ++++ .../agent/jmxlogger/jmxloggerimpl/BUILD.bazel | 32 +++++++++++++ comp/api/api/apiimpl/BUILD.bazel | 10 ++++ .../api/apiimpl/internal/config/BUILD.bazel | 30 ++++++++++++ comp/api/api/apiimpl/listener/BUILD.bazel | 32 +++++++++++++ .../api/api/apiimpl/observability/BUILD.bazel | 39 +++++++++++++++ comp/api/grpcserver/BUILD.bazel | 2 + comp/api/grpcserver/fx-none/BUILD.bazel | 13 +++++ comp/api/grpcserver/helpers/BUILD.bazel | 13 +++++ comp/api/grpcserver/impl-none/BUILD.bazel | 9 ++++ comp/api/grpcserver/mock/BUILD.bazel | 9 ++++ comp/autoscaling/datadogclient/BUILD.bazel | 2 + comp/autoscaling/datadogclient/fx/BUILD.bazel | 15 ++++++ .../datadogclient/impl/BUILD.bazel | 47 +++++++++++++++++++ .../datadogclient/mock/BUILD.bazel | 15 ++++++ 23 files changed, 367 insertions(+), 5 deletions(-) create mode 100644 comp/agent/autoexit/fx/BUILD.bazel create mode 100644 comp/agent/autoexit/impl/BUILD.bazel create mode 100644 comp/agent/autoexit/mock/BUILD.bazel create mode 100644 comp/agent/cloudfoundrycontainer/mock/BUILD.bazel create mode 100644 comp/agent/expvarserver/fx/BUILD.bazel create mode 100644 comp/agent/expvarserver/impl/BUILD.bazel create mode 100644 comp/agent/expvarserver/mock/BUILD.bazel create mode 100644 comp/agent/jmxlogger/jmxloggerimpl/BUILD.bazel create mode 100644 comp/api/api/apiimpl/BUILD.bazel create mode 100644 comp/api/api/apiimpl/internal/config/BUILD.bazel create mode 100644 comp/api/api/apiimpl/listener/BUILD.bazel create mode 100644 comp/api/api/apiimpl/observability/BUILD.bazel create mode 100644 comp/api/grpcserver/BUILD.bazel create mode 100644 comp/api/grpcserver/fx-none/BUILD.bazel create mode 100644 comp/api/grpcserver/helpers/BUILD.bazel create mode 100644 comp/api/grpcserver/impl-none/BUILD.bazel create mode 100644 comp/api/grpcserver/mock/BUILD.bazel create mode 100644 comp/autoscaling/datadogclient/BUILD.bazel create mode 100644 comp/autoscaling/datadogclient/fx/BUILD.bazel create mode 100644 comp/autoscaling/datadogclient/impl/BUILD.bazel create mode 100644 comp/autoscaling/datadogclient/mock/BUILD.bazel diff --git a/BUILD.bazel b/BUILD.bazel index 516edaac2adf..1e8d597c97db 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -19,16 +19,12 @@ exports_files(glob( # TODO(agent-build): remove below `gazelle:exclude` directives (automatically updates @bazelify_go_work//:go.work) # gazelle:exclude cmd -# gazelle:exclude comp/agent # gazelle:exclude comp/aggregator -# gazelle:exclude comp/api/api/apiimpl # gazelle:exclude comp/api/api/utils # gazelle:exclude comp/api/authtoken # gazelle:exclude comp/api/bundle.go # gazelle:exclude comp/api/bundle_test.go # gazelle:exclude comp/api/commonendpoints -# gazelle:exclude comp/api/grpcserver -# gazelle:exclude comp/autoscaling # gazelle:exclude comp/checks # gazelle:exclude comp/collector # gazelle:exclude comp/connectivitychecker/checker diff --git a/comp/agent/BUILD.bazel b/comp/agent/BUILD.bazel index 9968c4af55f8..a9409f42a27d 100644 --- a/comp/agent/BUILD.bazel +++ b/comp/agent/BUILD.bazel @@ -1 +1,4 @@ -# gazelle:ignore +# gazelle:ignore bundle.go +# gazelle:ignore bundle_test.go +# gazelle:exclude cloudfoundrycontainer/fx +# gazelle:exclude cloudfoundrycontainer/impl diff --git a/comp/agent/autoexit/fx/BUILD.bazel b/comp/agent/autoexit/fx/BUILD.bazel new file mode 100644 index 000000000000..4fd3cb228eda --- /dev/null +++ b/comp/agent/autoexit/fx/BUILD.bazel @@ -0,0 +1,12 @@ +load("@rules_go//go:def.bzl", "go_library") + +go_library( + name = "fx", + srcs = ["fx.go"], + importpath = "github.com/DataDog/datadog-agent/comp/agent/autoexit/fx", + visibility = ["//visibility:public"], + deps = [ + "//comp/agent/autoexit/impl", + "//pkg/util/fxutil", + ], +) diff --git a/comp/agent/autoexit/impl/BUILD.bazel b/comp/agent/autoexit/impl/BUILD.bazel new file mode 100644 index 000000000000..6b106686f117 --- /dev/null +++ b/comp/agent/autoexit/impl/BUILD.bazel @@ -0,0 +1,30 @@ +load("@rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "impl", + srcs = [ + "autoexit.go", + "manager.go", + ], + importpath = "github.com/DataDog/datadog-agent/comp/agent/autoexit/impl", + visibility = ["//visibility:public"], + deps = [ + "//comp/agent/autoexit/def", + "//comp/core/config", + "//comp/core/log/def", + "//pkg/util/common", + "@com_github_shirou_gopsutil_v4//process", + ], +) + +go_test( + name = "impl_test", + srcs = ["manager_test.go"], + embed = [":impl"], + gotags = ["test"], + deps = [ + "//comp/core/log/def", + "//comp/core/log/mock", + "@com_github_stretchr_testify//require", + ], +) diff --git a/comp/agent/autoexit/mock/BUILD.bazel b/comp/agent/autoexit/mock/BUILD.bazel new file mode 100644 index 000000000000..8ea740358cb9 --- /dev/null +++ b/comp/agent/autoexit/mock/BUILD.bazel @@ -0,0 +1,9 @@ +load("@rules_go//go:def.bzl", "go_library") + +go_library( + name = "mock", + srcs = ["mock.go"], + importpath = "github.com/DataDog/datadog-agent/comp/agent/autoexit/mock", + visibility = ["//visibility:public"], + deps = ["//comp/agent/autoexit/def"], +) diff --git a/comp/agent/cloudfoundrycontainer/mock/BUILD.bazel b/comp/agent/cloudfoundrycontainer/mock/BUILD.bazel new file mode 100644 index 000000000000..0aa7b4adbec3 --- /dev/null +++ b/comp/agent/cloudfoundrycontainer/mock/BUILD.bazel @@ -0,0 +1,9 @@ +load("@rules_go//go:def.bzl", "go_library") + +go_library( + name = "mock", + srcs = ["mock.go"], + importpath = "github.com/DataDog/datadog-agent/comp/agent/cloudfoundrycontainer/mock", + visibility = ["//visibility:public"], + deps = ["//comp/agent/cloudfoundrycontainer/def"], +) diff --git a/comp/agent/expvarserver/fx/BUILD.bazel b/comp/agent/expvarserver/fx/BUILD.bazel new file mode 100644 index 000000000000..5b6e9d6f39e1 --- /dev/null +++ b/comp/agent/expvarserver/fx/BUILD.bazel @@ -0,0 +1,12 @@ +load("@rules_go//go:def.bzl", "go_library") + +go_library( + name = "fx", + srcs = ["fx.go"], + importpath = "github.com/DataDog/datadog-agent/comp/agent/expvarserver/fx", + visibility = ["//visibility:public"], + deps = [ + "//comp/agent/expvarserver/impl", + "//pkg/util/fxutil", + ], +) diff --git a/comp/agent/expvarserver/impl/BUILD.bazel b/comp/agent/expvarserver/impl/BUILD.bazel new file mode 100644 index 000000000000..cb857cdf810e --- /dev/null +++ b/comp/agent/expvarserver/impl/BUILD.bazel @@ -0,0 +1,14 @@ +load("@rules_go//go:def.bzl", "go_library") + +go_library( + name = "impl", + srcs = ["expvarserver.go"], + importpath = "github.com/DataDog/datadog-agent/comp/agent/expvarserver/impl", + visibility = ["//visibility:public"], + deps = [ + "//comp/agent/expvarserver/def", + "//comp/core/config", + "//comp/core/log/def", + "//comp/def", + ], +) diff --git a/comp/agent/expvarserver/mock/BUILD.bazel b/comp/agent/expvarserver/mock/BUILD.bazel new file mode 100644 index 000000000000..564600c591cc --- /dev/null +++ b/comp/agent/expvarserver/mock/BUILD.bazel @@ -0,0 +1,9 @@ +load("@rules_go//go:def.bzl", "go_library") + +go_library( + name = "mock", + srcs = ["mock.go"], + importpath = "github.com/DataDog/datadog-agent/comp/agent/expvarserver/mock", + visibility = ["//visibility:public"], + deps = ["//comp/agent/expvarserver/def"], +) diff --git a/comp/agent/jmxlogger/jmxloggerimpl/BUILD.bazel b/comp/agent/jmxlogger/jmxloggerimpl/BUILD.bazel new file mode 100644 index 000000000000..5ec9c38fd76f --- /dev/null +++ b/comp/agent/jmxlogger/jmxloggerimpl/BUILD.bazel @@ -0,0 +1,32 @@ +load("@rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "jmxloggerimpl", + srcs = [ + "jmxlogger.go", + "params.go", + ], + importpath = "github.com/DataDog/datadog-agent/comp/agent/jmxlogger/jmxloggerimpl", + visibility = ["//visibility:public"], + deps = [ + "//comp/agent/jmxlogger", + "//comp/core/config", + "//pkg/util/defaultpaths", + "//pkg/util/fxutil", + "//pkg/util/log/setup", + "@org_uber_go_fx//:fx", + ], +) + +go_test( + name = "jmxloggerimpl_test", + srcs = ["jmxlogger_test.go"], + embed = [":jmxloggerimpl"], + gotags = ["test"], + deps = [ + "//comp/core/config", + "//pkg/util/fxutil", + "@com_github_stretchr_testify//assert", + "@org_uber_go_fx//:fx", + ], +) diff --git a/comp/api/api/apiimpl/BUILD.bazel b/comp/api/api/apiimpl/BUILD.bazel new file mode 100644 index 000000000000..073d29b53e6a --- /dev/null +++ b/comp/api/api/apiimpl/BUILD.bazel @@ -0,0 +1,10 @@ +load("@rules_go//go:def.bzl", "go_library", "go_test") + +# gazelle:exclude internal/agent +# gazelle:ignore api.go +# gazelle:ignore api_mock.go +# gazelle:ignore api_test.go +# gazelle:ignore server.go +# gazelle:ignore server_cmd.go +# gazelle:ignore server_test.go +# gazelle:ignore server_ipc.go diff --git a/comp/api/api/apiimpl/internal/config/BUILD.bazel b/comp/api/api/apiimpl/internal/config/BUILD.bazel new file mode 100644 index 000000000000..f1bbb15bc3b9 --- /dev/null +++ b/comp/api/api/apiimpl/internal/config/BUILD.bazel @@ -0,0 +1,30 @@ +load("@rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "config", + srcs = ["endpoint.go"], + importpath = "github.com/DataDog/datadog-agent/comp/api/api/apiimpl/internal/config", + visibility = ["//comp/api/api/apiimpl:__subpackages__"], + deps = [ + "//comp/api/api/def", + "//pkg/config/model", + "//pkg/util/common", + "//pkg/util/log", + "@com_github_gorilla_mux//:mux", + "@com_github_json_iterator_go//:go", + ], +) + +go_test( + name = "config_test", + srcs = ["endpoint_test.go"], + embed = [":config"], + gotags = ["test"], + deps = [ + "//comp/api/api/def", + "//pkg/config/mock", + "//pkg/config/model", + "@com_github_stretchr_testify//assert", + "@com_github_stretchr_testify//require", + ], +) diff --git a/comp/api/api/apiimpl/listener/BUILD.bazel b/comp/api/api/apiimpl/listener/BUILD.bazel new file mode 100644 index 000000000000..24c0db99d5f1 --- /dev/null +++ b/comp/api/api/apiimpl/listener/BUILD.bazel @@ -0,0 +1,32 @@ +load("@rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "listener", + srcs = [ + "common.go", + "listener_nix.go", + "listener_other.go", + ], + importpath = "github.com/DataDog/datadog-agent/comp/api/api/apiimpl/listener", + visibility = ["//visibility:public"], + deps = [ + "//pkg/config/setup", + "//pkg/util/system/socket", + "@com_github_mdlayher_vsock//:vsock", + ], +) + +go_test( + name = "listener_test", + srcs = [ + "common_test.go", + "listener_nix_test.go", + "listener_other_test.go", + ], + embed = [":listener"], + gotags = ["test"], + deps = [ + "//pkg/config/mock", + "@com_github_stretchr_testify//require", + ], +) diff --git a/comp/api/api/apiimpl/observability/BUILD.bazel b/comp/api/api/apiimpl/observability/BUILD.bazel new file mode 100644 index 000000000000..c9b7f533ce82 --- /dev/null +++ b/comp/api/api/apiimpl/observability/BUILD.bazel @@ -0,0 +1,39 @@ +load("@rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "observability", + srcs = [ + "logging.go", + "telemetry.go", + "utils.go", + ], + importpath = "github.com/DataDog/datadog-agent/comp/api/api/apiimpl/observability", + visibility = ["//visibility:public"], + deps = [ + "//comp/core/telemetry", + "//pkg/util/log", + "@com_github_benbjohnson_clock//:clock", + "@com_github_gorilla_mux//:mux", + "@com_github_urfave_negroni//:negroni", + ], +) + +go_test( + name = "observability_test", + srcs = [ + "logging_test.go", + "telemetry_test.go", + "utils_test.go", + ], + embed = [":observability"], + gotags = ["test"], + deps = [ + "//comp/core/telemetry", + "//comp/core/telemetry/telemetryimpl", + "//pkg/util/fxutil", + "@com_github_benbjohnson_clock//:clock", + "@com_github_gorilla_mux//:mux", + "@com_github_stretchr_testify//assert", + "@com_github_stretchr_testify//require", + ], +) diff --git a/comp/api/grpcserver/BUILD.bazel b/comp/api/grpcserver/BUILD.bazel new file mode 100644 index 000000000000..2fbbefc7e097 --- /dev/null +++ b/comp/api/grpcserver/BUILD.bazel @@ -0,0 +1,2 @@ +# gazelle:exclude fx-agent +# gazelle:exclude impl-agent diff --git a/comp/api/grpcserver/fx-none/BUILD.bazel b/comp/api/grpcserver/fx-none/BUILD.bazel new file mode 100644 index 000000000000..1cc71eee31a0 --- /dev/null +++ b/comp/api/grpcserver/fx-none/BUILD.bazel @@ -0,0 +1,13 @@ +load("@rules_go//go:def.bzl", "go_library") + +go_library( + name = "fx-none", + srcs = ["fx.go"], + importpath = "github.com/DataDog/datadog-agent/comp/api/grpcserver/fx-none", + visibility = ["//visibility:public"], + deps = [ + "//comp/api/grpcserver/def", + "//comp/api/grpcserver/impl-none", + "//pkg/util/fxutil", + ], +) diff --git a/comp/api/grpcserver/helpers/BUILD.bazel b/comp/api/grpcserver/helpers/BUILD.bazel new file mode 100644 index 000000000000..3e37f0bee08c --- /dev/null +++ b/comp/api/grpcserver/helpers/BUILD.bazel @@ -0,0 +1,13 @@ +load("@rules_go//go:def.bzl", "go_library") + +go_library( + name = "helpers", + srcs = ["grpc.go"], + importpath = "github.com/DataDog/datadog-agent/comp/api/grpcserver/helpers", + visibility = ["//visibility:public"], + deps = [ + "//pkg/util/grpc/context", + "@org_golang_x_net//http2", + "@org_golang_x_net//http2/h2c", + ], +) diff --git a/comp/api/grpcserver/impl-none/BUILD.bazel b/comp/api/grpcserver/impl-none/BUILD.bazel new file mode 100644 index 000000000000..c07437fc64b6 --- /dev/null +++ b/comp/api/grpcserver/impl-none/BUILD.bazel @@ -0,0 +1,9 @@ +load("@rules_go//go:def.bzl", "go_library") + +go_library( + name = "impl-none", + srcs = ["grpc.go"], + importpath = "github.com/DataDog/datadog-agent/comp/api/grpcserver/impl-none", + visibility = ["//visibility:public"], + deps = ["//comp/api/grpcserver/def"], +) diff --git a/comp/api/grpcserver/mock/BUILD.bazel b/comp/api/grpcserver/mock/BUILD.bazel new file mode 100644 index 000000000000..1c016a71d435 --- /dev/null +++ b/comp/api/grpcserver/mock/BUILD.bazel @@ -0,0 +1,9 @@ +load("@rules_go//go:def.bzl", "go_library") + +go_library( + name = "mock", + srcs = ["mock.go"], + importpath = "github.com/DataDog/datadog-agent/comp/api/grpcserver/mock", + visibility = ["//visibility:public"], + deps = ["//comp/api/grpcserver/def"], +) diff --git a/comp/autoscaling/datadogclient/BUILD.bazel b/comp/autoscaling/datadogclient/BUILD.bazel new file mode 100644 index 000000000000..b26a789a3330 --- /dev/null +++ b/comp/autoscaling/datadogclient/BUILD.bazel @@ -0,0 +1,2 @@ +# gazel:exclude fx +# gazel:exclude impl diff --git a/comp/autoscaling/datadogclient/fx/BUILD.bazel b/comp/autoscaling/datadogclient/fx/BUILD.bazel new file mode 100644 index 000000000000..6e522ae064f4 --- /dev/null +++ b/comp/autoscaling/datadogclient/fx/BUILD.bazel @@ -0,0 +1,15 @@ +load("@rules_go//go:def.bzl", "go_library") + +go_library( + name = "fx", + srcs = ["fx.go"], + importpath = "github.com/DataDog/datadog-agent/comp/autoscaling/datadogclient/fx", + visibility = ["//visibility:public"], + deps = [ + "//comp/autoscaling/datadogclient/def", + "//comp/autoscaling/datadogclient/impl", + "//pkg/util/fxutil", + "//pkg/util/option", + "@org_uber_go_fx//:fx", + ], +) diff --git a/comp/autoscaling/datadogclient/impl/BUILD.bazel b/comp/autoscaling/datadogclient/impl/BUILD.bazel new file mode 100644 index 000000000000..dbd01649438a --- /dev/null +++ b/comp/autoscaling/datadogclient/impl/BUILD.bazel @@ -0,0 +1,47 @@ +load("@rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "impl", + srcs = [ + "client.go", + "fallbackclient.go", + "none.go", + "singleclient.go", + "status.go", + ], + embedsrcs = ["status_templates/externalmetrics.tmpl"], + importpath = "github.com/DataDog/datadog-agent/comp/autoscaling/datadogclient/impl", + visibility = ["//visibility:public"], + deps = [ + "//comp/autoscaling/datadogclient/def", + "//comp/core/config", + "//comp/core/log/def", + "//comp/core/status", + "//pkg/config/model", + "//pkg/config/structure", + "//pkg/config/utils", + "//pkg/util/http", + "@in_gopkg_zorkian_go_datadog_api_v2//:go-datadog-api_v2", + ], +) + +go_test( + name = "impl_test", + srcs = [ + "client_test.go", + "status_test.go", + ], + embed = [":impl"], + gotags = ["test"], + deps = [ + "//comp/autoscaling/datadogclient/def", + "//comp/core/config", + "//comp/core/log/def", + "//comp/core/log/mock", + "//pkg/config/model", + "//pkg/util/fxutil", + "@com_github_stretchr_testify//assert", + "@in_gopkg_zorkian_go_datadog_api_v2//:go-datadog-api_v2", + "@org_uber_go_fx//:fx", + ], +) diff --git a/comp/autoscaling/datadogclient/mock/BUILD.bazel b/comp/autoscaling/datadogclient/mock/BUILD.bazel new file mode 100644 index 000000000000..63284dc892d6 --- /dev/null +++ b/comp/autoscaling/datadogclient/mock/BUILD.bazel @@ -0,0 +1,15 @@ +load("@rules_go//go:def.bzl", "go_library") + +go_library( + name = "mock", + srcs = [ + "component_mock.go", + "mock.go", + ], + importpath = "github.com/DataDog/datadog-agent/comp/autoscaling/datadogclient/mock", + visibility = ["//visibility:public"], + deps = [ + "//comp/autoscaling/datadogclient/def", + "@in_gopkg_zorkian_go_datadog_api_v2//:go-datadog-api_v2", + ], +) From b4a4536afdc7fecd5c94a50045c6d129c47961f9 Mon Sep 17 00:00:00 2001 From: Tony Aiuto Date: Sun, 19 Apr 2026 12:56:48 -0400 Subject: [PATCH 2/2] linty --- comp/agent/BUILD.bazel | 4 ++-- comp/api/api/apiimpl/BUILD.bazel | 16 +++++++--------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/comp/agent/BUILD.bazel b/comp/agent/BUILD.bazel index a9409f42a27d..afeb5a1ba66f 100644 --- a/comp/agent/BUILD.bazel +++ b/comp/agent/BUILD.bazel @@ -1,4 +1,4 @@ -# gazelle:ignore bundle.go -# gazelle:ignore bundle_test.go +# gazelle:exclude bundle.go +# gazelle:exclude bundle_test.go # gazelle:exclude cloudfoundrycontainer/fx # gazelle:exclude cloudfoundrycontainer/impl diff --git a/comp/api/api/apiimpl/BUILD.bazel b/comp/api/api/apiimpl/BUILD.bazel index 073d29b53e6a..a3f042d9405b 100644 --- a/comp/api/api/apiimpl/BUILD.bazel +++ b/comp/api/api/apiimpl/BUILD.bazel @@ -1,10 +1,8 @@ -load("@rules_go//go:def.bzl", "go_library", "go_test") - # gazelle:exclude internal/agent -# gazelle:ignore api.go -# gazelle:ignore api_mock.go -# gazelle:ignore api_test.go -# gazelle:ignore server.go -# gazelle:ignore server_cmd.go -# gazelle:ignore server_test.go -# gazelle:ignore server_ipc.go +# gazelle:exclude api.go +# gazelle:exclude api_mock.go +# gazelle:exclude api_test.go +# gazelle:exclude server.go +# gazelle:exclude server_cmd.go +# gazelle:exclude server_test.go +# gazelle:exclude server_ipc.go