Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ErrEmptyPublicKeyList = errors.New("nil or empty public key list")
ErrEmptyPublicKeyList signals that a nil or empty public key list has been provided
var ErrInvalidMaxDurationPeerUnresponsive = errors.New("invalid max duration to declare the peer unresponsive")
ErrInvalidMaxDurationPeerUnresponsive signals that the duration provided is invalid
var ErrNilAppStatusHandler = errors.New("nil AppStatusHandler")
ErrNilAppStatusHandler defines the error for setting a nil AppStatusHandler
var ErrNilDataToProcess = errors.New("nil data to process")
ErrNilDataToProcess signals that nil data was provided
var ErrNilKeyGenerator = errors.New("key generator is nil")
ErrNilKeyGenerator is raised when a valid key generator is expected but nil used
var ErrNilMarshalizer = errors.New("nil marshalizer")
ErrNilMarshalizer signals that a nil marshalizer has been provided
var ErrNilMessage = errors.New("nil message")
ErrNilMessage signals that a nil message has been received
var ErrNilMessenger = errors.New("nil P2P Messenger")
ErrNilMessenger signals that a nil p2p messenger has been provided
var ErrNilPrivateKey = errors.New("nil private key")
ErrNilPrivateKey signals that a nil private key has been provided
var ErrNilSingleSigner = errors.New("nil single signer")
ErrNilSingleSigner signals that a nil single signer has been provided
Functions ¶
This section is empty.
Types ¶
type Duration ¶
Duration is a wrapper of the original Duration struct that has JSON marshal and unmarshal capabilities golang issue: https://github.com/golang/go/issues/10275
func (Duration) MarshalJSON ¶
MarshalJSON is called when a json marshal is triggered on this field
func (*Duration) UnmarshalJSON ¶
UnmarshalJSON is called when a json unmarshal is triggered on this field
type Heartbeat ¶
type Heartbeat struct { Payload []byte Pubkey []byte Signature []byte ShardID uint32 VersionNumber string NodeDisplayName string }
Heartbeat represents the heartbeat message that is sent between peers
type Monitor ¶
type Monitor struct {
// contains filtered or unexported fields
}
Monitor represents the heartbeat component that processes received heartbeat messages
func NewMonitor ¶
func NewMonitor( singleSigner crypto.SingleSigner, keygen crypto.KeyGenerator, marshalizer marshal.Marshalizer, maxDurationPeerUnresponsive time.Duration, pubKeyList []string, ) (*Monitor, error)
NewMonitor returns a new monitor instance
func (*Monitor) GetHeartbeats ¶
func (m *Monitor) GetHeartbeats() []PubKeyHeartbeat
GetHeartbeats returns the heartbeat status
func (*Monitor) ProcessReceivedMessage ¶
func (m *Monitor) ProcessReceivedMessage(message p2p.MessageP2P) error
ProcessReceivedMessage satisfies the p2p.MessageProcessor interface so it can be called by the p2p subsystem each time a new heartbeat message arrives
func (*Monitor) SetAppStatusHandler ¶
func (m *Monitor) SetAppStatusHandler(ash core.AppStatusHandler) error
SetAppStatusHandler will set the AppStatusHandler which will be used for monitoring
type PeerMessenger ¶
PeerMessenger defines a subset of the p2p.Messenger interface
type PubKeyHeartbeat ¶
type PubKeyHeartbeat struct { HexPublicKey string `json:"hexPublicKey"` TimeStamp time.Time `json:"timeStamp"` MaxInactiveTime Duration `json:"maxInactiveTime"` IsActive bool `json:"isActive"` ShardID uint32 `json:"shardID"` TotalUpTime Duration `json:"totalUpTime"` TotalDownTime Duration `json:"totalDownTime"` VersionNumber string `json:"versionNumber"` IsValidator bool `json:"isValidator"` NodeDisplayName string `json:"nodeDisplayName"` }
PubKeyHeartbeat returns the heartbeat status for a public key
type Sender ¶
type Sender struct {
// contains filtered or unexported fields
}
Sender periodically sends heartbeat messages on a pubsub topic
func NewSender ¶
func NewSender( peerMessenger PeerMessenger, singleSigner crypto.SingleSigner, privKey crypto.PrivateKey, marshalizer marshal.Marshalizer, topic string, shardCoordinator sharding.Coordinator, versionNumber string, nodeDisplayName string, ) (*Sender, error)
NewSender will create a new sender instance
func (*Sender) SendHeartbeat ¶
SendHeartbeat broadcasts a new heartbeat message