Skip to main content

Signal API

Signals are the fundamental data unit in NTL.

Signal Constructors

// Data signal
Signal::data("topic")

// Query signal
Signal::query("topic")

// Event signal
Signal::event("topic")

// Command signal
Signal::command("topic")

// Discovery signal
Signal::discovery()

// Heartbeat signal
Signal::heartbeat()

Builder Methods

let signal = Signal::data("user-profile")
    .with_payload(json!({"id": "abc123"}))  // Set payload
    .with_weight(0.8)                        // Set weight (0.0-1.0)
    .with_ttl(5)                             // Set TTL
    .with_tags(vec!["user", "profile"])      // Set tags
    .with_correlation(other_signal.id)       // Set correlation
    .with_scope(PropagationScope::Targeted { // Set scope
        destination: node_id
    })
    .emit(&node)                             // Emit to network
    .await?;

Signal Fields

FieldTypeDescription
idSignalIdULID identifier
signal_typeSignalTypeType enum
originNodeIdEmitting node
payloadserde_json::ValueSignal data
weightf32Priority (0.0-1.0)
ttlu16Remaining hops
timestampu64Emission time (ns)
tagsVec<String>Searchable tags
correlation_idOption<SignalId>Response correlation
traceVec<NodeId>Propagation path

SignalType Enum

enum SignalType {
    Data,
    Query,
    Event,
    Command,
    Heartbeat,
    Discovery,
    Ack,
    Custom(String),
}

PropagationScope Enum

enum PropagationScope {
    Flood { max_hops: u16 },
    Weighted { min_synapse_weight: f32 },
    Targeted { destination: NodeId },
    Gradient { signal_type: String },
}