Documentation
¶
Index ¶
- func OverReleaseCount() int64
- func ReleaseMessage(m hermod.Message)
- func ResetOverReleaseCount()
- func SanitizeMap(m map[string]any) map[string]any
- func SanitizeValue(v any) any
- func TryFixJSON(data []byte) []byte
- type DefaultMessage
- func (m *DefaultMessage) After() []byte
- func (m *DefaultMessage) Before() []byte
- func (m *DefaultMessage) ClearCachedPayload()
- func (m *DefaultMessage) ClearPayloads()
- func (m *DefaultMessage) Clone() hermod.Message
- func (m *DefaultMessage) Data() map[string]any
- func (m *DefaultMessage) DataRef() map[string]any
- func (m *DefaultMessage) ID() string
- func (m *DefaultMessage) MarshalJSON() ([]byte, error)
- func (m *DefaultMessage) Metadata() map[string]string
- func (m *DefaultMessage) MetadataRef() map[string]string
- func (m *DefaultMessage) Operation() hermod.Operation
- func (m *DefaultMessage) Payload() []byte
- func (m *DefaultMessage) RefCount() int32
- func (m *DefaultMessage) Release()
- func (m *DefaultMessage) Reset()
- func (m *DefaultMessage) Retain()
- func (m *DefaultMessage) Schema() string
- func (m *DefaultMessage) SetAfter(after []byte)
- func (m *DefaultMessage) SetBefore(before []byte)
- func (m *DefaultMessage) SetData(key string, value any)
- func (m *DefaultMessage) SetID(id string)
- func (m *DefaultMessage) SetMetadata(key, value string)
- func (m *DefaultMessage) SetOperation(op hermod.Operation)
- func (m *DefaultMessage) SetPayload(payload []byte)
- func (m *DefaultMessage) SetSchema(schema string)
- func (m *DefaultMessage) SetTable(table string)
- func (m *DefaultMessage) Table() string
- func (m *DefaultMessage) ToMap() map[string]any
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func OverReleaseCount ¶
func OverReleaseCount() int64
OverReleaseCount reports how many times a message was released after its refcount already reached zero. Any non-zero value means some owner is releasing a reference it does not hold; treat it as a correctness bug, not a tuning signal.
func ReleaseMessage ¶
ReleaseMessage returns a message to the pool.
func ResetOverReleaseCount ¶
func ResetOverReleaseCount()
ResetOverReleaseCount zeroes the counter. Intended for tests that assert a pipeline runs with balanced reference counting.
func SanitizeMap ¶
SanitizeMap sanitizes all values in a map.
func SanitizeValue ¶
SanitizeValue converts special types (like UUIDs) to JSON-friendly strings.
func TryFixJSON ¶
TryFixJSON attempts to fix common JSON issues like trailing commas to make unmarshaling more lenient.
Types ¶
type DefaultMessage ¶
type DefaultMessage struct {
// contains filtered or unexported fields
}
DefaultMessage is a concrete implementation of the hermod.Message interface. It uses a sync.Pool to minimize allocations.
func AcquireMessage ¶
func AcquireMessage() *DefaultMessage
AcquireMessage gets a message from the pool.
func (*DefaultMessage) After ¶
func (m *DefaultMessage) After() []byte
func (*DefaultMessage) Before ¶
func (m *DefaultMessage) Before() []byte
func (*DefaultMessage) ClearCachedPayload ¶
func (m *DefaultMessage) ClearCachedPayload()
ClearCachedPayload clears only the marshaled payload bytes.
func (*DefaultMessage) ClearPayloads ¶
func (m *DefaultMessage) ClearPayloads()
ClearPayloads clears the data content of the message but keeps metadata/system fields.
func (*DefaultMessage) Clone ¶
func (m *DefaultMessage) Clone() hermod.Message
func (*DefaultMessage) Data ¶
func (m *DefaultMessage) Data() map[string]any
func (*DefaultMessage) DataRef ¶
func (m *DefaultMessage) DataRef() map[string]any
func (*DefaultMessage) ID ¶
func (m *DefaultMessage) ID() string
func (*DefaultMessage) MarshalJSON ¶
func (m *DefaultMessage) MarshalJSON() ([]byte, error)
func (*DefaultMessage) Metadata ¶
func (m *DefaultMessage) Metadata() map[string]string
func (*DefaultMessage) MetadataRef ¶
func (m *DefaultMessage) MetadataRef() map[string]string
func (*DefaultMessage) Operation ¶
func (m *DefaultMessage) Operation() hermod.Operation
func (*DefaultMessage) Payload ¶
func (m *DefaultMessage) Payload() []byte
func (*DefaultMessage) RefCount ¶
func (m *DefaultMessage) RefCount() int32
RefCount reports the message's current reference count.
It exists so the ownership contract can actually be asserted rather than reasoned about. Every node executor must return messages the caller owns one reference to; that invariant is invisible without being able to read the count, which is why a violation in the traversal's source branch went unnoticed until it was corrupting data. Use it in tests and diagnostics, not to make control-flow decisions: the value can change under you at any moment.
func (*DefaultMessage) Release ¶
func (m *DefaultMessage) Release()
func (*DefaultMessage) Reset ¶
func (m *DefaultMessage) Reset()
Reset clears the message state so it can be reused.
func (*DefaultMessage) Retain ¶
func (m *DefaultMessage) Retain()
func (*DefaultMessage) Schema ¶
func (m *DefaultMessage) Schema() string
func (*DefaultMessage) SetAfter ¶
func (m *DefaultMessage) SetAfter(after []byte)
func (*DefaultMessage) SetBefore ¶
func (m *DefaultMessage) SetBefore(before []byte)
func (*DefaultMessage) SetData ¶
func (m *DefaultMessage) SetData(key string, value any)
func (*DefaultMessage) SetMetadata ¶
func (m *DefaultMessage) SetMetadata(key, value string)
func (*DefaultMessage) SetOperation ¶
func (m *DefaultMessage) SetOperation(op hermod.Operation)
func (*DefaultMessage) SetPayload ¶
func (m *DefaultMessage) SetPayload(payload []byte)
func (*DefaultMessage) SetSchema ¶
func (m *DefaultMessage) SetSchema(schema string)
func (*DefaultMessage) SetTable ¶
func (m *DefaultMessage) SetTable(table string)
func (*DefaultMessage) Table ¶
func (m *DefaultMessage) Table() string
func (*DefaultMessage) ToMap ¶
func (m *DefaultMessage) ToMap() map[string]any