Documentation ¶
Overview ¶
Package gossip is a generated protocol buffer package.
It is generated from these files:
gossip/message.proto
It has these top-level messages:
Envelope SecretEnvelope Secret GossipMessage StateInfo StateInfoSnapshot StateInfoPullRequest ConnEstablish PeerIdentity DataRequest GossipHello DataUpdate DataDigest DataMessage Payload AliveMessage LeadershipMessage PeerTime MembershipRequest MembershipResponse Member Empty RemoteStateRequest RemoteStateResponse
Index ¶
- Variables
- func NewGossipMessageComparator(dataBlockStorageSize int) common.MessageReplacingPolicy
- func RegisterGossipServer(s *grpc.Server, srv GossipServer)
- type AliveMessage
- type AuthInfo
- type ConnEstablish
- type ConnectionInfo
- type DataDigest
- type DataMessage
- type DataRequest
- type DataUpdate
- type Empty
- type Envelope
- func (*Envelope) Descriptor() ([]byte, []int)
- func (m *Envelope) GetPayload() []byte
- func (m *Envelope) GetSecretEnvelope() *SecretEnvelope
- func (m *Envelope) GetSignature() []byte
- func (*Envelope) ProtoMessage()
- func (m *Envelope) Reset()
- func (e *Envelope) SignSecret(signer Signer, secret *Secret) error
- func (m *Envelope) String() string
- func (e *Envelope) ToGossipMessage() (*SignedGossipMessage, error)
- type GossipClient
- type GossipHello
- type GossipMessage
- func (*GossipMessage) Descriptor() ([]byte, []int)
- func (m *GossipMessage) GetAliveMsg() *AliveMessage
- func (m *GossipMessage) GetChannel() []byte
- func (m *GossipMessage) GetConn() *ConnEstablish
- func (m *GossipMessage) GetContent() isGossipMessage_Content
- func (m *GossipMessage) GetDataDig() *DataDigest
- func (m *GossipMessage) GetDataMsg() *DataMessage
- func (m *GossipMessage) GetDataReq() *DataRequest
- func (m *GossipMessage) GetDataUpdate() *DataUpdate
- func (m *GossipMessage) GetEmpty() *Empty
- func (m *GossipMessage) GetHello() *GossipHello
- func (m *GossipMessage) GetLeadershipMsg() *LeadershipMessage
- func (m *GossipMessage) GetMemReq() *MembershipRequest
- func (m *GossipMessage) GetMemRes() *MembershipResponse
- func (m *GossipMessage) GetNonce() uint64
- func (m *GossipMessage) GetPeerIdentity() *PeerIdentity
- func (m *GossipMessage) GetPullMsgType() PullMsgType
- func (m *GossipMessage) GetStateInfo() *StateInfo
- func (m *GossipMessage) GetStateInfoPullReq() *StateInfoPullRequest
- func (m *GossipMessage) GetStateRequest() *RemoteStateRequest
- func (m *GossipMessage) GetStateResponse() *RemoteStateResponse
- func (m *GossipMessage) GetStateSnapshot() *StateInfoSnapshot
- func (m *GossipMessage) GetTag() GossipMessage_Tag
- func (m *GossipMessage) IsAliveMsg() bool
- func (m *GossipMessage) IsChannelRestricted() bool
- func (m *GossipMessage) IsDataMsg() bool
- func (m *GossipMessage) IsDataReq() bool
- func (m *GossipMessage) IsDataUpdate() bool
- func (m *GossipMessage) IsDigestMsg() bool
- func (m *GossipMessage) IsHelloMsg() bool
- func (m *GossipMessage) IsIdentityMsg() bool
- func (m *GossipMessage) IsLeadershipMsg() bool
- func (m *GossipMessage) IsOrgRestricted() bool
- func (m *GossipMessage) IsPullMsg() bool
- func (m *GossipMessage) IsRemoteStateMessage() bool
- func (m *GossipMessage) IsStateInfoMsg() bool
- func (m *GossipMessage) IsStateInfoPullRequestMsg() bool
- func (m *GossipMessage) IsStateInfoSnapshot() bool
- func (m *GossipMessage) IsTagLegal() error
- func (m *GossipMessage) NoopSign() (*SignedGossipMessage, error)
- func (*GossipMessage) ProtoMessage()
- func (m *GossipMessage) Reset()
- func (m *GossipMessage) String() string
- func (*GossipMessage) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, ...)
- type GossipMessage_AliveMsg
- type GossipMessage_Conn
- type GossipMessage_DataDig
- type GossipMessage_DataMsg
- type GossipMessage_DataReq
- type GossipMessage_DataUpdate
- type GossipMessage_Empty
- type GossipMessage_Hello
- type GossipMessage_LeadershipMsg
- type GossipMessage_MemReq
- type GossipMessage_MemRes
- type GossipMessage_PeerIdentity
- type GossipMessage_StateInfo
- type GossipMessage_StateInfoPullReq
- type GossipMessage_StateRequest
- type GossipMessage_StateResponse
- type GossipMessage_StateSnapshot
- type GossipMessage_Tag
- type GossipServer
- type Gossip_GossipStreamClient
- type Gossip_GossipStreamServer
- type IdentifierExtractor
- type LeadershipMessage
- func (*LeadershipMessage) Descriptor() ([]byte, []int)
- func (m *LeadershipMessage) GetIsDeclaration() bool
- func (m *LeadershipMessage) GetPkiId() []byte
- func (m *LeadershipMessage) GetTimestamp() *PeerTime
- func (*LeadershipMessage) ProtoMessage()
- func (m *LeadershipMessage) Reset()
- func (m *LeadershipMessage) String() string
- type Member
- type MembershipRequest
- type MembershipResponse
- type MsgConsumer
- type Payload
- type PeerIdentity
- type PeerTime
- type PullMsgType
- type ReceivedMessage
- type RemoteStateRequest
- type RemoteStateResponse
- type Secret
- func (*Secret) Descriptor() ([]byte, []int)
- func (m *Secret) GetContent() isSecret_Content
- func (m *Secret) GetInternalEndpoint() string
- func (*Secret) ProtoMessage()
- func (m *Secret) Reset()
- func (m *Secret) String() string
- func (*Secret) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, ...)
- type SecretEnvelope
- func (*SecretEnvelope) Descriptor() ([]byte, []int)
- func (m *SecretEnvelope) GetPayload() []byte
- func (m *SecretEnvelope) GetSignature() []byte
- func (s *SecretEnvelope) InternalEndpoint() string
- func (*SecretEnvelope) ProtoMessage()
- func (m *SecretEnvelope) Reset()
- func (m *SecretEnvelope) String() string
- type Secret_InternalEndpoint
- type SignedGossipMessage
- type Signer
- type StateInfo
- func (*StateInfo) Descriptor() ([]byte, []int)
- func (m *StateInfo) GetChannel_MAC() []byte
- func (m *StateInfo) GetMetadata() []byte
- func (m *StateInfo) GetPkiId() []byte
- func (m *StateInfo) GetTimestamp() *PeerTime
- func (*StateInfo) ProtoMessage()
- func (m *StateInfo) Reset()
- func (m *StateInfo) String() string
- type StateInfoPullRequest
- type StateInfoSnapshot
- type Verifier
Constants ¶
This section is empty.
Variables ¶
var GossipMessage_Tag_name = map[int32]string{
0: "UNDEFINED",
1: "EMPTY",
2: "ORG_ONLY",
3: "CHAN_ONLY",
4: "CHAN_AND_ORG",
5: "CHAN_OR_ORG",
}
var GossipMessage_Tag_value = map[string]int32{
"UNDEFINED": 0,
"EMPTY": 1,
"ORG_ONLY": 2,
"CHAN_ONLY": 3,
"CHAN_AND_ORG": 4,
"CHAN_OR_ORG": 5,
}
var PullMsgType_name = map[int32]string{
0: "UNDEFINED",
1: "BLOCK_MSG",
2: "IDENTITY_MSG",
}
var PullMsgType_value = map[string]int32{
"UNDEFINED": 0,
"BLOCK_MSG": 1,
"IDENTITY_MSG": 2,
}
Functions ¶
func NewGossipMessageComparator ¶
func NewGossipMessageComparator(dataBlockStorageSize int) common.MessageReplacingPolicy
NewGossipMessageComparator creates a MessageReplacingPolicy given a maximum number of blocks to hold
func RegisterGossipServer ¶
func RegisterGossipServer(s *grpc.Server, srv GossipServer)
Types ¶
type AliveMessage ¶
type AliveMessage struct { Membership *Member `protobuf:"bytes,1,opt,name=membership" json:"membership,omitempty"` Timestamp *PeerTime `protobuf:"bytes,2,opt,name=timestamp" json:"timestamp,omitempty"` Identity []byte `protobuf:"bytes,4,opt,name=identity,proto3" json:"identity,omitempty"` }
AliveMessage is sent to inform remote peers of a peer's existence and activity
func (*AliveMessage) Descriptor ¶
func (*AliveMessage) Descriptor() ([]byte, []int)
func (*AliveMessage) GetIdentity ¶
func (m *AliveMessage) GetIdentity() []byte
func (*AliveMessage) GetMembership ¶
func (m *AliveMessage) GetMembership() *Member
func (*AliveMessage) GetTimestamp ¶
func (m *AliveMessage) GetTimestamp() *PeerTime
func (*AliveMessage) ProtoMessage ¶
func (*AliveMessage) ProtoMessage()
func (*AliveMessage) Reset ¶
func (m *AliveMessage) Reset()
func (*AliveMessage) String ¶
func (m *AliveMessage) String() string
type AuthInfo ¶
AuthInfo represents the authentication data that was provided by the remote peer at the connection time
type ConnEstablish ¶
type ConnEstablish struct { PkiId []byte `protobuf:"bytes,1,opt,name=pki_id,json=pkiId,proto3" json:"pki_id,omitempty"` Identity []byte `protobuf:"bytes,2,opt,name=identity,proto3" json:"identity,omitempty"` TlsCertHash []byte `protobuf:"bytes,3,opt,name=tls_cert_hash,json=tlsCertHash,proto3" json:"tls_cert_hash,omitempty"` }
ConnEstablish is the message used for the gossip handshake Whenever a peer connects to another peer, it handshakes with it by sending this message that proves its identity
func (*ConnEstablish) Descriptor ¶
func (*ConnEstablish) Descriptor() ([]byte, []int)
func (*ConnEstablish) GetIdentity ¶
func (m *ConnEstablish) GetIdentity() []byte
func (*ConnEstablish) GetPkiId ¶
func (m *ConnEstablish) GetPkiId() []byte
func (*ConnEstablish) GetTlsCertHash ¶
func (m *ConnEstablish) GetTlsCertHash() []byte
func (*ConnEstablish) ProtoMessage ¶
func (*ConnEstablish) ProtoMessage()
func (*ConnEstablish) Reset ¶
func (m *ConnEstablish) Reset()
func (*ConnEstablish) String ¶
func (m *ConnEstablish) String() string
type ConnectionInfo ¶
type ConnectionInfo struct { ID common.PKIidType Auth *AuthInfo Identity api.PeerIdentityType Endpoint string }
ConnectionInfo represents information about the remote peer that sent a certain ReceivedMessage
func (*ConnectionInfo) IsAuthenticated ¶
func (c *ConnectionInfo) IsAuthenticated() bool
IsAuthenticated returns whether the connection to the remote peer was authenticated when the handshake took place
func (*ConnectionInfo) String ¶
func (c *ConnectionInfo) String() string
String returns a string representation of this ConnectionInfo
type DataDigest ¶
type DataDigest struct { Nonce uint64 `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"` Digests []string `protobuf:"bytes,2,rep,name=digests" json:"digests,omitempty"` MsgType PullMsgType `protobuf:"varint,3,opt,name=msg_type,json=msgType,enum=gossip.PullMsgType" json:"msg_type,omitempty"` }
DataDigest is the message sent from the receiver peer to the initator peer and contains the data items it has
func (*DataDigest) Descriptor ¶
func (*DataDigest) Descriptor() ([]byte, []int)
func (*DataDigest) GetDigests ¶
func (m *DataDigest) GetDigests() []string
func (*DataDigest) GetMsgType ¶
func (m *DataDigest) GetMsgType() PullMsgType
func (*DataDigest) GetNonce ¶
func (m *DataDigest) GetNonce() uint64
func (*DataDigest) ProtoMessage ¶
func (*DataDigest) ProtoMessage()
func (*DataDigest) Reset ¶
func (m *DataDigest) Reset()
func (*DataDigest) String ¶
func (m *DataDigest) String() string
type DataMessage ¶
type DataMessage struct {
Payload *Payload `protobuf:"bytes,1,opt,name=payload" json:"payload,omitempty"`
}
DataMessage is the message that contains a block
func (*DataMessage) Descriptor ¶
func (*DataMessage) Descriptor() ([]byte, []int)
func (*DataMessage) GetPayload ¶
func (m *DataMessage) GetPayload() *Payload
func (*DataMessage) ProtoMessage ¶
func (*DataMessage) ProtoMessage()
func (*DataMessage) Reset ¶
func (m *DataMessage) Reset()
func (*DataMessage) String ¶
func (m *DataMessage) String() string
type DataRequest ¶
type DataRequest struct { Nonce uint64 `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"` Digests []string `protobuf:"bytes,2,rep,name=digests" json:"digests,omitempty"` MsgType PullMsgType `protobuf:"varint,3,opt,name=msg_type,json=msgType,enum=gossip.PullMsgType" json:"msg_type,omitempty"` }
DataRequest is a message used for a peer to request certain data blocks from a remote peer
func (*DataRequest) Descriptor ¶
func (*DataRequest) Descriptor() ([]byte, []int)
func (*DataRequest) GetDigests ¶
func (m *DataRequest) GetDigests() []string
func (*DataRequest) GetMsgType ¶
func (m *DataRequest) GetMsgType() PullMsgType
func (*DataRequest) GetNonce ¶
func (m *DataRequest) GetNonce() uint64
func (*DataRequest) ProtoMessage ¶
func (*DataRequest) ProtoMessage()
func (*DataRequest) Reset ¶
func (m *DataRequest) Reset()
func (*DataRequest) String ¶
func (m *DataRequest) String() string
type DataUpdate ¶
type DataUpdate struct { Nonce uint64 `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"` Data []*Envelope `protobuf:"bytes,2,rep,name=data" json:"data,omitempty"` MsgType PullMsgType `protobuf:"varint,3,opt,name=msg_type,json=msgType,enum=gossip.PullMsgType" json:"msg_type,omitempty"` }
DataUpdate is the final message in the pull phase sent from the receiver to the initiator
func (*DataUpdate) Descriptor ¶
func (*DataUpdate) Descriptor() ([]byte, []int)
func (*DataUpdate) GetData ¶
func (m *DataUpdate) GetData() []*Envelope
func (*DataUpdate) GetMsgType ¶
func (m *DataUpdate) GetMsgType() PullMsgType
func (*DataUpdate) GetNonce ¶
func (m *DataUpdate) GetNonce() uint64
func (*DataUpdate) ProtoMessage ¶
func (*DataUpdate) ProtoMessage()
func (*DataUpdate) Reset ¶
func (m *DataUpdate) Reset()
func (*DataUpdate) String ¶
func (m *DataUpdate) String() string
type Empty ¶
type Empty struct { }
Empty is used for pinging and in tests
func (*Empty) Descriptor ¶
func (*Empty) ProtoMessage ¶
func (*Empty) ProtoMessage()
type Envelope ¶
type Envelope struct { Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` SecretEnvelope *SecretEnvelope `protobuf:"bytes,3,opt,name=secret_envelope,json=secretEnvelope" json:"secret_envelope,omitempty"` }
Envelope contains a marshalled GossipMessage and a signature over it. It may also contain a SecretEnvelope which is a marshalled Secret
func (*Envelope) Descriptor ¶
func (*Envelope) GetPayload ¶
func (*Envelope) GetSecretEnvelope ¶
func (m *Envelope) GetSecretEnvelope() *SecretEnvelope
func (*Envelope) GetSignature ¶
func (*Envelope) ProtoMessage ¶
func (*Envelope) ProtoMessage()
func (*Envelope) SignSecret ¶
SignSecret signs the secret payload and creates a secret envelope out of it.
func (*Envelope) ToGossipMessage ¶
func (e *Envelope) ToGossipMessage() (*SignedGossipMessage, error)
ToGossipMessage un-marshals a given envelope and creates a SignedGossipMessage out of it. Returns an error if un-marshaling fails.
type GossipClient ¶
type GossipClient interface { // GossipStream is the gRPC stream used for sending and receiving messages GossipStream(ctx context.Context, opts ...grpc.CallOption) (Gossip_GossipStreamClient, error) // Ping is used to probe a remote peer's aliveness Ping(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) }
func NewGossipClient ¶
func NewGossipClient(cc *grpc.ClientConn) GossipClient
type GossipHello ¶
type GossipHello struct { Nonce uint64 `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"` Metadata []byte `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` MsgType PullMsgType `protobuf:"varint,3,opt,name=msg_type,json=msgType,enum=gossip.PullMsgType" json:"msg_type,omitempty"` }
GossipHello is the message that is used for the peer to initiate a pull round with another peer
func (*GossipHello) Descriptor ¶
func (*GossipHello) Descriptor() ([]byte, []int)
func (*GossipHello) GetMetadata ¶
func (m *GossipHello) GetMetadata() []byte
func (*GossipHello) GetMsgType ¶
func (m *GossipHello) GetMsgType() PullMsgType
func (*GossipHello) GetNonce ¶
func (m *GossipHello) GetNonce() uint64
func (*GossipHello) ProtoMessage ¶
func (*GossipHello) ProtoMessage()
func (*GossipHello) Reset ¶
func (m *GossipHello) Reset()
func (*GossipHello) String ¶
func (m *GossipHello) String() string
type GossipMessage ¶
type GossipMessage struct { // used mainly for testing, but will might be used in the future // for ensuring message delivery by acking Nonce uint64 `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"` // The channel of the message. // Some GossipMessages may set this to nil, because // they are cross-channels but some may not Channel []byte `protobuf:"bytes,2,opt,name=channel,proto3" json:"channel,omitempty"` // determines to which peers it is allowed // to forward the message Tag GossipMessage_Tag `protobuf:"varint,3,opt,name=tag,enum=gossip.GossipMessage_Tag" json:"tag,omitempty"` // Types that are valid to be assigned to Content: // *GossipMessage_AliveMsg // *GossipMessage_MemReq // *GossipMessage_MemRes // *GossipMessage_DataMsg // *GossipMessage_Hello // *GossipMessage_DataDig // *GossipMessage_DataReq // *GossipMessage_DataUpdate // *GossipMessage_Empty // *GossipMessage_Conn // *GossipMessage_StateInfo // *GossipMessage_StateSnapshot // *GossipMessage_StateInfoPullReq // *GossipMessage_StateRequest // *GossipMessage_StateResponse // *GossipMessage_LeadershipMsg // *GossipMessage_PeerIdentity Content isGossipMessage_Content `protobuf_oneof:"content"` }
GossipMessage defines the message sent in a gossip network
func (*GossipMessage) Descriptor ¶
func (*GossipMessage) Descriptor() ([]byte, []int)
func (*GossipMessage) GetAliveMsg ¶
func (m *GossipMessage) GetAliveMsg() *AliveMessage
func (*GossipMessage) GetChannel ¶
func (m *GossipMessage) GetChannel() []byte
func (*GossipMessage) GetConn ¶
func (m *GossipMessage) GetConn() *ConnEstablish
func (*GossipMessage) GetContent ¶
func (m *GossipMessage) GetContent() isGossipMessage_Content
func (*GossipMessage) GetDataDig ¶
func (m *GossipMessage) GetDataDig() *DataDigest
func (*GossipMessage) GetDataMsg ¶
func (m *GossipMessage) GetDataMsg() *DataMessage
func (*GossipMessage) GetDataReq ¶
func (m *GossipMessage) GetDataReq() *DataRequest
func (*GossipMessage) GetDataUpdate ¶
func (m *GossipMessage) GetDataUpdate() *DataUpdate
func (*GossipMessage) GetEmpty ¶
func (m *GossipMessage) GetEmpty() *Empty
func (*GossipMessage) GetHello ¶
func (m *GossipMessage) GetHello() *GossipHello
func (*GossipMessage) GetLeadershipMsg ¶
func (m *GossipMessage) GetLeadershipMsg() *LeadershipMessage
func (*GossipMessage) GetMemReq ¶
func (m *GossipMessage) GetMemReq() *MembershipRequest
func (*GossipMessage) GetMemRes ¶
func (m *GossipMessage) GetMemRes() *MembershipResponse
func (*GossipMessage) GetNonce ¶
func (m *GossipMessage) GetNonce() uint64
func (*GossipMessage) GetPeerIdentity ¶
func (m *GossipMessage) GetPeerIdentity() *PeerIdentity
func (*GossipMessage) GetPullMsgType ¶
func (m *GossipMessage) GetPullMsgType() PullMsgType
GetPullMsgType returns the phase of the pull mechanism this GossipMessage belongs to for example: Hello, Digest, etc. If this isn't a pull message, PullMsgType_UNDEFINED is returned.
func (*GossipMessage) GetStateInfo ¶
func (m *GossipMessage) GetStateInfo() *StateInfo
func (*GossipMessage) GetStateInfoPullReq ¶
func (m *GossipMessage) GetStateInfoPullReq() *StateInfoPullRequest
func (*GossipMessage) GetStateRequest ¶
func (m *GossipMessage) GetStateRequest() *RemoteStateRequest
func (*GossipMessage) GetStateResponse ¶
func (m *GossipMessage) GetStateResponse() *RemoteStateResponse
func (*GossipMessage) GetStateSnapshot ¶
func (m *GossipMessage) GetStateSnapshot() *StateInfoSnapshot
func (*GossipMessage) GetTag ¶
func (m *GossipMessage) GetTag() GossipMessage_Tag
func (*GossipMessage) IsAliveMsg ¶
func (m *GossipMessage) IsAliveMsg() bool
IsAliveMsg returns whether this GossipMessage is an AliveMessage
func (*GossipMessage) IsChannelRestricted ¶
func (m *GossipMessage) IsChannelRestricted() bool
IsChannelRestricted returns whether this GossipMessage should be routed only in its channel
func (*GossipMessage) IsDataMsg ¶
func (m *GossipMessage) IsDataMsg() bool
IsDataMsg returns whether this GossipMessage is a data message
func (*GossipMessage) IsDataReq ¶
func (m *GossipMessage) IsDataReq() bool
IsDataReq returns whether this GossipMessage is a data request message
func (*GossipMessage) IsDataUpdate ¶
func (m *GossipMessage) IsDataUpdate() bool
IsDataUpdate returns whether this GossipMessage is a data update message
func (*GossipMessage) IsDigestMsg ¶
func (m *GossipMessage) IsDigestMsg() bool
IsDigestMsg returns whether this GossipMessage is a digest message
func (*GossipMessage) IsHelloMsg ¶
func (m *GossipMessage) IsHelloMsg() bool
IsHelloMsg returns whether this GossipMessage is a hello message
func (*GossipMessage) IsIdentityMsg ¶
func (m *GossipMessage) IsIdentityMsg() bool
IsIdentityMsg returns whether this GossipMessage is an identity message
func (*GossipMessage) IsLeadershipMsg ¶
func (m *GossipMessage) IsLeadershipMsg() bool
IsLeadershipMsg returns whether this GossipMessage is a leadership (leader election) message
func (*GossipMessage) IsOrgRestricted ¶
func (m *GossipMessage) IsOrgRestricted() bool
IsOrgRestricted returns whether this GossipMessage should be routed only inside the organization
func (*GossipMessage) IsPullMsg ¶
func (m *GossipMessage) IsPullMsg() bool
IsPullMsg returns whether this GossipMessage is a message that belongs to the pull mechanism
func (*GossipMessage) IsRemoteStateMessage ¶
func (m *GossipMessage) IsRemoteStateMessage() bool
IsRemoteStateMessage returns whether this GossipMessage is related to state synchronization
func (*GossipMessage) IsStateInfoMsg ¶
func (m *GossipMessage) IsStateInfoMsg() bool
IsStateInfoMsg returns whether this GossipMessage is a stateInfo message
func (*GossipMessage) IsStateInfoPullRequestMsg ¶
func (m *GossipMessage) IsStateInfoPullRequestMsg() bool
IsStateInfoPullRequestMsg returns whether this GossipMessage is a stateInfoPullRequest
func (*GossipMessage) IsStateInfoSnapshot ¶
func (m *GossipMessage) IsStateInfoSnapshot() bool
IsStateInfoSnapshot returns whether this GossipMessage is a stateInfo snapshot
func (*GossipMessage) IsTagLegal ¶
func (m *GossipMessage) IsTagLegal() error
IsTagLegal checks the GossipMessage tags and inner type and returns an error if the tag doesn't match the type.
func (*GossipMessage) NoopSign ¶
func (m *GossipMessage) NoopSign() (*SignedGossipMessage, error)
NoopSign creates a SignedGossipMessage with a nil signature
func (*GossipMessage) ProtoMessage ¶
func (*GossipMessage) ProtoMessage()
func (*GossipMessage) Reset ¶
func (m *GossipMessage) Reset()
func (*GossipMessage) String ¶
func (m *GossipMessage) String() string
func (*GossipMessage) XXX_OneofFuncs ¶
func (*GossipMessage) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{})
XXX_OneofFuncs is for the internal use of the proto package.
type GossipMessage_AliveMsg ¶
type GossipMessage_AliveMsg struct {
AliveMsg *AliveMessage `protobuf:"bytes,5,opt,name=alive_msg,json=aliveMsg,oneof"`
}
type GossipMessage_Conn ¶
type GossipMessage_Conn struct {
Conn *ConnEstablish `protobuf:"bytes,14,opt,name=conn,oneof"`
}
type GossipMessage_DataDig ¶
type GossipMessage_DataDig struct {
DataDig *DataDigest `protobuf:"bytes,10,opt,name=data_dig,json=dataDig,oneof"`
}
type GossipMessage_DataMsg ¶
type GossipMessage_DataMsg struct {
DataMsg *DataMessage `protobuf:"bytes,8,opt,name=data_msg,json=dataMsg,oneof"`
}
type GossipMessage_DataReq ¶
type GossipMessage_DataReq struct {
DataReq *DataRequest `protobuf:"bytes,11,opt,name=data_req,json=dataReq,oneof"`
}
type GossipMessage_DataUpdate ¶
type GossipMessage_DataUpdate struct {
DataUpdate *DataUpdate `protobuf:"bytes,12,opt,name=data_update,json=dataUpdate,oneof"`
}
type GossipMessage_Empty ¶
type GossipMessage_Empty struct {
Empty *Empty `protobuf:"bytes,13,opt,name=empty,oneof"`
}
type GossipMessage_Hello ¶
type GossipMessage_Hello struct {
Hello *GossipHello `protobuf:"bytes,9,opt,name=hello,oneof"`
}
type GossipMessage_LeadershipMsg ¶
type GossipMessage_LeadershipMsg struct {
LeadershipMsg *LeadershipMessage `protobuf:"bytes,20,opt,name=leadership_msg,json=leadershipMsg,oneof"`
}
type GossipMessage_MemReq ¶
type GossipMessage_MemReq struct {
MemReq *MembershipRequest `protobuf:"bytes,6,opt,name=mem_req,json=memReq,oneof"`
}
type GossipMessage_MemRes ¶
type GossipMessage_MemRes struct {
MemRes *MembershipResponse `protobuf:"bytes,7,opt,name=mem_res,json=memRes,oneof"`
}
type GossipMessage_PeerIdentity ¶
type GossipMessage_PeerIdentity struct {
PeerIdentity *PeerIdentity `protobuf:"bytes,21,opt,name=peer_identity,json=peerIdentity,oneof"`
}
type GossipMessage_StateInfo ¶
type GossipMessage_StateInfo struct {
StateInfo *StateInfo `protobuf:"bytes,15,opt,name=state_info,json=stateInfo,oneof"`
}
type GossipMessage_StateInfoPullReq ¶
type GossipMessage_StateInfoPullReq struct {
StateInfoPullReq *StateInfoPullRequest `protobuf:"bytes,17,opt,name=state_info_pull_req,json=stateInfoPullReq,oneof"`
}
type GossipMessage_StateRequest ¶
type GossipMessage_StateRequest struct {
StateRequest *RemoteStateRequest `protobuf:"bytes,18,opt,name=state_request,json=stateRequest,oneof"`
}
type GossipMessage_StateResponse ¶
type GossipMessage_StateResponse struct {
StateResponse *RemoteStateResponse `protobuf:"bytes,19,opt,name=state_response,json=stateResponse,oneof"`
}
type GossipMessage_StateSnapshot ¶
type GossipMessage_StateSnapshot struct {
StateSnapshot *StateInfoSnapshot `protobuf:"bytes,16,opt,name=state_snapshot,json=stateSnapshot,oneof"`
}
type GossipMessage_Tag ¶
type GossipMessage_Tag int32
const ( GossipMessage_UNDEFINED GossipMessage_Tag = 0 GossipMessage_EMPTY GossipMessage_Tag = 1 GossipMessage_ORG_ONLY GossipMessage_Tag = 2 GossipMessage_CHAN_ONLY GossipMessage_Tag = 3 GossipMessage_CHAN_AND_ORG GossipMessage_Tag = 4 GossipMessage_CHAN_OR_ORG GossipMessage_Tag = 5 )
func (GossipMessage_Tag) EnumDescriptor ¶
func (GossipMessage_Tag) EnumDescriptor() ([]byte, []int)
func (GossipMessage_Tag) String ¶
func (x GossipMessage_Tag) String() string
type GossipServer ¶
type IdentifierExtractor ¶
type IdentifierExtractor func(*SignedGossipMessage) string
IdentifierExtractor extracts from a SignedGossipMessage an identifier
type LeadershipMessage ¶
type LeadershipMessage struct { PkiId []byte `protobuf:"bytes,1,opt,name=pki_id,json=pkiId,proto3" json:"pki_id,omitempty"` Timestamp *PeerTime `protobuf:"bytes,2,opt,name=timestamp" json:"timestamp,omitempty"` IsDeclaration bool `protobuf:"varint,3,opt,name=is_declaration,json=isDeclaration" json:"is_declaration,omitempty"` }
Leadership Message is sent during leader election to inform remote peers about intent of peer to proclaim itself as leader
func (*LeadershipMessage) Descriptor ¶
func (*LeadershipMessage) Descriptor() ([]byte, []int)
func (*LeadershipMessage) GetIsDeclaration ¶
func (m *LeadershipMessage) GetIsDeclaration() bool
func (*LeadershipMessage) GetPkiId ¶
func (m *LeadershipMessage) GetPkiId() []byte
func (*LeadershipMessage) GetTimestamp ¶
func (m *LeadershipMessage) GetTimestamp() *PeerTime
func (*LeadershipMessage) ProtoMessage ¶
func (*LeadershipMessage) ProtoMessage()
func (*LeadershipMessage) Reset ¶
func (m *LeadershipMessage) Reset()
func (*LeadershipMessage) String ¶
func (m *LeadershipMessage) String() string
type Member ¶
type Member struct { Endpoint string `protobuf:"bytes,1,opt,name=endpoint" json:"endpoint,omitempty"` Metadata []byte `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` PkiId []byte `protobuf:"bytes,3,opt,name=pki_id,json=pkiId,proto3" json:"pki_id,omitempty"` }
Member holds membership-related information about a peer
func (*Member) Descriptor ¶
func (*Member) GetEndpoint ¶
func (*Member) GetMetadata ¶
func (*Member) ProtoMessage ¶
func (*Member) ProtoMessage()
type MembershipRequest ¶
type MembershipRequest struct { SelfInformation *Envelope `protobuf:"bytes,1,opt,name=self_information,json=selfInformation" json:"self_information,omitempty"` Known [][]byte `protobuf:"bytes,2,rep,name=known,proto3" json:"known,omitempty"` }
MembershipRequest is used to ask membership information from a remote peer
func (*MembershipRequest) Descriptor ¶
func (*MembershipRequest) Descriptor() ([]byte, []int)
func (*MembershipRequest) GetKnown ¶
func (m *MembershipRequest) GetKnown() [][]byte
func (*MembershipRequest) GetSelfInformation ¶
func (m *MembershipRequest) GetSelfInformation() *Envelope
func (*MembershipRequest) ProtoMessage ¶
func (*MembershipRequest) ProtoMessage()
func (*MembershipRequest) Reset ¶
func (m *MembershipRequest) Reset()
func (*MembershipRequest) String ¶
func (m *MembershipRequest) String() string
type MembershipResponse ¶
type MembershipResponse struct { Alive []*Envelope `protobuf:"bytes,1,rep,name=alive" json:"alive,omitempty"` Dead []*Envelope `protobuf:"bytes,2,rep,name=dead" json:"dead,omitempty"` }
MembershipResponse is used for replying to MembershipRequests
func (*MembershipResponse) Descriptor ¶
func (*MembershipResponse) Descriptor() ([]byte, []int)
func (*MembershipResponse) GetAlive ¶
func (m *MembershipResponse) GetAlive() []*Envelope
func (*MembershipResponse) GetDead ¶
func (m *MembershipResponse) GetDead() []*Envelope
func (*MembershipResponse) ProtoMessage ¶
func (*MembershipResponse) ProtoMessage()
func (*MembershipResponse) Reset ¶
func (m *MembershipResponse) Reset()
func (*MembershipResponse) String ¶
func (m *MembershipResponse) String() string
type MsgConsumer ¶
type MsgConsumer func(message *SignedGossipMessage)
MsgConsumer invokes code given a SignedGossipMessage
type Payload ¶
type Payload struct { SeqNum uint64 `protobuf:"varint,1,opt,name=seq_num,json=seqNum" json:"seq_num,omitempty"` Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` }
Payload contains a block
func (*Payload) Descriptor ¶
func (*Payload) ProtoMessage ¶
func (*Payload) ProtoMessage()
type PeerIdentity ¶
type PeerIdentity struct { PkiId []byte `protobuf:"bytes,1,opt,name=pki_id,json=pkiId,proto3" json:"pki_id,omitempty"` Cert []byte `protobuf:"bytes,2,opt,name=cert,proto3" json:"cert,omitempty"` Metadata []byte `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"` }
PeerIdentity defines the identity of the peer Used to make other peers learn of the identity of a certain peer
func (*PeerIdentity) Descriptor ¶
func (*PeerIdentity) Descriptor() ([]byte, []int)
func (*PeerIdentity) GetCert ¶
func (m *PeerIdentity) GetCert() []byte
func (*PeerIdentity) GetMetadata ¶
func (m *PeerIdentity) GetMetadata() []byte
func (*PeerIdentity) GetPkiId ¶
func (m *PeerIdentity) GetPkiId() []byte
func (*PeerIdentity) ProtoMessage ¶
func (*PeerIdentity) ProtoMessage()
func (*PeerIdentity) Reset ¶
func (m *PeerIdentity) Reset()
func (*PeerIdentity) String ¶
func (m *PeerIdentity) String() string
type PeerTime ¶
type PeerTime struct { IncNum uint64 `protobuf:"varint,1,opt,name=inc_num,json=incNum" json:"inc_num,omitempty"` SeqNum uint64 `protobuf:"varint,2,opt,name=seq_num,json=seqNum" json:"seq_num,omitempty"` }
PeerTime defines the logical time of a peer's life
func (*PeerTime) Descriptor ¶
func (*PeerTime) ProtoMessage ¶
func (*PeerTime) ProtoMessage()
type PullMsgType ¶
type PullMsgType int32
const ( PullMsgType_UNDEFINED PullMsgType = 0 PullMsgType_BLOCK_MSG PullMsgType = 1 PullMsgType_IDENTITY_MSG PullMsgType = 2 )
func (PullMsgType) EnumDescriptor ¶
func (PullMsgType) EnumDescriptor() ([]byte, []int)
func (PullMsgType) String ¶
func (x PullMsgType) String() string
type ReceivedMessage ¶
type ReceivedMessage interface { // Respond sends a GossipMessage to the origin from which this ReceivedMessage was sent from Respond(msg *GossipMessage) // GetGossipMessage returns the underlying GossipMessage GetGossipMessage() *SignedGossipMessage // GetSourceMessage Returns the Envelope the ReceivedMessage was // constructed with GetSourceEnvelope() *Envelope // GetConnectionInfo returns information about the remote peer // that sent the message GetConnectionInfo() *ConnectionInfo }
ReceivedMessage is a GossipMessage wrapper that enables the user to send a message to the origin from which the ReceivedMessage was sent from. It also allows to know the identity of the sender, to obtain the raw bytes the GossipMessage was un-marshaled from, and the signature over these raw bytes.
type RemoteStateRequest ¶
type RemoteStateRequest struct { StartSeqNum uint64 `protobuf:"varint,1,opt,name=start_seq_num,json=startSeqNum" json:"start_seq_num,omitempty"` EndSeqNum uint64 `protobuf:"varint,2,opt,name=end_seq_num,json=endSeqNum" json:"end_seq_num,omitempty"` }
RemoteStateRequest is used to ask a set of blocks from a remote peer
func (*RemoteStateRequest) Descriptor ¶
func (*RemoteStateRequest) Descriptor() ([]byte, []int)
func (*RemoteStateRequest) GetEndSeqNum ¶
func (m *RemoteStateRequest) GetEndSeqNum() uint64
func (*RemoteStateRequest) GetStartSeqNum ¶
func (m *RemoteStateRequest) GetStartSeqNum() uint64
func (*RemoteStateRequest) ProtoMessage ¶
func (*RemoteStateRequest) ProtoMessage()
func (*RemoteStateRequest) Reset ¶
func (m *RemoteStateRequest) Reset()
func (*RemoteStateRequest) String ¶
func (m *RemoteStateRequest) String() string
type RemoteStateResponse ¶
type RemoteStateResponse struct {
Payloads []*Payload `protobuf:"bytes,1,rep,name=payloads" json:"payloads,omitempty"`
}
RemoteStateResponse is used to send a set of blocks to a remote peer
func (*RemoteStateResponse) Descriptor ¶
func (*RemoteStateResponse) Descriptor() ([]byte, []int)
func (*RemoteStateResponse) GetPayloads ¶
func (m *RemoteStateResponse) GetPayloads() []*Payload
func (*RemoteStateResponse) ProtoMessage ¶
func (*RemoteStateResponse) ProtoMessage()
func (*RemoteStateResponse) Reset ¶
func (m *RemoteStateResponse) Reset()
func (*RemoteStateResponse) String ¶
func (m *RemoteStateResponse) String() string
type Secret ¶
type Secret struct { // Types that are valid to be assigned to Content: // *Secret_InternalEndpoint Content isSecret_Content `protobuf_oneof:"content"` }
Secret is an entity that might be omitted from an Envelope when the remote peer that is receiving the Envelope shouldn't know the secret's content.
func (*Secret) Descriptor ¶
func (*Secret) GetContent ¶
func (m *Secret) GetContent() isSecret_Content
func (*Secret) GetInternalEndpoint ¶
func (*Secret) ProtoMessage ¶
func (*Secret) ProtoMessage()
type SecretEnvelope ¶
type SecretEnvelope struct { Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` }
SecretEnvelope is a marshalled Secret and a signature over it. The signature should be validated by the peer that signed the Envelope the SecretEnvelope came with
func (*SecretEnvelope) Descriptor ¶
func (*SecretEnvelope) Descriptor() ([]byte, []int)
func (*SecretEnvelope) GetPayload ¶
func (m *SecretEnvelope) GetPayload() []byte
func (*SecretEnvelope) GetSignature ¶
func (m *SecretEnvelope) GetSignature() []byte
func (*SecretEnvelope) InternalEndpoint ¶
func (s *SecretEnvelope) InternalEndpoint() string
InternalEndpoint returns the internal endpoint in the secret envelope, or an empty string if a failure occurs.
func (*SecretEnvelope) ProtoMessage ¶
func (*SecretEnvelope) ProtoMessage()
func (*SecretEnvelope) Reset ¶
func (m *SecretEnvelope) Reset()
func (*SecretEnvelope) String ¶
func (m *SecretEnvelope) String() string
type Secret_InternalEndpoint ¶
type Secret_InternalEndpoint struct {
InternalEndpoint string `protobuf:"bytes,1,opt,name=internalEndpoint,oneof"`
}
type SignedGossipMessage ¶
type SignedGossipMessage struct { *Envelope *GossipMessage }
SignedGossipMessage contains a GossipMessage and the Envelope from which it came from
func (*SignedGossipMessage) IsSigned ¶
func (m *SignedGossipMessage) IsSigned() bool
IsSigned returns whether the message has a signature in the envelope.
func (*SignedGossipMessage) Sign ¶
func (m *SignedGossipMessage) Sign(signer Signer) (*Envelope, error)
Sign signs a GossipMessage with given Signer. Returns an Envelope on success, panics on failure.
func (*SignedGossipMessage) String ¶
func (m *SignedGossipMessage) String() string
String returns a string representation of a SignedGossipMessage
type Signer ¶
Signer signs a message, and returns (signature, nil) on success, and nil and an error on failure.
type StateInfo ¶
type StateInfo struct { Metadata []byte `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` Timestamp *PeerTime `protobuf:"bytes,2,opt,name=timestamp" json:"timestamp,omitempty"` PkiId []byte `protobuf:"bytes,3,opt,name=pki_id,json=pkiId,proto3" json:"pki_id,omitempty"` // channel_MAC is an authentication code that proves // that the peer that sent this message knows // the name of the channel. Channel_MAC []byte `protobuf:"bytes,4,opt,name=channel_MAC,json=channelMAC,proto3" json:"channel_MAC,omitempty"` }
StateInfo is used for a peer to relay its state information to other peers
func (*StateInfo) Descriptor ¶
func (*StateInfo) GetChannel_MAC ¶
func (*StateInfo) GetMetadata ¶
func (*StateInfo) GetTimestamp ¶
func (*StateInfo) ProtoMessage ¶
func (*StateInfo) ProtoMessage()
type StateInfoPullRequest ¶
type StateInfoPullRequest struct { // channel_MAC is an authentication code that proves // that the peer that sent this message knows // the name of the channel. Channel_MAC []byte `protobuf:"bytes,1,opt,name=channel_MAC,json=channelMAC,proto3" json:"channel_MAC,omitempty"` }
StateInfoPullRequest is used to fetch a StateInfoSnapshot from a remote peer
func (*StateInfoPullRequest) Descriptor ¶
func (*StateInfoPullRequest) Descriptor() ([]byte, []int)
func (*StateInfoPullRequest) GetChannel_MAC ¶
func (m *StateInfoPullRequest) GetChannel_MAC() []byte
func (*StateInfoPullRequest) ProtoMessage ¶
func (*StateInfoPullRequest) ProtoMessage()
func (*StateInfoPullRequest) Reset ¶
func (m *StateInfoPullRequest) Reset()
func (*StateInfoPullRequest) String ¶
func (m *StateInfoPullRequest) String() string
type StateInfoSnapshot ¶
type StateInfoSnapshot struct {
Elements []*Envelope `protobuf:"bytes,1,rep,name=elements" json:"elements,omitempty"`
}
StateInfoSnapshot is an aggregation of StateInfo messages
func (*StateInfoSnapshot) Descriptor ¶
func (*StateInfoSnapshot) Descriptor() ([]byte, []int)
func (*StateInfoSnapshot) GetElements ¶
func (m *StateInfoSnapshot) GetElements() []*Envelope
func (*StateInfoSnapshot) ProtoMessage ¶
func (*StateInfoSnapshot) ProtoMessage()
func (*StateInfoSnapshot) Reset ¶
func (m *StateInfoSnapshot) Reset()
func (*StateInfoSnapshot) String ¶
func (m *StateInfoSnapshot) String() string