diff --git a/go/buscalls/buscalls.go b/go/buscalls/buscalls.go index 6db4fc6c..00d54326 100644 --- a/go/buscalls/buscalls.go +++ b/go/buscalls/buscalls.go @@ -44,8 +44,11 @@ const ( LedgerHistory = "mesh/ledger.history" LedgerWatch = "mesh/ledger.watch" LedgerQuery = "mesh/ledger.query" - // LedgerFill is one ledger's fill against its cap, answered as a Fill (design 47 G §462). - LedgerFill = "mesh/ledger.fill" + // LedgerFill is one ledger's history's fill against its cap, asked with a LedgerRequest and answered as a Fill + // (design 47 G §462, §587); LedgerRemove removes one instance, asked with a LedgerRemoveRequest and answered as + // LedgerRemoved. Both are under the capability word LedgerUpkeepCalls. + LedgerFill = "mesh/ledger.fill" + LedgerRemove = "mesh/ledger.remove" // The ledger's repairs, which the tool runner also serves as tools of every module owning a ledger, its own // ledgers only (design 25 § 12.5). LedgerRebuild = "mesh/ledger.rebuild" @@ -54,6 +57,16 @@ const ( LedgerLag = "mesh/ledger.lag" ) +// The capability words of the families this package's calls belong to (design 47 G §488, §622): a tool runner states a +// word once it answers the family, and a bundle fails at once, naming the word and its node, on a call whose word is not +// stated. Which calls each word covers is the tool runner's (§462). +const ( + BusStateCalls = "bus-state-calls" + LedgerCalls = "ledger-calls" + LedgerUpkeepCalls = "ledger-upkeep-calls" + SentObjectsCalls = "sent-objects-calls" +) + // The methods the tool runner sends the bundle for a watch it asked, each naming the watch by its id, as `mesh/log` // does for a log. const ( @@ -371,6 +384,21 @@ type LedgerRequest struct { Ledger string `json:"ledger"` } +// LedgerRemoveRequest names one instance of a ledger to remove from its history, its state and its indexes (design 47 G +// §587). +type LedgerRemoveRequest struct { + Ledger string `json:"ledger"` + Instance string `json:"instance"` +} + +// LedgerRemoved is remove's answer: the instance, the operations removed and the bytes the history held less after it; +// an instance the ledger does not hold answers 0 and 0, so a removal said twice changes nothing. +type LedgerRemoved struct { + Instance string `json:"instance"` + Operations uint64 `json:"operations"` + Bytes uint64 `json:"bytes"` +} + // Repaired is the answer of rebuild, reindex and snapshot: how many instances (or index entries) it wrote. type Repaired struct { Written int `json:"written"`