feat(relay): Quill relays owner asks as nest requests (#40)
This commit is contained in:
1 parent
bfffb04a87
commit
31bf98411c
2 files changed
+88
-12
No files matched your search
+15
-9
@@ -181,14 +181,22 @@ func (s *Server) postNestMessage(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
s.emitNestMessage(record)
|
||||
s.triggerResponse(nest, record)
|
||||
|
||||
// Event-driven trigger (no idle loops):
|
||||
// conspiracy -> several invited crows, each from its own lens
|
||||
// any other request addressed to a member crow -> one must-respond reply
|
||||
if kind == "request" {
|
||||
writeJSON(w, http.StatusCreated, nestRecord(record))
|
||||
}
|
||||
|
||||
// triggerResponse is the event-driven response rule (no idle loops): a
|
||||
// conspiracy invites several crows, each from its own lens; any other request
|
||||
// gets exactly one responder through the matching path; a deliver gets one
|
||||
// divergence check.
|
||||
// It runs for owner-posted messages and for harness-posted ones alike, so a
|
||||
// Quill relay answers the named crow exactly like a direct request (#40).
|
||||
func (s *Server) triggerResponse(nest Nest, record Message) {
|
||||
if record.Kind == "request" {
|
||||
switch {
|
||||
case mode == "conspiracy" && invited > 0:
|
||||
go s.respondConspiracy(nest, record, invited)
|
||||
case record.Mode == "conspiracy" && record.Invited > 0:
|
||||
go s.respondConspiracy(nest, record, record.Invited)
|
||||
case record.To == "Elder":
|
||||
go s.respondElder(nest, record)
|
||||
case record.To == "Quill":
|
||||
@@ -200,11 +208,9 @@ func (s *Server) postNestMessage(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
}
|
||||
|
||||
if kind == "deliver" {
|
||||
if record.Kind == "deliver" {
|
||||
go s.checkDivergence(nest, record)
|
||||
}
|
||||
|
||||
writeJSON(w, http.StatusCreated, nestRecord(record))
|
||||
}
|
||||
|
||||
var modePostable = map[string]bool{"solo": true, "conspiracy": true, "split": true}
|
||||
|
||||
Reference in new issue
Block a user