You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
simnet, basically the MessageForwarder from strategy-pit. We assume nodes can send messages to neighbours, they may be delayed or (if so configured) dropped by the MessageForwarder, but if they arrive, then they arrive intact and (if so configured) in the same order. So imperfections to simulate:
delay
[~] reordering
[?] dropping
alteration
repetition
creation
HandRaiser - layer that sits in-between the agent and its sending/receiving of messages, making sure that:
the agent raises its hand before sending a message
the agent then waits for the other agent to give them the mike
no message is sent unless the agent has the mike
Observer - component that receives incoming messages and internal events, draws conclusions from those events and the current state, and generates the next state. It should implement the following rules:
a Probe or Trace comes in from a sender -> log this
a Probe or Trace is minted -> log this
a Probe or Trace is sent to a recipient -> log this
a Probe comes in that was never seen before -> raise a NewProbeArrival(probeId) event
a home-minted Probe comes in that was seen before but is virgin for this sender -> raise a ProofOfComms(sender, probeId, strong: true) event
a foreign-minted Probe comes in that was seen before but is virgin for this sender -> raise a ProofOfComms(sender, probeId, strong: false) event
a Trace comes in that was never seen before -> raise a NewTraceArrival(probeId, traceId) event
a home-minted Trace comes in -> raise a ProofOfTraceBack(probeId, traceId) event
a foreign-minted Trace comes in that was seen before -> raise a RepeatedTraceArrival(probeId, traceId) event
Strategy - component that processes events from the observer and can push MintFloodProbe(), MintPinProbe(recipient), MintTrace(probeId, recipient), ForwardProbe(probeId)ForwardTrace(probeId, traceId, recipient) actions onto the ActionQueue
for each NewProbeArrival(probeId), trigger Forward(probeId)
for each ProofOfComms(sender, probeId, strong: false), trigger MintPinProbe(sender)
for each ProofOfComms(sender, probeId, strong: true), trigger MintTrace(probeId, sender)
for each NewTraceArrival(probeId, traceId) if the Probe for that probeId has exactly 1 from, trigger ForwardTrace(probeId, traceId, probeFrom)
for each NewTraceArrival(probeId, traceId) if the Probe for that probeId has zero or 2 or more from, do nothing
for each ProofOfTraceBack(probeId, traceId), do nothing
for each RepeatedTraceArrival(probeId, traceId), do nothing
Actor that can read the state from the Observer and translate actions into words.
ActionQueue that processes QueueForAction events from the Strategy and Pop events from the HandRaiser/Actor
The text was updated successfully, but these errors were encountered:
We need a number of components:
HandRaiser
- layer that sits in-between the agent and its sending/receiving of messages, making sure that:Observer
- component that receives incoming messages and internal events, draws conclusions from those events and the current state, and generates the next state. It should implement the following rules:NewProbeArrival(probeId)
eventProofOfComms(sender, probeId, strong: true)
eventProofOfComms(sender, probeId, strong: false)
eventNewTraceArrival(probeId, traceId)
eventProofOfTraceBack(probeId, traceId)
eventRepeatedTraceArrival(probeId, traceId)
eventStrategy
- component that processes events from the observer and can pushMintFloodProbe()
,MintPinProbe(recipient)
,MintTrace(probeId, recipient)
,ForwardProbe(probeId)
ForwardTrace(probeId, traceId, recipient)
actions onto the ActionQueueNewProbeArrival(probeId)
, triggerForward(probeId)
ProofOfComms(sender, probeId, strong: false)
, triggerMintPinProbe(sender)
ProofOfComms(sender, probeId, strong: true)
, triggerMintTrace(probeId, sender)
NewTraceArrival(probeId, traceId)
if the Probe for thatprobeId
has exactly 1from
, triggerForwardTrace(probeId, traceId, probeFrom)
NewTraceArrival(probeId, traceId)
if the Probe for thatprobeId
has zero or 2 or morefrom
, do nothingProofOfTraceBack(probeId, traceId)
, do nothingRepeatedTraceArrival(probeId, traceId)
, do nothingActor
that can read the state from theObserver
and translate actions into words.ActionQueue
that processesQueueForAction
events from the Strategy andPop
events from the HandRaiser/ActorThe text was updated successfully, but these errors were encountered: