Complete AgentNode API surface.
use subway_core::AgentNode;
let node = AgentNode::builder()
.name("my-agent.relay")
.relay("relay.subway.dev:9000")
.key_path(".subway/keys")
.with_mdns()
.with_dht()
.build()
.await?;
| Method | Type | Description |
|---|
builder() | → AgentNodeBuilder | Create a new builder |
.name(str) | Builder | Agent name (required) |
.relay(str) | Builder | Relay address |
.key_path(str) | Builder | Custom key storage path |
.with_mdns() | Builder | Enable mDNS discovery |
.with_dht() | Builder | Enable DHT discovery |
.build() | → SubwayResult<AgentNode> | Connect and return agent |
| Method | Signature | Description |
|---|
peer_id() | → PeerId | Local peer identity |
name() | → &str | Registered agent name |
listen_addrs() | → &[Multiaddr] | Local listen addresses |
connected_peer_count() | → usize | Connected peer count |
is_connected_to(pid) | → bool | Check specific peer |
| Method | Signature | Description |
|---|
send(name, msg) | → SubwayResult<()> | Fire-and-forget message |
on_message(handler) | → () | Register message handler |
new_agent_message(type, payload) | → AgentMessage | Create message envelope |
| Method | Signature | Description |
|---|
call(name, req) | → SubwayResult<RpcResponse> | RPC by name (30s timeout) |
call_by_peer_id(pid, req) | → SubwayResult<RpcResponse> | RPC by PeerId |
handle_rpc(handler) | → () | Sync RPC handler |
handle_rpc_async(handler) | → () | Async RPC handler (spawns per-request) |
| Method | Signature | Description |
|---|
broadcast(topic, msg) | → SubwayResult<()> | Publish to topic |
subscribe(topic, handler) | → () | Subscribe (wildcards: metrics.*, *) |
unsubscribe(topic) | → () | Unsubscribe |
| Method | Signature | Description |
|---|
resolve(name) | → SubwayResult<PeerId> | Name → PeerId |
add_peer(pid, addr) | → SubwayResult<()> | Add peer address |
dial_peer(addr) | → SubwayResult<()> | Dial peer directly |