Campaigns
A campaign sends signals continuously at a set volume, drawn at random from the signals selected on the connection's signal list. Campaigns are saved objects: one saved campaign can drive any number of connections, and the same one runs again after a restart.
The Campaign panel
The panel sits inside the selected connection. Saved campaign lists every campaign held by this receiver; Use for this connection assigns the chosen one. With none chosen the budget entered below is used as an unsaved campaign for this connection alone. Save as new stores the current settings under the label typed beside it, so they can be picked for other connections. A connection that has never been started can still have its campaign set up.
[Image: the Campaign panel with a saved campaign chosen]
Budget
A budget is N per hh:mm, spread uniformly across the window; the default is 1000 per 24:00. The scheduler is self-correcting: it measures how many should have gone out by now and catches up, so a slow link or a brief stall does not lose volume.
| Run | Ends |
|---|---|
| once | After one window's budget is spent |
| for | After the d / h / m duration entered beside it |
| indefinite | Only when stopped |
Start and Stop run the campaign on this connection; the pill beside them shows Stopped or the live progress, and Campaign sent under Counters tracks it. An empty signal selection pauses the campaign rather than ending it; selecting signals again resumes it with the window start shifted forward, so the paused time is not counted against the budget.
Several connections can run campaigns at once, each on its own schedule, from the one receiver.
Rate mode (command line)
The campaign verb sustains a rate instead of a budget, without the console:
sbn-virtual-receiver campaign --type 52 --addr 127.0.0.1:15002 --rate 10 --duration 5m
| Flag | Default | Effect |
|---|---|---|
--type | required | The Concentrator line's TYPE= number |
--addr | — | The line to dial |
--rate | 10 | Signals per second. 0 is unpaced, which is the backpressure test |
--duration | 1m | How long to sustain the rate |
--count | 0 | Stop after n signals. 0 means bounded by duration only |
--shuffle | off | Draw signals at random rather than in order |
--seed | 0 | Shuffle seed. 0 uses a fixed seed, so a soak run is replayable |
--bare | off | Send the bare catalog bytes instead of the receiver's wire form |
When the line goes away
A running campaign follows its link. When the Concentrator line it feeds stops, the campaign pauses itself rather than sending into a dead link, and the log records CAMPAIGN PAUSED - no link connected. The receiver keeps redialling; when the line comes back the campaign resumes and the log records CAMPAIGN RESUMED - link connected with how long it held. The time spent paused is added to the window, so the campaign delivers its full budget later instead of firing a burst to catch up.
A campaign with nothing selected in the signal table pauses the same way, recorded as CAMPAIGN PAUSED - no signals selected.
The summary
Every campaign stop writes a summary line to the log — sent, target, elapsed, delivered per link, and promotions — whether it was stopped by hand, ran to its end, or was ended by the service shutting down.