Documentation ¶
Index ¶
- Variables
- type Controller
- func (c *Controller) AddLeaderLevelMessageToRouter(from int, level int) bool
- func (c *Controller) AddLeaderSetLevelMessageToRouter(from []int, level int) bool
- func (c *Controller) Complete() bool
- func (c *Controller) ElectionStatus(node int) string
- func (c *Controller) RouteLeaderLevelMessage(from int, level int, to []int) bool
- func (c *Controller) RouteLeaderSetLevelMessage(from []int, level int, to []int) bool
- func (c *Controller) RouteLeaderSetVoteMessage(from []int, vol int, to []int) bool
- func (c *Controller) RouteLeaderVoteMessage(from int, vol int, to []int) bool
- func (c *Controller) RouteMessage(msg imessage.IMessage, nodes []int)
- func (c *Controller) RouteVolunteerMessage(vol int, nodes []int)
- func (c *Controller) SendOutputsToRouter(set bool)
- type ControllerInterpreter
- func (c *ControllerInterpreter) InitInterpreter()
- func (c *ControllerInterpreter) PrimPrintMessages()
- func (c *ControllerInterpreter) PrimPrintMessagesAll()
- func (c *ControllerInterpreter) PrimPrintNodeStack()
- func (c *ControllerInterpreter) PrimPrintNodeStackAll()
- func (c *ControllerInterpreter) PrimPrintRoutingInfo()
- func (c *ControllerInterpreter) PrimPrintState()
- func (c *ControllerInterpreter) PrimPrintStateAll()
- func (c *ControllerInterpreter) PrimPrintVoteState()
- func (c *ControllerInterpreter) PrimPrintVoteStateAll()
- func (c *ControllerInterpreter) PrimRouteLevelMessage()
- func (c *ControllerInterpreter) PrimRouteStep()
- func (c *ControllerInterpreter) PrimRouteStepN()
- func (c *ControllerInterpreter) PrimRouteVolunteerMessage()
- func (c *ControllerInterpreter) PrimRouteVoteMessage()
- func (c *ControllerInterpreter) PrimSelectLeaders() []int
- func (c *ControllerInterpreter) PrimToggleBuffering()
- func (c *ControllerInterpreter) PrimToggleControllerPrinting()
- func (c *ControllerInterpreter) PrimToggleRouterPrinting()
- func (c *ControllerInterpreter) PrimToggleRouting()
- func (c *ControllerInterpreter) Reset()
- func (c *ControllerInterpreter) RunScenario()
- func (c *ControllerInterpreter) SetController()
- type MessageBuffer
- func (b *MessageBuffer) Add(msg imessage.IMessage)
- func (b *MessageBuffer) RetrieveIndex(index int) (imessage.IMessage, error)
- func (b *MessageBuffer) RetrieveLeaderLevelMessageByLevel(leader primitives.Identity, level int) imessage.IMessage
- func (b *MessageBuffer) RetrieveLeaderVoteMessage(leader primitives.Identity, vol primitives.Identity) imessage.IMessage
- type Router
Constants ¶
This section is empty.
Variables ¶
View Source
var AllAgree string = `` /* 297-byte string literal not displayed */
View Source
var HorizontalFlipflop string = `` /* 434-byte string literal not displayed */
View Source
var Scenarios = make(map[string]string)
Functions ¶
This section is empty.
Types ¶
type Controller ¶
type Controller struct { AuthSet *testhelper.AuthSetHelper RoutingElections []*election.RoutingElection Elections []*election.Election Volunteers []*messages.VolunteerMessage // Can be all 0s for now primitives.ProcessListLocation Buffer *MessageBuffer GlobalDisplay *election.Display Router *Router OutputsToRouter bool BufferingMessages bool BufferedMessages []*DirectedMessage PrintingTrace bool History []string // contains filtered or unexported fields }
Controller will be able to route messages to a set of nodes and control various communication patterns
func NewController ¶
func NewController(feds, auds int) *Controller
NewController creates all the elections and initial volunteer messages
func (*Controller) AddLeaderLevelMessageToRouter ¶
func (c *Controller) AddLeaderLevelMessageToRouter(from int, level int) bool
func (*Controller) AddLeaderSetLevelMessageToRouter ¶
func (c *Controller) AddLeaderSetLevelMessageToRouter(from []int, level int) bool
func (*Controller) Complete ¶
func (c *Controller) Complete() bool
func (*Controller) ElectionStatus ¶
func (c *Controller) ElectionStatus(node int) string
func (*Controller) RouteLeaderLevelMessage ¶
func (c *Controller) RouteLeaderLevelMessage(from int, level int, to []int) bool
func (*Controller) RouteLeaderSetLevelMessage ¶
func (c *Controller) RouteLeaderSetLevelMessage(from []int, level int, to []int) bool
func (*Controller) RouteLeaderSetVoteMessage ¶
func (c *Controller) RouteLeaderSetVoteMessage(from []int, vol int, to []int) bool
func (*Controller) RouteLeaderVoteMessage ¶
func (c *Controller) RouteLeaderVoteMessage(from int, vol int, to []int) bool
func (*Controller) RouteMessage ¶
func (c *Controller) RouteMessage(msg imessage.IMessage, nodes []int)
RouteMessage will execute message on all nodes given and add the messages returned to the buffer
func (*Controller) RouteVolunteerMessage ¶
func (c *Controller) RouteVolunteerMessage(vol int, nodes []int)
func (*Controller) SendOutputsToRouter ¶
func (c *Controller) SendOutputsToRouter(set bool)
type ControllerInterpreter ¶
type ControllerInterpreter struct { *Controller *priminterpreter.Primitives }
func NewControllerInterpreter ¶
func NewControllerInterpreter(feds, auds int) *ControllerInterpreter
func (*ControllerInterpreter) InitInterpreter ¶
func (c *ControllerInterpreter) InitInterpreter()
func (*ControllerInterpreter) PrimPrintMessages ¶
func (c *ControllerInterpreter) PrimPrintMessages()
func (*ControllerInterpreter) PrimPrintMessagesAll ¶
func (c *ControllerInterpreter) PrimPrintMessagesAll()
func (*ControllerInterpreter) PrimPrintNodeStack ¶
func (c *ControllerInterpreter) PrimPrintNodeStack()
func (*ControllerInterpreter) PrimPrintNodeStackAll ¶
func (c *ControllerInterpreter) PrimPrintNodeStackAll()
func (*ControllerInterpreter) PrimPrintRoutingInfo ¶
func (c *ControllerInterpreter) PrimPrintRoutingInfo()
func (*ControllerInterpreter) PrimPrintState ¶
func (c *ControllerInterpreter) PrimPrintState()
func (*ControllerInterpreter) PrimPrintStateAll ¶
func (c *ControllerInterpreter) PrimPrintStateAll()
func (*ControllerInterpreter) PrimPrintVoteState ¶
func (c *ControllerInterpreter) PrimPrintVoteState()
func (*ControllerInterpreter) PrimPrintVoteStateAll ¶
func (c *ControllerInterpreter) PrimPrintVoteStateAll()
func (*ControllerInterpreter) PrimRouteLevelMessage ¶
func (c *ControllerInterpreter) PrimRouteLevelMessage()
From Level To
{ 1 2 } 1 { 0 2 } <-o
Route level 1 from (0, 2) to (1, 2)
func (*ControllerInterpreter) PrimRouteStep ¶
func (c *ControllerInterpreter) PrimRouteStep()
func (*ControllerInterpreter) PrimRouteStepN ¶
func (c *ControllerInterpreter) PrimRouteStepN()
func (*ControllerInterpreter) PrimRouteVolunteerMessage ¶
func (c *ControllerInterpreter) PrimRouteVolunteerMessage()
Vol To
1 { 1 2 }<-v Route vol 1 to 1, and 2
func (*ControllerInterpreter) PrimRouteVoteMessage ¶
func (c *ControllerInterpreter) PrimRouteVoteMessage()
From Vote To
{ 1 2 } 1 { 0 2 } <-o
Route vote 1 from (0, 2) to (1, 2)
func (*ControllerInterpreter) PrimSelectLeaders ¶
func (c *ControllerInterpreter) PrimSelectLeaders() []int
func (*ControllerInterpreter) PrimToggleBuffering ¶
func (c *ControllerInterpreter) PrimToggleBuffering()
func (*ControllerInterpreter) PrimToggleControllerPrinting ¶
func (c *ControllerInterpreter) PrimToggleControllerPrinting()
func (*ControllerInterpreter) PrimToggleRouterPrinting ¶
func (c *ControllerInterpreter) PrimToggleRouterPrinting()
func (*ControllerInterpreter) PrimToggleRouting ¶
func (c *ControllerInterpreter) PrimToggleRouting()
func (*ControllerInterpreter) Reset ¶
func (c *ControllerInterpreter) Reset()
func (*ControllerInterpreter) RunScenario ¶
func (c *ControllerInterpreter) RunScenario()
func (*ControllerInterpreter) SetController ¶
func (c *ControllerInterpreter) SetController()
type MessageBuffer ¶
type MessageBuffer struct { // A list of all messages, it's an ever growing set, trimming the front // keeps the index the same by using the 'base' field. Messages []imessage.IMessage Base int // When looking for a message by someone, this helps searching MessagesMap map[primitives.Identity][]int }
MessageBuffer will manage all messages in the message list
func NewMessageBuffer ¶
func NewMessageBuffer() *MessageBuffer
func (*MessageBuffer) Add ¶
func (b *MessageBuffer) Add(msg imessage.IMessage)
func (*MessageBuffer) RetrieveIndex ¶
func (b *MessageBuffer) RetrieveIndex(index int) (imessage.IMessage, error)
func (*MessageBuffer) RetrieveLeaderLevelMessageByLevel ¶
func (b *MessageBuffer) RetrieveLeaderLevelMessageByLevel(leader primitives.Identity, level int) imessage.IMessage
func (*MessageBuffer) RetrieveLeaderVoteMessage ¶
func (b *MessageBuffer) RetrieveLeaderVoteMessage(leader primitives.Identity, vol primitives.Identity) imessage.IMessage
RetrieveLeaderVoteMessage takes a vol too as multiple vote 0s can be sent out
type Router ¶
type Router struct { // Number of messages consumed Consumed []int Generated []int ElectionQueues []chan imessage.IMessage RepeatedFilter []map[imessage.IMessage]struct{} Elections []*election.RoutingElection Printing bool }
Router helps keep route patterns for returning messages Each election has a queue, and each step consumes 1 message from the queue and adds to some number of queues
func NewRouter ¶
func NewRouter(elections []*election.RoutingElection) *Router
Click to show internal directories.
Click to hide internal directories.