LogShipper class

Batches a node's log lines and ships them to the Hub.

A node agent already knows how to push a LogBatch; nothing ever called it, so a node's own log stayed on the node — where you can only read it by logging into the machine, which is the thing a fleet tool exists to avoid.

Batched rather than sent line by line: a log line is small and a control-frame round trip is not, so a chatty agent would spend more effort announcing what it did than doing it. Lines are flushed when maxLines accumulate, or after interval, whichever comes first — so a burst is coalesced and a trickle still arrives promptly.

Best-effort by design: if the link is down the lines are dropped rather than queued forever. A node's log tail is for looking at what a machine is doing now; a backlog replayed on reconnect would be a different, less useful thing, and an unbounded queue is how an agent runs a machine out of memory.

Constructors

LogShipper({required void send(List<String> lines), int maxLines = 50, Duration interval = const Duration(seconds: 2)})
Creates a shipper that hands batches to send.

Properties

hashCode → int
The hash code for this object.
no setterinherited
interval → Duration
How long to wait before flushing whatever has accumulated.
final
maxLines → int
How many lines to accumulate before flushing early.
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
send → void Function(List<String> lines)
Sends a batch. Wired to NodeAgent.sendLogs.
final

Methods

add(String line) → void
Queues line for shipping.
close() → void
Flushes and stops.
flush() → void
Ships whatever has accumulated.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited