ADR 0627 §4: asks and asker leave mesh-sdk for operator-channel's client; the channel's benches stay as package channel
The gate's and the assigner's asks carry the router's ask as its JSON, so mesh-sdk names no type of a seat defined whole; the ask's id, options, digest and an option's level are read by the gate, the assigner and the teller through operatorchannelclient. ViewAnswerFits keeps the asking's check, from the key. The channel and intake benches are not defined whole: their shapes move to go/channel (ADR 0625 §9). Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
This commit is contained in:
+1
-1
@@ -24,7 +24,7 @@ const stateTimeout = 30 * time.Second
|
||||
|
||||
// State is one of this process's module's states, read and written on this connection (novox/hq ADR 0436
|
||||
// clause 4), in the bucket <module>_<name> (mesh-controller internal/broker/state.go:49) — only as the
|
||||
// account's grants allow. It satisfies go/asker's Store.
|
||||
// account's grants allow. It satisfies operator-channel's client's Store (mesh-contracts operatorchannelclient).
|
||||
type State struct {
|
||||
Module string
|
||||
Name string
|
||||
|
||||
@@ -12,7 +12,6 @@ import (
|
||||
"github.com/nats-io/nats.go/jetstream"
|
||||
|
||||
stdio "git.novox.be/novox/mesh-sdk/go"
|
||||
"git.novox.be/novox/mesh-sdk/go/asker"
|
||||
"git.novox.be/novox/mesh-sdk/go/busretry"
|
||||
)
|
||||
|
||||
@@ -137,10 +136,18 @@ func stateOn(kv jetstream.KeyValue) State {
|
||||
return State{Module: "mesh-mail", Name: "sends", kv: func(context.Context) (jetstream.KeyValue, error) { return kv, nil }}
|
||||
}
|
||||
|
||||
// 1188/AC2: given the process connection's state type, when used as go/asker's Store, then it compiles and
|
||||
// behaves as the interface says, against a fake KV.
|
||||
// askerStore is the store operator-channel's client keeps its asks in (mesh-contracts operatorchannelclient.Store,
|
||||
// whose own test holds process.State to it).
|
||||
type askerStore interface {
|
||||
Get(key string) (*stdio.StateEntry, error)
|
||||
Create(key string, value any) (uint64, error)
|
||||
Update(key string, value any, revision uint64) (uint64, error)
|
||||
}
|
||||
|
||||
// 1188/AC2: given the process connection's state type, when used as operator-channel's client's Store, then it
|
||||
// compiles and behaves as the interface says, against a fake KV.
|
||||
func TestStateSatisfiesAskerStore(t *testing.T) {
|
||||
var _ asker.Store = State{}
|
||||
var _ askerStore = State{}
|
||||
|
||||
s := stateOn(newFakeKV())
|
||||
if e, err := s.Get("ask.1"); err != nil || e != nil {
|
||||
|
||||
Reference in New Issue
Block a user