message

package
v1.0.0-rc.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 7, 2026 License: MIT Imports: 11 Imported by: 0

Documentation

Index

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

func ReleaseMessage(m hermod.Message)

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

func SanitizeMap(m map[string]any) map[string]any

SanitizeMap sanitizes all values in a map.

func SanitizeValue

func SanitizeValue(v any) any

SanitizeValue converts special types (like UUIDs) to JSON-friendly strings.

func TryFixJSON

func TryFixJSON(data []byte) []byte

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) SetID

func (m *DefaultMessage) SetID(id string)

Setters for DefaultMessage

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL