grp

package
v0.0.0-...-7c6133f Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 30, 2016 License: MIT Imports: 8 Imported by: 0

Documentation

Overview

Package grp implements a group manager (GrpMgr), as well as a node map (NodeMap).

Index

Constants

View Source
const (
	MinPaxosID = PaxosID(-1)
	MinEpoch   = Epoch(0)
	MaxPaxosID = PaxosID(math.MaxInt8)
	MaxEpoch   = Epoch(math.MaxUint64)
)

Variables

View Source
var (
	ErrNodeAlreadyPresent         = errors.New("node with given id is already present in NodeMap")
	ErrOldNodeNotFound            = errors.New("node with given id not already present in Nodemap")
	ErrEqualPaxosIDAlreadyPresent = errors.New("node with given paxos id is already present in NodeMap")
	ErrNodeIDOutOfBounds          = errors.New("node with given id is out of bounds for current cluster size")
)

Functions

func EpochSlicesEqual

func EpochSlicesEqual(a, b []Epoch) bool

Types

type Epoch

type Epoch uint64

type GroupManager

type GroupManager interface {
	Start()
	Stop()
	RequestHold(releaseChan chan bool)
	SubscribeToHold(name string) Subscriber
	NodeMap() *NodeMap
	NrOfNodes() uint
	NrOfAcceptors() uint
	Quorum() uint
	Epochs() []Epoch
	LrEnabled() bool
	ArEnabled() bool
	SetNewNodeMap(nm map[ID]Node)
	GetID() ID
	SetID(ID) error
}

func NewGrpMgrMock

func NewGrpMgrMock(nrOfNodes uint) GroupManager

func NewGrpMgrMockWithLr

func NewGrpMgrMockWithLr(nrOfNodes uint, epochs []Epoch) GroupManager

type GrpMgr

type GrpMgr struct {
	// contains filtered or unexported fields
}

func NewGrpMgr

func NewGrpMgr(id ID, nm *NodeMap, lrEnabled bool, arEnabled bool, stopCheckIn *sync.WaitGroup) *GrpMgr

func (*GrpMgr) ArEnabled

func (grpmgr *GrpMgr) ArEnabled() bool

func (*GrpMgr) Epochs

func (grpmgr *GrpMgr) Epochs() []Epoch

func (*GrpMgr) GetID

func (grpmgr *GrpMgr) GetID() ID

func (*GrpMgr) LrEnabled

func (grpmgr *GrpMgr) LrEnabled() bool

func (*GrpMgr) NodeMap

func (grpmgr *GrpMgr) NodeMap() *NodeMap

func (*GrpMgr) NrOfAcceptors

func (grpmgr *GrpMgr) NrOfAcceptors() uint

func (*GrpMgr) NrOfNodes

func (grpmgr *GrpMgr) NrOfNodes() uint

func (*GrpMgr) Quorum

func (grpmgr *GrpMgr) Quorum() uint

func (*GrpMgr) RequestHold

func (grpmgr *GrpMgr) RequestHold(releaseChan chan bool)

func (*GrpMgr) SetID

func (grpmgr *GrpMgr) SetID(newID ID) error

func (*GrpMgr) SetNewNodeMap

func (grpmgr *GrpMgr) SetNewNodeMap(nm map[ID]Node)

func (*GrpMgr) Start

func (grpmgr *GrpMgr) Start()

func (*GrpMgr) Stop

func (grpmgr *GrpMgr) Stop()

func (*GrpMgr) SubscribeToHold

func (grpmgr *GrpMgr) SubscribeToHold(name string) Subscriber

type GrpMgrMock

type GrpMgrMock struct {
	// contains filtered or unexported fields
}

func (*GrpMgrMock) ArEnabled

func (gmm *GrpMgrMock) ArEnabled() bool

func (*GrpMgrMock) Epochs

func (gmm *GrpMgrMock) Epochs() []Epoch

func (*GrpMgrMock) GetID

func (gmm *GrpMgrMock) GetID() ID

func (*GrpMgrMock) LrEnabled

func (gmm *GrpMgrMock) LrEnabled() bool

func (*GrpMgrMock) NodeMap

func (gmm *GrpMgrMock) NodeMap() *NodeMap

func (*GrpMgrMock) NrOfAcceptors

func (gmm *GrpMgrMock) NrOfAcceptors() uint

func (*GrpMgrMock) NrOfNodes

func (gmm *GrpMgrMock) NrOfNodes() uint

func (*GrpMgrMock) Quorum

func (gmm *GrpMgrMock) Quorum() uint

func (*GrpMgrMock) RequestHold

func (gmm *GrpMgrMock) RequestHold(releaseChan chan bool)

func (*GrpMgrMock) SetID

func (gmm *GrpMgrMock) SetID(id ID) error

func (*GrpMgrMock) SetNewNodeMap

func (gmm *GrpMgrMock) SetNewNodeMap(nm map[ID]Node)

func (*GrpMgrMock) Start

func (gmm *GrpMgrMock) Start()

func (*GrpMgrMock) Stop

func (gmm *GrpMgrMock) Stop()

func (*GrpMgrMock) SubscribeToHold

func (gmm *GrpMgrMock) SubscribeToHold(name string) Subscriber

type ID

type ID struct {
	PaxosID PaxosID
	Epoch   Epoch
}

func MaxID

func MaxID() ID

func MinID

func MinID() ID

func NewID

func NewID(id PaxosID, epoch Epoch) ID

func NewIDFromInt

func NewIDFromInt(paxosID int8, epoch uint64) ID

func NewPxIDFromInt

func NewPxIDFromInt(paxosID int8) ID

func UndefinedID

func UndefinedID() ID

func (ID) CompareTo

func (id ID) CompareTo(otherID ID) int

func (ID) PxInt

func (id ID) PxInt() int

func (ID) String

func (id ID) String() string

type Node

type Node struct {
	IP         string
	PaxosPort  string
	ClientPort string
	Proposer   bool
	Acceptor   bool
	Learner    bool
}

func NewNode

func NewNode(ip, pp, cp string, prop, acc, lrn bool) Node

func (Node) ActorString

func (n Node) ActorString() string

func (Node) ClientAddr

func (n Node) ClientAddr() string

func (Node) IsSame

func (n Node) IsSame(m Node) bool

func (Node) PaxosAddr

func (n Node) PaxosAddr() string

func (Node) String

func (n Node) String() string

type NodeMap

type NodeMap struct {
	// contains filtered or unexported fields
}

func NewNodeMap

func NewNodeMap(nodes map[ID]Node) *NodeMap

func NewNodeMapFromSingleNode

func NewNodeMapFromSingleNode(id ID, node Node, nrOfNodes, nrOfAcceptors uint) *NodeMap

func NewNodeMapWithCount

func NewNodeMapWithCount(nodes map[ID]Node, nrOfNodes, nrOfAcceptors uint) *NodeMap

func (*NodeMap) AcceptorIDs

func (nm *NodeMap) AcceptorIDs() []ID

func (*NodeMap) Add

func (nm *NodeMap) Add(id ID, node Node) error

func (*NodeMap) CloneMap

func (nm *NodeMap) CloneMap() map[ID]Node

func (*NodeMap) Epochs

func (nm *NodeMap) Epochs() []Epoch

func (*NodeMap) GetNext

func (nm *NodeMap) GetNext(id ID) ID

func (*NodeMap) IDs

func (nm *NodeMap) IDs() []ID

func (*NodeMap) IsNew

func (nm *NodeMap) IsNew(id ID, n Node) bool

func (*NodeMap) LearnerIDs

func (nm *NodeMap) LearnerIDs() []ID

func (*NodeMap) Len

func (nm *NodeMap) Len() uint

func (*NodeMap) LookupNode

func (nm *NodeMap) LookupNode(id ID) (Node, bool)

func (*NodeMap) LookupNodeWithPaxosID

func (nm *NodeMap) LookupNodeWithPaxosID(pxID PaxosID) (ID, Node, bool)

func (*NodeMap) Nodes

func (nm *NodeMap) Nodes() []Node

func (*NodeMap) NrOfAcceptors

func (nm *NodeMap) NrOfAcceptors() uint

func (*NodeMap) NrOfNodes

func (nm *NodeMap) NrOfNodes() uint

func (*NodeMap) ProposerIDs

func (nm *NodeMap) ProposerIDs() []ID

func (*NodeMap) Quorum

func (nm *NodeMap) Quorum() uint

func (*NodeMap) Replace

func (nm *NodeMap) Replace(newID ID, newNode Node) error

type PaxosID

type PaxosID int8

type Subscriber

type Subscriber struct {
	// contains filtered or unexported fields
}

func (*Subscriber) PrepareChan

func (s *Subscriber) PrepareChan() <-chan *sync.WaitGroup

func (*Subscriber) ReleaseChan

func (s *Subscriber) ReleaseChan() <-chan bool

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL