Igor Sirotin 1dc549d1d7
refactor: extract libwaku cgo bridge into internal/ffi (#114)
* refactor: extract libwaku cgo bridge into internal/ffi

Move the C preamble, cgo shims, and callback plumbing from pkg/kernel/nwaku.go
into internal/ffi/libwaku.go, where #111 scaffolded them to live. The bridge
exposes Go-typed Waku* primitives (handle in, strings out) and owns the
handle->event-handler registry, so pkg/kernel is now pure Go: WakuNode keeps
its full API, logging, and error texts, and just calls ffi.

Behavior is unchanged. Dropped four C shims that had no Go callers
(cGoWakuContentTopic, cGoWakuPubsubTopic, cGoWakuDefaultPubsubTopic,
cGoWakuLightpushPublish). CGO flags still come from the environment
(Makefile/CI untouched).

Part of #106.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* refactor: move libwaku bridge into internal/ffi/libwaku subpackage

One subpackage per C library so a binary links exactly the libraries it
imports: libwaku and liblogosdelivery carry overlapping symbols and must never
link together (until logos-delivery#3851). With the package named libwaku the
Waku* prefixes became stutter, so the exported primitives drop them
(libwaku.New/Start/RelayPublish/...). internal/ffi keeps an umbrella doc.go
stating the rule.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-06-10 19:54:36 +01:00

8 lines
373 B
Go

// Package ffi groups the cgo bridges over the logos-delivery C libraries.
//
// Each C library gets its own subpackage (libwaku now; liblogosdelivery in a
// follow-up) so that a binary links exactly the libraries it imports — the
// two .so files carry overlapping symbols and must never be linked together
// (until logos-delivery#3851 consolidates them).
package ffi