mirror of
https://github.com/logos-messaging/sds-go-bindings.git
synced 2026-07-24 08:53:17 +00:00
nim-sds now builds on nim-ffi 0.2, whose wire format is CBOR (not JSON)
and whose events use a per-event listener registry. Rewrite the cgo layer
to match:
- requests/responses are CBOR (fxamacker/cbor); seq[byte] is a CBOR byte
string; request params are wrapped under their Nim param name ("req"/
"config"). No-arg methods send an empty CBOR map (0xa0).
- register one listener per event via sds_add_event_listener; decode the
CBOR EventEnvelope {eventType,payload}. Adds OnRepairReady.
- copy the result payload during the callback (libsds frees it on return)
and key the waiter by the C resp pointer in a sync.Map with LoadAndDelete
(winner-takes-all) — no Go pointer is stored in C memory, and a late or
duplicate delivery cannot double-close or touch a freed resp.
- guard the manager registry with a RWMutex (callbacks run on libsds
threads).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
19 lines
428 B
Modula-2
19 lines
428 B
Modula-2
module github.com/waku-org/sds-go-bindings
|
|
|
|
go 1.24.0
|
|
|
|
require (
|
|
github.com/fxamacker/cbor/v2 v2.9.2
|
|
github.com/pkg/errors v0.9.1
|
|
github.com/stretchr/testify v1.8.1
|
|
go.uber.org/zap v1.27.0
|
|
)
|
|
|
|
require (
|
|
github.com/davecgh/go-spew v1.1.1 // indirect
|
|
github.com/pmezard/go-difflib v1.0.0 // indirect
|
|
github.com/x448/float16 v0.8.4 // indirect
|
|
go.uber.org/multierr v1.10.0 // indirect
|
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
|
)
|