1 Star 0 Fork 0

妥協/fabric

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
message.pb.go 71.08 KB
一键复制 编辑 原始数据 按行查看 历史
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: gossip/message.proto
/*
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
Properties
StateInfoSnapshot
StateInfoPullRequest
ConnEstablish
PeerIdentity
DataRequest
GossipHello
DataUpdate
DataDigest
DataMessage
PrivateDataMessage
Payload
PrivatePayload
AliveMessage
LeadershipMessage
PeerTime
MembershipRequest
MembershipResponse
Member
Empty
RemoteStateRequest
RemoteStateResponse
RemotePvtDataRequest
PvtDataDigest
RemotePvtDataResponse
PvtDataElement
PvtDataPayload
Acknowledgement
*/
package gossip
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import (
context "golang.org/x/net/context"
grpc "google.golang.org/grpc"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
type PullMsgType int32
const (
PullMsgType_UNDEFINED PullMsgType = 0
PullMsgType_BLOCK_MSG PullMsgType = 1
PullMsgType_IDENTITY_MSG PullMsgType = 2
)
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,
}
func (x PullMsgType) String() string {
return proto.EnumName(PullMsgType_name, int32(x))
}
func (PullMsgType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
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
)
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,
}
func (x GossipMessage_Tag) String() string {
return proto.EnumName(GossipMessage_Tag_name, int32(x))
}
func (GossipMessage_Tag) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{3, 0} }
// Envelope contains a marshalled
// GossipMessage and a signature over it.
// It may also contain a SecretEnvelope
// which is a marshalled Secret
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"`
}
func (m *Envelope) Reset() { *m = Envelope{} }
func (m *Envelope) String() string { return proto.CompactTextString(m) }
func (*Envelope) ProtoMessage() {}
func (*Envelope) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
func (m *Envelope) GetPayload() []byte {
if m != nil {
return m.Payload
}
return nil
}
func (m *Envelope) GetSignature() []byte {
if m != nil {
return m.Signature
}
return nil
}
func (m *Envelope) GetSecretEnvelope() *SecretEnvelope {
if m != nil {
return m.SecretEnvelope
}
return nil
}
// 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
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"`
}
func (m *SecretEnvelope) Reset() { *m = SecretEnvelope{} }
func (m *SecretEnvelope) String() string { return proto.CompactTextString(m) }
func (*SecretEnvelope) ProtoMessage() {}
func (*SecretEnvelope) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
func (m *SecretEnvelope) GetPayload() []byte {
if m != nil {
return m.Payload
}
return nil
}
func (m *SecretEnvelope) GetSignature() []byte {
if m != nil {
return m.Signature
}
return nil
}
// 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.
type Secret struct {
// Types that are valid to be assigned to Content:
// *Secret_InternalEndpoint
Content isSecret_Content `protobuf_oneof:"content"`
}
func (m *Secret) Reset() { *m = Secret{} }
func (m *Secret) String() string { return proto.CompactTextString(m) }
func (*Secret) ProtoMessage() {}
func (*Secret) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
type isSecret_Content interface {
isSecret_Content()
}
type Secret_InternalEndpoint struct {
InternalEndpoint string `protobuf:"bytes,1,opt,name=internalEndpoint,oneof"`
}
func (*Secret_InternalEndpoint) isSecret_Content() {}
func (m *Secret) GetContent() isSecret_Content {
if m != nil {
return m.Content
}
return nil
}
func (m *Secret) GetInternalEndpoint() string {
if x, ok := m.GetContent().(*Secret_InternalEndpoint); ok {
return x.InternalEndpoint
}
return ""
}
// XXX_OneofFuncs is for the internal use of the proto package.
func (*Secret) 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{}) {
return _Secret_OneofMarshaler, _Secret_OneofUnmarshaler, _Secret_OneofSizer, []interface{}{
(*Secret_InternalEndpoint)(nil),
}
}
func _Secret_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
m := msg.(*Secret)
// content
switch x := m.Content.(type) {
case *Secret_InternalEndpoint:
b.EncodeVarint(1<<3 | proto.WireBytes)
b.EncodeStringBytes(x.InternalEndpoint)
case nil:
default:
return fmt.Errorf("Secret.Content has unexpected type %T", x)
}
return nil
}
func _Secret_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
m := msg.(*Secret)
switch tag {
case 1: // content.internalEndpoint
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
x, err := b.DecodeStringBytes()
m.Content = &Secret_InternalEndpoint{x}
return true, err
default:
return false, nil
}
}
func _Secret_OneofSizer(msg proto.Message) (n int) {
m := msg.(*Secret)
// content
switch x := m.Content.(type) {
case *Secret_InternalEndpoint:
n += proto.SizeVarint(1<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(len(x.InternalEndpoint)))
n += len(x.InternalEndpoint)
case nil:
default:
panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
}
return n
}
// GossipMessage defines the message sent in a gossip network
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
// *GossipMessage_Ack
// *GossipMessage_PrivateReq
// *GossipMessage_PrivateRes
// *GossipMessage_PrivateData
Content isGossipMessage_Content `protobuf_oneof:"content"`
}
func (m *GossipMessage) Reset() { *m = GossipMessage{} }
func (m *GossipMessage) String() string { return proto.CompactTextString(m) }
func (*GossipMessage) ProtoMessage() {}
func (*GossipMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
type isGossipMessage_Content interface {
isGossipMessage_Content()
}
type GossipMessage_AliveMsg struct {
AliveMsg *AliveMessage `protobuf:"bytes,5,opt,name=alive_msg,json=aliveMsg,oneof"`
}
type GossipMessage_MemReq struct {
MemReq *MembershipRequest `protobuf:"bytes,6,opt,name=mem_req,json=memReq,oneof"`
}
type GossipMessage_MemRes struct {
MemRes *MembershipResponse `protobuf:"bytes,7,opt,name=mem_res,json=memRes,oneof"`
}
type GossipMessage_DataMsg struct {
DataMsg *DataMessage `protobuf:"bytes,8,opt,name=data_msg,json=dataMsg,oneof"`
}
type GossipMessage_Hello struct {
Hello *GossipHello `protobuf:"bytes,9,opt,name=hello,oneof"`
}
type GossipMessage_DataDig struct {
DataDig *DataDigest `protobuf:"bytes,10,opt,name=data_dig,json=dataDig,oneof"`
}
type GossipMessage_DataReq struct {
DataReq *DataRequest `protobuf:"bytes,11,opt,name=data_req,json=dataReq,oneof"`
}
type GossipMessage_DataUpdate struct {
DataUpdate *DataUpdate `protobuf:"bytes,12,opt,name=data_update,json=dataUpdate,oneof"`
}
type GossipMessage_Empty struct {
Empty *Empty `protobuf:"bytes,13,opt,name=empty,oneof"`
}
type GossipMessage_Conn struct {
Conn *ConnEstablish `protobuf:"bytes,14,opt,name=conn,oneof"`
}
type GossipMessage_StateInfo struct {
StateInfo *StateInfo `protobuf:"bytes,15,opt,name=state_info,json=stateInfo,oneof"`
}
type GossipMessage_StateSnapshot struct {
StateSnapshot *StateInfoSnapshot `protobuf:"bytes,16,opt,name=state_snapshot,json=stateSnapshot,oneof"`
}
type GossipMessage_StateInfoPullReq struct {
StateInfoPullReq *StateInfoPullRequest `protobuf:"bytes,17,opt,name=state_info_pull_req,json=stateInfoPullReq,oneof"`
}
type GossipMessage_StateRequest struct {
StateRequest *RemoteStateRequest `protobuf:"bytes,18,opt,name=state_request,json=stateRequest,oneof"`
}
type GossipMessage_StateResponse struct {
StateResponse *RemoteStateResponse `protobuf:"bytes,19,opt,name=state_response,json=stateResponse,oneof"`
}
type GossipMessage_LeadershipMsg struct {
LeadershipMsg *LeadershipMessage `protobuf:"bytes,20,opt,name=leadership_msg,json=leadershipMsg,oneof"`
}
type GossipMessage_PeerIdentity struct {
PeerIdentity *PeerIdentity `protobuf:"bytes,21,opt,name=peer_identity,json=peerIdentity,oneof"`
}
type GossipMessage_Ack struct {
Ack *Acknowledgement `protobuf:"bytes,22,opt,name=ack,oneof"`
}
type GossipMessage_PrivateReq struct {
PrivateReq *RemotePvtDataRequest `protobuf:"bytes,23,opt,name=privateReq,oneof"`
}
type GossipMessage_PrivateRes struct {
PrivateRes *RemotePvtDataResponse `protobuf:"bytes,24,opt,name=privateRes,oneof"`
}
type GossipMessage_PrivateData struct {
PrivateData *PrivateDataMessage `protobuf:"bytes,25,opt,name=private_data,json=privateData,oneof"`
}
func (*GossipMessage_AliveMsg) isGossipMessage_Content() {}
func (*GossipMessage_MemReq) isGossipMessage_Content() {}
func (*GossipMessage_MemRes) isGossipMessage_Content() {}
func (*GossipMessage_DataMsg) isGossipMessage_Content() {}
func (*GossipMessage_Hello) isGossipMessage_Content() {}
func (*GossipMessage_DataDig) isGossipMessage_Content() {}
func (*GossipMessage_DataReq) isGossipMessage_Content() {}
func (*GossipMessage_DataUpdate) isGossipMessage_Content() {}
func (*GossipMessage_Empty) isGossipMessage_Content() {}
func (*GossipMessage_Conn) isGossipMessage_Content() {}
func (*GossipMessage_StateInfo) isGossipMessage_Content() {}
func (*GossipMessage_StateSnapshot) isGossipMessage_Content() {}
func (*GossipMessage_StateInfoPullReq) isGossipMessage_Content() {}
func (*GossipMessage_StateRequest) isGossipMessage_Content() {}
func (*GossipMessage_StateResponse) isGossipMessage_Content() {}
func (*GossipMessage_LeadershipMsg) isGossipMessage_Content() {}
func (*GossipMessage_PeerIdentity) isGossipMessage_Content() {}
func (*GossipMessage_Ack) isGossipMessage_Content() {}
func (*GossipMessage_PrivateReq) isGossipMessage_Content() {}
func (*GossipMessage_PrivateRes) isGossipMessage_Content() {}
func (*GossipMessage_PrivateData) isGossipMessage_Content() {}
func (m *GossipMessage) GetContent() isGossipMessage_Content {
if m != nil {
return m.Content
}
return nil
}
func (m *GossipMessage) GetNonce() uint64 {
if m != nil {
return m.Nonce
}
return 0
}
func (m *GossipMessage) GetChannel() []byte {
if m != nil {
return m.Channel
}
return nil
}
func (m *GossipMessage) GetTag() GossipMessage_Tag {
if m != nil {
return m.Tag
}
return GossipMessage_UNDEFINED
}
func (m *GossipMessage) GetAliveMsg() *AliveMessage {
if x, ok := m.GetContent().(*GossipMessage_AliveMsg); ok {
return x.AliveMsg
}
return nil
}
func (m *GossipMessage) GetMemReq() *MembershipRequest {
if x, ok := m.GetContent().(*GossipMessage_MemReq); ok {
return x.MemReq
}
return nil
}
func (m *GossipMessage) GetMemRes() *MembershipResponse {
if x, ok := m.GetContent().(*GossipMessage_MemRes); ok {
return x.MemRes
}
return nil
}
func (m *GossipMessage) GetDataMsg() *DataMessage {
if x, ok := m.GetContent().(*GossipMessage_DataMsg); ok {
return x.DataMsg
}
return nil
}
func (m *GossipMessage) GetHello() *GossipHello {
if x, ok := m.GetContent().(*GossipMessage_Hello); ok {
return x.Hello
}
return nil
}
func (m *GossipMessage) GetDataDig() *DataDigest {
if x, ok := m.GetContent().(*GossipMessage_DataDig); ok {
return x.DataDig
}
return nil
}
func (m *GossipMessage) GetDataReq() *DataRequest {
if x, ok := m.GetContent().(*GossipMessage_DataReq); ok {
return x.DataReq
}
return nil
}
func (m *GossipMessage) GetDataUpdate() *DataUpdate {
if x, ok := m.GetContent().(*GossipMessage_DataUpdate); ok {
return x.DataUpdate
}
return nil
}
func (m *GossipMessage) GetEmpty() *Empty {
if x, ok := m.GetContent().(*GossipMessage_Empty); ok {
return x.Empty
}
return nil
}
func (m *GossipMessage) GetConn() *ConnEstablish {
if x, ok := m.GetContent().(*GossipMessage_Conn); ok {
return x.Conn
}
return nil
}
func (m *GossipMessage) GetStateInfo() *StateInfo {
if x, ok := m.GetContent().(*GossipMessage_StateInfo); ok {
return x.StateInfo
}
return nil
}
func (m *GossipMessage) GetStateSnapshot() *StateInfoSnapshot {
if x, ok := m.GetContent().(*GossipMessage_StateSnapshot); ok {
return x.StateSnapshot
}
return nil
}
func (m *GossipMessage) GetStateInfoPullReq() *StateInfoPullRequest {
if x, ok := m.GetContent().(*GossipMessage_StateInfoPullReq); ok {
return x.StateInfoPullReq
}
return nil
}
func (m *GossipMessage) GetStateRequest() *RemoteStateRequest {
if x, ok := m.GetContent().(*GossipMessage_StateRequest); ok {
return x.StateRequest
}
return nil
}
func (m *GossipMessage) GetStateResponse() *RemoteStateResponse {
if x, ok := m.GetContent().(*GossipMessage_StateResponse); ok {
return x.StateResponse
}
return nil
}
func (m *GossipMessage) GetLeadershipMsg() *LeadershipMessage {
if x, ok := m.GetContent().(*GossipMessage_LeadershipMsg); ok {
return x.LeadershipMsg
}
return nil
}
func (m *GossipMessage) GetPeerIdentity() *PeerIdentity {
if x, ok := m.GetContent().(*GossipMessage_PeerIdentity); ok {
return x.PeerIdentity
}
return nil
}
func (m *GossipMessage) GetAck() *Acknowledgement {
if x, ok := m.GetContent().(*GossipMessage_Ack); ok {
return x.Ack
}
return nil
}
func (m *GossipMessage) GetPrivateReq() *RemotePvtDataRequest {
if x, ok := m.GetContent().(*GossipMessage_PrivateReq); ok {
return x.PrivateReq
}
return nil
}
func (m *GossipMessage) GetPrivateRes() *RemotePvtDataResponse {
if x, ok := m.GetContent().(*GossipMessage_PrivateRes); ok {
return x.PrivateRes
}
return nil
}
func (m *GossipMessage) GetPrivateData() *PrivateDataMessage {
if x, ok := m.GetContent().(*GossipMessage_PrivateData); ok {
return x.PrivateData
}
return nil
}
// XXX_OneofFuncs is for the internal use of the proto package.
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{}) {
return _GossipMessage_OneofMarshaler, _GossipMessage_OneofUnmarshaler, _GossipMessage_OneofSizer, []interface{}{
(*GossipMessage_AliveMsg)(nil),
(*GossipMessage_MemReq)(nil),
(*GossipMessage_MemRes)(nil),
(*GossipMessage_DataMsg)(nil),
(*GossipMessage_Hello)(nil),
(*GossipMessage_DataDig)(nil),
(*GossipMessage_DataReq)(nil),
(*GossipMessage_DataUpdate)(nil),
(*GossipMessage_Empty)(nil),
(*GossipMessage_Conn)(nil),
(*GossipMessage_StateInfo)(nil),
(*GossipMessage_StateSnapshot)(nil),
(*GossipMessage_StateInfoPullReq)(nil),
(*GossipMessage_StateRequest)(nil),
(*GossipMessage_StateResponse)(nil),
(*GossipMessage_LeadershipMsg)(nil),
(*GossipMessage_PeerIdentity)(nil),
(*GossipMessage_Ack)(nil),
(*GossipMessage_PrivateReq)(nil),
(*GossipMessage_PrivateRes)(nil),
(*GossipMessage_PrivateData)(nil),
}
}
func _GossipMessage_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
m := msg.(*GossipMessage)
// content
switch x := m.Content.(type) {
case *GossipMessage_AliveMsg:
b.EncodeVarint(5<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.AliveMsg); err != nil {
return err
}
case *GossipMessage_MemReq:
b.EncodeVarint(6<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.MemReq); err != nil {
return err
}
case *GossipMessage_MemRes:
b.EncodeVarint(7<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.MemRes); err != nil {
return err
}
case *GossipMessage_DataMsg:
b.EncodeVarint(8<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.DataMsg); err != nil {
return err
}
case *GossipMessage_Hello:
b.EncodeVarint(9<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.Hello); err != nil {
return err
}
case *GossipMessage_DataDig:
b.EncodeVarint(10<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.DataDig); err != nil {
return err
}
case *GossipMessage_DataReq:
b.EncodeVarint(11<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.DataReq); err != nil {
return err
}
case *GossipMessage_DataUpdate:
b.EncodeVarint(12<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.DataUpdate); err != nil {
return err
}
case *GossipMessage_Empty:
b.EncodeVarint(13<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.Empty); err != nil {
return err
}
case *GossipMessage_Conn:
b.EncodeVarint(14<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.Conn); err != nil {
return err
}
case *GossipMessage_StateInfo:
b.EncodeVarint(15<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.StateInfo); err != nil {
return err
}
case *GossipMessage_StateSnapshot:
b.EncodeVarint(16<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.StateSnapshot); err != nil {
return err
}
case *GossipMessage_StateInfoPullReq:
b.EncodeVarint(17<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.StateInfoPullReq); err != nil {
return err
}
case *GossipMessage_StateRequest:
b.EncodeVarint(18<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.StateRequest); err != nil {
return err
}
case *GossipMessage_StateResponse:
b.EncodeVarint(19<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.StateResponse); err != nil {
return err
}
case *GossipMessage_LeadershipMsg:
b.EncodeVarint(20<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.LeadershipMsg); err != nil {
return err
}
case *GossipMessage_PeerIdentity:
b.EncodeVarint(21<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.PeerIdentity); err != nil {
return err
}
case *GossipMessage_Ack:
b.EncodeVarint(22<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.Ack); err != nil {
return err
}
case *GossipMessage_PrivateReq:
b.EncodeVarint(23<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.PrivateReq); err != nil {
return err
}
case *GossipMessage_PrivateRes:
b.EncodeVarint(24<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.PrivateRes); err != nil {
return err
}
case *GossipMessage_PrivateData:
b.EncodeVarint(25<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.PrivateData); err != nil {
return err
}
case nil:
default:
return fmt.Errorf("GossipMessage.Content has unexpected type %T", x)
}
return nil
}
func _GossipMessage_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
m := msg.(*GossipMessage)
switch tag {
case 5: // content.alive_msg
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(AliveMessage)
err := b.DecodeMessage(msg)
m.Content = &GossipMessage_AliveMsg{msg}
return true, err
case 6: // content.mem_req
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(MembershipRequest)
err := b.DecodeMessage(msg)
m.Content = &GossipMessage_MemReq{msg}
return true, err
case 7: // content.mem_res
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(MembershipResponse)
err := b.DecodeMessage(msg)
m.Content = &GossipMessage_MemRes{msg}
return true, err
case 8: // content.data_msg
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(DataMessage)
err := b.DecodeMessage(msg)
m.Content = &GossipMessage_DataMsg{msg}
return true, err
case 9: // content.hello
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(GossipHello)
err := b.DecodeMessage(msg)
m.Content = &GossipMessage_Hello{msg}
return true, err
case 10: // content.data_dig
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(DataDigest)
err := b.DecodeMessage(msg)
m.Content = &GossipMessage_DataDig{msg}
return true, err
case 11: // content.data_req
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(DataRequest)
err := b.DecodeMessage(msg)
m.Content = &GossipMessage_DataReq{msg}
return true, err
case 12: // content.data_update
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(DataUpdate)
err := b.DecodeMessage(msg)
m.Content = &GossipMessage_DataUpdate{msg}
return true, err
case 13: // content.empty
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(Empty)
err := b.DecodeMessage(msg)
m.Content = &GossipMessage_Empty{msg}
return true, err
case 14: // content.conn
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(ConnEstablish)
err := b.DecodeMessage(msg)
m.Content = &GossipMessage_Conn{msg}
return true, err
case 15: // content.state_info
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(StateInfo)
err := b.DecodeMessage(msg)
m.Content = &GossipMessage_StateInfo{msg}
return true, err
case 16: // content.state_snapshot
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(StateInfoSnapshot)
err := b.DecodeMessage(msg)
m.Content = &GossipMessage_StateSnapshot{msg}
return true, err
case 17: // content.state_info_pull_req
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(StateInfoPullRequest)
err := b.DecodeMessage(msg)
m.Content = &GossipMessage_StateInfoPullReq{msg}
return true, err
case 18: // content.state_request
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(RemoteStateRequest)
err := b.DecodeMessage(msg)
m.Content = &GossipMessage_StateRequest{msg}
return true, err
case 19: // content.state_response
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(RemoteStateResponse)
err := b.DecodeMessage(msg)
m.Content = &GossipMessage_StateResponse{msg}
return true, err
case 20: // content.leadership_msg
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(LeadershipMessage)
err := b.DecodeMessage(msg)
m.Content = &GossipMessage_LeadershipMsg{msg}
return true, err
case 21: // content.peer_identity
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(PeerIdentity)
err := b.DecodeMessage(msg)
m.Content = &GossipMessage_PeerIdentity{msg}
return true, err
case 22: // content.ack
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(Acknowledgement)
err := b.DecodeMessage(msg)
m.Content = &GossipMessage_Ack{msg}
return true, err
case 23: // content.privateReq
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(RemotePvtDataRequest)
err := b.DecodeMessage(msg)
m.Content = &GossipMessage_PrivateReq{msg}
return true, err
case 24: // content.privateRes
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(RemotePvtDataResponse)
err := b.DecodeMessage(msg)
m.Content = &GossipMessage_PrivateRes{msg}
return true, err
case 25: // content.private_data
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(PrivateDataMessage)
err := b.DecodeMessage(msg)
m.Content = &GossipMessage_PrivateData{msg}
return true, err
default:
return false, nil
}
}
func _GossipMessage_OneofSizer(msg proto.Message) (n int) {
m := msg.(*GossipMessage)
// content
switch x := m.Content.(type) {
case *GossipMessage_AliveMsg:
s := proto.Size(x.AliveMsg)
n += proto.SizeVarint(5<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *GossipMessage_MemReq:
s := proto.Size(x.MemReq)
n += proto.SizeVarint(6<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *GossipMessage_MemRes:
s := proto.Size(x.MemRes)
n += proto.SizeVarint(7<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *GossipMessage_DataMsg:
s := proto.Size(x.DataMsg)
n += proto.SizeVarint(8<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *GossipMessage_Hello:
s := proto.Size(x.Hello)
n += proto.SizeVarint(9<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *GossipMessage_DataDig:
s := proto.Size(x.DataDig)
n += proto.SizeVarint(10<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *GossipMessage_DataReq:
s := proto.Size(x.DataReq)
n += proto.SizeVarint(11<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *GossipMessage_DataUpdate:
s := proto.Size(x.DataUpdate)
n += proto.SizeVarint(12<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *GossipMessage_Empty:
s := proto.Size(x.Empty)
n += proto.SizeVarint(13<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *GossipMessage_Conn:
s := proto.Size(x.Conn)
n += proto.SizeVarint(14<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *GossipMessage_StateInfo:
s := proto.Size(x.StateInfo)
n += proto.SizeVarint(15<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *GossipMessage_StateSnapshot:
s := proto.Size(x.StateSnapshot)
n += proto.SizeVarint(16<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *GossipMessage_StateInfoPullReq:
s := proto.Size(x.StateInfoPullReq)
n += proto.SizeVarint(17<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *GossipMessage_StateRequest:
s := proto.Size(x.StateRequest)
n += proto.SizeVarint(18<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *GossipMessage_StateResponse:
s := proto.Size(x.StateResponse)
n += proto.SizeVarint(19<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *GossipMessage_LeadershipMsg:
s := proto.Size(x.LeadershipMsg)
n += proto.SizeVarint(20<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *GossipMessage_PeerIdentity:
s := proto.Size(x.PeerIdentity)
n += proto.SizeVarint(21<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *GossipMessage_Ack:
s := proto.Size(x.Ack)
n += proto.SizeVarint(22<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *GossipMessage_PrivateReq:
s := proto.Size(x.PrivateReq)
n += proto.SizeVarint(23<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *GossipMessage_PrivateRes:
s := proto.Size(x.PrivateRes)
n += proto.SizeVarint(24<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *GossipMessage_PrivateData:
s := proto.Size(x.PrivateData)
n += proto.SizeVarint(25<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case nil:
default:
panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
}
return n
}
// StateInfo is used for a peer to relay its state information
// to other peers
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"`
Properties *Properties `protobuf:"bytes,5,opt,name=properties" json:"properties,omitempty"`
}
func (m *StateInfo) Reset() { *m = StateInfo{} }
func (m *StateInfo) String() string { return proto.CompactTextString(m) }
func (*StateInfo) ProtoMessage() {}
func (*StateInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
func (m *StateInfo) GetMetadata() []byte {
if m != nil {
return m.Metadata
}
return nil
}
func (m *StateInfo) GetTimestamp() *PeerTime {
if m != nil {
return m.Timestamp
}
return nil
}
func (m *StateInfo) GetPkiId() []byte {
if m != nil {
return m.PkiId
}
return nil
}
func (m *StateInfo) GetChannel_MAC() []byte {
if m != nil {
return m.Channel_MAC
}
return nil
}
func (m *StateInfo) GetProperties() *Properties {
if m != nil {
return m.Properties
}
return nil
}
type Properties struct {
LedgerHeight uint64 `protobuf:"varint,1,opt,name=ledger_height,json=ledgerHeight" json:"ledger_height,omitempty"`
LeftChannel bool `protobuf:"varint,2,opt,name=left_channel,json=leftChannel" json:"left_channel,omitempty"`
}
func (m *Properties) Reset() { *m = Properties{} }
func (m *Properties) String() string { return proto.CompactTextString(m) }
func (*Properties) ProtoMessage() {}
func (*Properties) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
func (m *Properties) GetLedgerHeight() uint64 {
if m != nil {
return m.LedgerHeight
}
return 0
}
func (m *Properties) GetLeftChannel() bool {
if m != nil {
return m.LeftChannel
}
return false
}
// StateInfoSnapshot is an aggregation of StateInfo messages
type StateInfoSnapshot struct {
Elements []*Envelope `protobuf:"bytes,1,rep,name=elements" json:"elements,omitempty"`
}
func (m *StateInfoSnapshot) Reset() { *m = StateInfoSnapshot{} }
func (m *StateInfoSnapshot) String() string { return proto.CompactTextString(m) }
func (*StateInfoSnapshot) ProtoMessage() {}
func (*StateInfoSnapshot) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
func (m *StateInfoSnapshot) GetElements() []*Envelope {
if m != nil {
return m.Elements
}
return nil
}
// StateInfoPullRequest is used to fetch a StateInfoSnapshot
// from a remote peer
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"`
}
func (m *StateInfoPullRequest) Reset() { *m = StateInfoPullRequest{} }
func (m *StateInfoPullRequest) String() string { return proto.CompactTextString(m) }
func (*StateInfoPullRequest) ProtoMessage() {}
func (*StateInfoPullRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
func (m *StateInfoPullRequest) GetChannel_MAC() []byte {
if m != nil {
return m.Channel_MAC
}
return nil
}
// 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
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"`
}
func (m *ConnEstablish) Reset() { *m = ConnEstablish{} }
func (m *ConnEstablish) String() string { return proto.CompactTextString(m) }
func (*ConnEstablish) ProtoMessage() {}
func (*ConnEstablish) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
func (m *ConnEstablish) GetPkiId() []byte {
if m != nil {
return m.PkiId
}
return nil
}
func (m *ConnEstablish) GetIdentity() []byte {
if m != nil {
return m.Identity
}
return nil
}
func (m *ConnEstablish) GetTlsCertHash() []byte {
if m != nil {
return m.TlsCertHash
}
return nil
}
// PeerIdentity defines the identity of the peer
// Used to make other peers learn of the identity
// of a certain peer
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"`
}
func (m *PeerIdentity) Reset() { *m = PeerIdentity{} }
func (m *PeerIdentity) String() string { return proto.CompactTextString(m) }
func (*PeerIdentity) ProtoMessage() {}
func (*PeerIdentity) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
func (m *PeerIdentity) GetPkiId() []byte {
if m != nil {
return m.PkiId
}
return nil
}
func (m *PeerIdentity) GetCert() []byte {
if m != nil {
return m.Cert
}
return nil
}
func (m *PeerIdentity) GetMetadata() []byte {
if m != nil {
return m.Metadata
}
return nil
}
// DataRequest is a message used for a peer to request
// certain data blocks from a remote peer
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"`
}
func (m *DataRequest) Reset() { *m = DataRequest{} }
func (m *DataRequest) String() string { return proto.CompactTextString(m) }
func (*DataRequest) ProtoMessage() {}
func (*DataRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
func (m *DataRequest) GetNonce() uint64 {
if m != nil {
return m.Nonce
}
return 0
}
func (m *DataRequest) GetDigests() []string {
if m != nil {
return m.Digests
}
return nil
}
func (m *DataRequest) GetMsgType() PullMsgType {
if m != nil {
return m.MsgType
}
return PullMsgType_UNDEFINED
}
// GossipHello is the message that is used for the peer to initiate
// a pull round with another peer
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"`
}
func (m *GossipHello) Reset() { *m = GossipHello{} }
func (m *GossipHello) String() string { return proto.CompactTextString(m) }
func (*GossipHello) ProtoMessage() {}
func (*GossipHello) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
func (m *GossipHello) GetNonce() uint64 {
if m != nil {
return m.Nonce
}
return 0
}
func (m *GossipHello) GetMetadata() []byte {
if m != nil {
return m.Metadata
}
return nil
}
func (m *GossipHello) GetMsgType() PullMsgType {
if m != nil {
return m.MsgType
}
return PullMsgType_UNDEFINED
}
// DataUpdate is the final message in the pull phase
// sent from the receiver to the initiator
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"`
}
func (m *DataUpdate) Reset() { *m = DataUpdate{} }
func (m *DataUpdate) String() string { return proto.CompactTextString(m) }
func (*DataUpdate) ProtoMessage() {}
func (*DataUpdate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
func (m *DataUpdate) GetNonce() uint64 {
if m != nil {
return m.Nonce
}
return 0
}
func (m *DataUpdate) GetData() []*Envelope {
if m != nil {
return m.Data
}
return nil
}
func (m *DataUpdate) GetMsgType() PullMsgType {
if m != nil {
return m.MsgType
}
return PullMsgType_UNDEFINED
}
// DataDigest is the message sent from the receiver peer
// to the initator peer and contains the data items it has
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"`
}
func (m *DataDigest) Reset() { *m = DataDigest{} }
func (m *DataDigest) String() string { return proto.CompactTextString(m) }
func (*DataDigest) ProtoMessage() {}
func (*DataDigest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
func (m *DataDigest) GetNonce() uint64 {
if m != nil {
return m.Nonce
}
return 0
}
func (m *DataDigest) GetDigests() []string {
if m != nil {
return m.Digests
}
return nil
}
func (m *DataDigest) GetMsgType() PullMsgType {
if m != nil {
return m.MsgType
}
return PullMsgType_UNDEFINED
}
// DataMessage is the message that contains a block
type DataMessage struct {
Payload *Payload `protobuf:"bytes,1,opt,name=payload" json:"payload,omitempty"`
}
func (m *DataMessage) Reset() { *m = DataMessage{} }
func (m *DataMessage) String() string { return proto.CompactTextString(m) }
func (*DataMessage) ProtoMessage() {}
func (*DataMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
func (m *DataMessage) GetPayload() *Payload {
if m != nil {
return m.Payload
}
return nil
}
// PrivateDataMessage message which includes private
// data information to distributed once transaction
// has been endorsed
type PrivateDataMessage struct {
Payload *PrivatePayload `protobuf:"bytes,1,opt,name=payload" json:"payload,omitempty"`
}
func (m *PrivateDataMessage) Reset() { *m = PrivateDataMessage{} }
func (m *PrivateDataMessage) String() string { return proto.CompactTextString(m) }
func (*PrivateDataMessage) ProtoMessage() {}
func (*PrivateDataMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
func (m *PrivateDataMessage) GetPayload() *PrivatePayload {
if m != nil {
return m.Payload
}
return nil
}
// Payload contains a block
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"`
PrivateData [][]byte `protobuf:"bytes,3,rep,name=private_data,json=privateData,proto3" json:"private_data,omitempty"`
}
func (m *Payload) Reset() { *m = Payload{} }
func (m *Payload) String() string { return proto.CompactTextString(m) }
func (*Payload) ProtoMessage() {}
func (*Payload) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
func (m *Payload) GetSeqNum() uint64 {
if m != nil {
return m.SeqNum
}
return 0
}
func (m *Payload) GetData() []byte {
if m != nil {
return m.Data
}
return nil
}
func (m *Payload) GetPrivateData() [][]byte {
if m != nil {
return m.PrivateData
}
return nil
}
// PrivatePayload payload to encapsulate private
// data with collection name to enable routing
// based on collection partitioning
type PrivatePayload struct {
CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName" json:"collection_name,omitempty"`
Namespace string `protobuf:"bytes,2,opt,name=namespace" json:"namespace,omitempty"`
TxId string `protobuf:"bytes,3,opt,name=tx_id,json=txId" json:"tx_id,omitempty"`
PrivateRwset []byte `protobuf:"bytes,4,opt,name=private_rwset,json=privateRwset,proto3" json:"private_rwset,omitempty"`
}
func (m *PrivatePayload) Reset() { *m = PrivatePayload{} }
func (m *PrivatePayload) String() string { return proto.CompactTextString(m) }
func (*PrivatePayload) ProtoMessage() {}
func (*PrivatePayload) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
func (m *PrivatePayload) GetCollectionName() string {
if m != nil {
return m.CollectionName
}
return ""
}
func (m *PrivatePayload) GetNamespace() string {
if m != nil {
return m.Namespace
}
return ""
}
func (m *PrivatePayload) GetTxId() string {
if m != nil {
return m.TxId
}
return ""
}
func (m *PrivatePayload) GetPrivateRwset() []byte {
if m != nil {
return m.PrivateRwset
}
return nil
}
// AliveMessage is sent to inform remote peers
// of a peer's existence and activity
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"`
}
func (m *AliveMessage) Reset() { *m = AliveMessage{} }
func (m *AliveMessage) String() string { return proto.CompactTextString(m) }
func (*AliveMessage) ProtoMessage() {}
func (*AliveMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
func (m *AliveMessage) GetMembership() *Member {
if m != nil {
return m.Membership
}
return nil
}
func (m *AliveMessage) GetTimestamp() *PeerTime {
if m != nil {
return m.Timestamp
}
return nil
}
func (m *AliveMessage) GetIdentity() []byte {
if m != nil {
return m.Identity
}
return nil
}
// Leadership Message is sent during leader election to inform
// remote peers about intent of peer to proclaim itself as leader
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"`
}
func (m *LeadershipMessage) Reset() { *m = LeadershipMessage{} }
func (m *LeadershipMessage) String() string { return proto.CompactTextString(m) }
func (*LeadershipMessage) ProtoMessage() {}
func (*LeadershipMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
func (m *LeadershipMessage) GetPkiId() []byte {
if m != nil {
return m.PkiId
}
return nil
}
func (m *LeadershipMessage) GetTimestamp() *PeerTime {
if m != nil {
return m.Timestamp
}
return nil
}
func (m *LeadershipMessage) GetIsDeclaration() bool {
if m != nil {
return m.IsDeclaration
}
return false
}
// PeerTime defines the logical time of a peer's life
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"`
}
func (m *PeerTime) Reset() { *m = PeerTime{} }
func (m *PeerTime) String() string { return proto.CompactTextString(m) }
func (*PeerTime) ProtoMessage() {}
func (*PeerTime) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }
func (m *PeerTime) GetIncNum() uint64 {
if m != nil {
return m.IncNum
}
return 0
}
func (m *PeerTime) GetSeqNum() uint64 {
if m != nil {
return m.SeqNum
}
return 0
}
// MembershipRequest is used to ask membership information
// from a remote peer
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"`
}
func (m *MembershipRequest) Reset() { *m = MembershipRequest{} }
func (m *MembershipRequest) String() string { return proto.CompactTextString(m) }
func (*MembershipRequest) ProtoMessage() {}
func (*MembershipRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }
func (m *MembershipRequest) GetSelfInformation() *Envelope {
if m != nil {
return m.SelfInformation
}
return nil
}
func (m *MembershipRequest) GetKnown() [][]byte {
if m != nil {
return m.Known
}
return nil
}
// MembershipResponse is used for replying to MembershipRequests
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"`
}
func (m *MembershipResponse) Reset() { *m = MembershipResponse{} }
func (m *MembershipResponse) String() string { return proto.CompactTextString(m) }
func (*MembershipResponse) ProtoMessage() {}
func (*MembershipResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} }
func (m *MembershipResponse) GetAlive() []*Envelope {
if m != nil {
return m.Alive
}
return nil
}
func (m *MembershipResponse) GetDead() []*Envelope {
if m != nil {
return m.Dead
}
return nil
}
// Member holds membership-related information
// about a peer
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"`
}
func (m *Member) Reset() { *m = Member{} }
func (m *Member) String() string { return proto.CompactTextString(m) }
func (*Member) ProtoMessage() {}
func (*Member) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} }
func (m *Member) GetEndpoint() string {
if m != nil {
return m.Endpoint
}
return ""
}
func (m *Member) GetMetadata() []byte {
if m != nil {
return m.Metadata
}
return nil
}
func (m *Member) GetPkiId() []byte {
if m != nil {
return m.PkiId
}
return nil
}
// Empty is used for pinging and in tests
type Empty struct {
}
func (m *Empty) Reset() { *m = Empty{} }
func (m *Empty) String() string { return proto.CompactTextString(m) }
func (*Empty) ProtoMessage() {}
func (*Empty) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} }
// RemoteStateRequest is used to ask a set of blocks
// from a remote peer
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"`
}
func (m *RemoteStateRequest) Reset() { *m = RemoteStateRequest{} }
func (m *RemoteStateRequest) String() string { return proto.CompactTextString(m) }
func (*RemoteStateRequest) ProtoMessage() {}
func (*RemoteStateRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} }
func (m *RemoteStateRequest) GetStartSeqNum() uint64 {
if m != nil {
return m.StartSeqNum
}
return 0
}
func (m *RemoteStateRequest) GetEndSeqNum() uint64 {
if m != nil {
return m.EndSeqNum
}
return 0
}
// RemoteStateResponse is used to send a set of blocks
// to a remote peer
type RemoteStateResponse struct {
Payloads []*Payload `protobuf:"bytes,1,rep,name=payloads" json:"payloads,omitempty"`
}
func (m *RemoteStateResponse) Reset() { *m = RemoteStateResponse{} }
func (m *RemoteStateResponse) String() string { return proto.CompactTextString(m) }
func (*RemoteStateResponse) ProtoMessage() {}
func (*RemoteStateResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} }
func (m *RemoteStateResponse) GetPayloads() []*Payload {
if m != nil {
return m.Payloads
}
return nil
}
// RemotePrivateDataRequest message used to request
// missing private rwset
type RemotePvtDataRequest struct {
Digests []*PvtDataDigest `protobuf:"bytes,1,rep,name=digests" json:"digests,omitempty"`
}
func (m *RemotePvtDataRequest) Reset() { *m = RemotePvtDataRequest{} }
func (m *RemotePvtDataRequest) String() string { return proto.CompactTextString(m) }
func (*RemotePvtDataRequest) ProtoMessage() {}
func (*RemotePvtDataRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} }
func (m *RemotePvtDataRequest) GetDigests() []*PvtDataDigest {
if m != nil {
return m.Digests
}
return nil
}
// PvtDataDigest defines a digest of private data
type PvtDataDigest struct {
TxId string `protobuf:"bytes,1,opt,name=tx_id,json=txId" json:"tx_id,omitempty"`
Namespace string `protobuf:"bytes,2,opt,name=namespace" json:"namespace,omitempty"`
Collection string `protobuf:"bytes,3,opt,name=collection" json:"collection,omitempty"`
BlockSeq uint64 `protobuf:"varint,4,opt,name=block_seq,json=blockSeq" json:"block_seq,omitempty"`
SeqInBlock uint64 `protobuf:"varint,5,opt,name=seq_in_block,json=seqInBlock" json:"seq_in_block,omitempty"`
}
func (m *PvtDataDigest) Reset() { *m = PvtDataDigest{} }
func (m *PvtDataDigest) String() string { return proto.CompactTextString(m) }
func (*PvtDataDigest) ProtoMessage() {}
func (*PvtDataDigest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} }
func (m *PvtDataDigest) GetTxId() string {
if m != nil {
return m.TxId
}
return ""
}
func (m *PvtDataDigest) GetNamespace() string {
if m != nil {
return m.Namespace
}
return ""
}
func (m *PvtDataDigest) GetCollection() string {
if m != nil {
return m.Collection
}
return ""
}
func (m *PvtDataDigest) GetBlockSeq() uint64 {
if m != nil {
return m.BlockSeq
}
return 0
}
func (m *PvtDataDigest) GetSeqInBlock() uint64 {
if m != nil {
return m.SeqInBlock
}
return 0
}
// RemotePrivateData message to response on private
// data replication request
type RemotePvtDataResponse struct {
Elements []*PvtDataElement `protobuf:"bytes,1,rep,name=elements" json:"elements,omitempty"`
}
func (m *RemotePvtDataResponse) Reset() { *m = RemotePvtDataResponse{} }
func (m *RemotePvtDataResponse) String() string { return proto.CompactTextString(m) }
func (*RemotePvtDataResponse) ProtoMessage() {}
func (*RemotePvtDataResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} }
func (m *RemotePvtDataResponse) GetElements() []*PvtDataElement {
if m != nil {
return m.Elements
}
return nil
}
type PvtDataElement struct {
Digest *PvtDataDigest `protobuf:"bytes,1,opt,name=digest" json:"digest,omitempty"`
// the payload is a marshaled kvrwset.KVRWSet
Payload [][]byte `protobuf:"bytes,2,rep,name=payload,proto3" json:"payload,omitempty"`
}
func (m *PvtDataElement) Reset() { *m = PvtDataElement{} }
func (m *PvtDataElement) String() string { return proto.CompactTextString(m) }
func (*PvtDataElement) ProtoMessage() {}
func (*PvtDataElement) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} }
func (m *PvtDataElement) GetDigest() *PvtDataDigest {
if m != nil {
return m.Digest
}
return nil
}
func (m *PvtDataElement) GetPayload() [][]byte {
if m != nil {
return m.Payload
}
return nil
}
// PvtPayload augments private rwset data and tx index
// inside the block
type PvtDataPayload struct {
TxSeqInBlock uint64 `protobuf:"varint,1,opt,name=tx_seq_in_block,json=txSeqInBlock" json:"tx_seq_in_block,omitempty"`
// Encodes marhslaed bytes of rwset.TxPvtReadWriteSet
// defined in rwset.proto
Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"`
}
func (m *PvtDataPayload) Reset() { *m = PvtDataPayload{} }
func (m *PvtDataPayload) String() string { return proto.CompactTextString(m) }
func (*PvtDataPayload) ProtoMessage() {}
func (*PvtDataPayload) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} }
func (m *PvtDataPayload) GetTxSeqInBlock() uint64 {
if m != nil {
return m.TxSeqInBlock
}
return 0
}
func (m *PvtDataPayload) GetPayload() []byte {
if m != nil {
return m.Payload
}
return nil
}
type Acknowledgement struct {
Error string `protobuf:"bytes,1,opt,name=error" json:"error,omitempty"`
}
func (m *Acknowledgement) Reset() { *m = Acknowledgement{} }
func (m *Acknowledgement) String() string { return proto.CompactTextString(m) }
func (*Acknowledgement) ProtoMessage() {}
func (*Acknowledgement) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} }
func (m *Acknowledgement) GetError() string {
if m != nil {
return m.Error
}
return ""
}
func init() {
proto.RegisterType((*Envelope)(nil), "gossip.Envelope")
proto.RegisterType((*SecretEnvelope)(nil), "gossip.SecretEnvelope")
proto.RegisterType((*Secret)(nil), "gossip.Secret")
proto.RegisterType((*GossipMessage)(nil), "gossip.GossipMessage")
proto.RegisterType((*StateInfo)(nil), "gossip.StateInfo")
proto.RegisterType((*Properties)(nil), "gossip.Properties")
proto.RegisterType((*StateInfoSnapshot)(nil), "gossip.StateInfoSnapshot")
proto.RegisterType((*StateInfoPullRequest)(nil), "gossip.StateInfoPullRequest")
proto.RegisterType((*ConnEstablish)(nil), "gossip.ConnEstablish")
proto.RegisterType((*PeerIdentity)(nil), "gossip.PeerIdentity")
proto.RegisterType((*DataRequest)(nil), "gossip.DataRequest")
proto.RegisterType((*GossipHello)(nil), "gossip.GossipHello")
proto.RegisterType((*DataUpdate)(nil), "gossip.DataUpdate")
proto.RegisterType((*DataDigest)(nil), "gossip.DataDigest")
proto.RegisterType((*DataMessage)(nil), "gossip.DataMessage")
proto.RegisterType((*PrivateDataMessage)(nil), "gossip.PrivateDataMessage")
proto.RegisterType((*Payload)(nil), "gossip.Payload")
proto.RegisterType((*PrivatePayload)(nil), "gossip.PrivatePayload")
proto.RegisterType((*AliveMessage)(nil), "gossip.AliveMessage")
proto.RegisterType((*LeadershipMessage)(nil), "gossip.LeadershipMessage")
proto.RegisterType((*PeerTime)(nil), "gossip.PeerTime")
proto.RegisterType((*MembershipRequest)(nil), "gossip.MembershipRequest")
proto.RegisterType((*MembershipResponse)(nil), "gossip.MembershipResponse")
proto.RegisterType((*Member)(nil), "gossip.Member")
proto.RegisterType((*Empty)(nil), "gossip.Empty")
proto.RegisterType((*RemoteStateRequest)(nil), "gossip.RemoteStateRequest")
proto.RegisterType((*RemoteStateResponse)(nil), "gossip.RemoteStateResponse")
proto.RegisterType((*RemotePvtDataRequest)(nil), "gossip.RemotePvtDataRequest")
proto.RegisterType((*PvtDataDigest)(nil), "gossip.PvtDataDigest")
proto.RegisterType((*RemotePvtDataResponse)(nil), "gossip.RemotePvtDataResponse")
proto.RegisterType((*PvtDataElement)(nil), "gossip.PvtDataElement")
proto.RegisterType((*PvtDataPayload)(nil), "gossip.PvtDataPayload")
proto.RegisterType((*Acknowledgement)(nil), "gossip.Acknowledgement")
proto.RegisterEnum("gossip.PullMsgType", PullMsgType_name, PullMsgType_value)
proto.RegisterEnum("gossip.GossipMessage_Tag", GossipMessage_Tag_name, GossipMessage_Tag_value)
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConn
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion4
// Client API for Gossip service
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)
}
type gossipClient struct {
cc *grpc.ClientConn
}
func NewGossipClient(cc *grpc.ClientConn) GossipClient {
return &gossipClient{cc}
}
func (c *gossipClient) GossipStream(ctx context.Context, opts ...grpc.CallOption) (Gossip_GossipStreamClient, error) {
stream, err := grpc.NewClientStream(ctx, &_Gossip_serviceDesc.Streams[0], c.cc, "/gossip.Gossip/GossipStream", opts...)
if err != nil {
return nil, err
}
x := &gossipGossipStreamClient{stream}
return x, nil
}
type Gossip_GossipStreamClient interface {
Send(*Envelope) error
Recv() (*Envelope, error)
grpc.ClientStream
}
type gossipGossipStreamClient struct {
grpc.ClientStream
}
func (x *gossipGossipStreamClient) Send(m *Envelope) error {
return x.ClientStream.SendMsg(m)
}
func (x *gossipGossipStreamClient) Recv() (*Envelope, error) {
m := new(Envelope)
if err := x.ClientStream.RecvMsg(m); err != nil {
return nil, err
}
return m, nil
}
func (c *gossipClient) Ping(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) {
out := new(Empty)
err := grpc.Invoke(ctx, "/gossip.Gossip/Ping", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// Server API for Gossip service
type GossipServer interface {
// GossipStream is the gRPC stream used for sending and receiving messages
GossipStream(Gossip_GossipStreamServer) error
// Ping is used to probe a remote peer's aliveness
Ping(context.Context, *Empty) (*Empty, error)
}
func RegisterGossipServer(s *grpc.Server, srv GossipServer) {
s.RegisterService(&_Gossip_serviceDesc, srv)
}
func _Gossip_GossipStream_Handler(srv interface{}, stream grpc.ServerStream) error {
return srv.(GossipServer).GossipStream(&gossipGossipStreamServer{stream})
}
type Gossip_GossipStreamServer interface {
Send(*Envelope) error
Recv() (*Envelope, error)
grpc.ServerStream
}
type gossipGossipStreamServer struct {
grpc.ServerStream
}
func (x *gossipGossipStreamServer) Send(m *Envelope) error {
return x.ServerStream.SendMsg(m)
}
func (x *gossipGossipStreamServer) Recv() (*Envelope, error) {
m := new(Envelope)
if err := x.ServerStream.RecvMsg(m); err != nil {
return nil, err
}
return m, nil
}
func _Gossip_Ping_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(Empty)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(GossipServer).Ping(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/gossip.Gossip/Ping",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(GossipServer).Ping(ctx, req.(*Empty))
}
return interceptor(ctx, in, info, handler)
}
var _Gossip_serviceDesc = grpc.ServiceDesc{
ServiceName: "gossip.Gossip",
HandlerType: (*GossipServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "Ping",
Handler: _Gossip_Ping_Handler,
},
},
Streams: []grpc.StreamDesc{
{
StreamName: "GossipStream",
Handler: _Gossip_GossipStream_Handler,
ServerStreams: true,
ClientStreams: true,
},
},
Metadata: "gossip/message.proto",
}
func init() { proto.RegisterFile("gossip/message.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
// 1773 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0xdb, 0x6e, 0xe3, 0xc6,
0x19, 0x16, 0xad, 0x23, 0x7f, 0x1d, 0x2c, 0x8f, 0xbd, 0xbb, 0x8c, 0x93, 0xa6, 0x0e, 0xdb, 0x4d,
0xb6, 0x75, 0x62, 0x2f, 0x9c, 0x16, 0x0d, 0x90, 0xb6, 0x0b, 0xdb, 0x52, 0x2c, 0x21, 0x2b, 0xaf,
0x4b, 0x7b, 0xd1, 0xba, 0x37, 0xc4, 0x98, 0x1c, 0x53, 0xac, 0xc9, 0x21, 0xcd, 0x19, 0x6f, 0xec,
0xcb, 0xa2, 0x17, 0x05, 0x7a, 0xd7, 0x47, 0xe8, 0xb3, 0xf4, 0xc5, 0x8a, 0x99, 0xe1, 0x51, 0xb2,
0x16, 0xd8, 0x05, 0x7a, 0xa7, 0xff, 0x3c, 0xf3, 0xcd, 0x7f, 0xa2, 0x60, 0xcb, 0x8b, 0x18, 0xf3,
0xe3, 0xfd, 0x90, 0x30, 0x86, 0x3d, 0xb2, 0x17, 0x27, 0x11, 0x8f, 0x50, 0x4b, 0x71, 0xcd, 0x7f,
0x68, 0xd0, 0x19, 0xd3, 0x77, 0x24, 0x88, 0x62, 0x82, 0x0c, 0x68, 0xc7, 0xf8, 0x21, 0x88, 0xb0,
0x6b, 0x68, 0x3b, 0xda, 0x8b, 0x9e, 0x95, 0x91, 0xe8, 0x33, 0xd0, 0x99, 0xef, 0x51, 0xcc, 0xef,
0x12, 0x62, 0xac, 0x49, 0x59, 0xc1, 0x40, 0xaf, 0x60, 0x9d, 0x11, 0x27, 0x21, 0xdc, 0x26, 0xa9,
0x2b, 0xa3, 0xbe, 0xa3, 0xbd, 0xe8, 0x1e, 0x3c, 0xdd, 0x53, 0x61, 0xf6, 0xce, 0xa5, 0x38, 0x0b,
0x64, 0x0d, 0x58, 0x85, 0x36, 0x27, 0x30, 0xa8, 0x6a, 0x7c, 0xec, 0x51, 0xcc, 0x43, 0x68, 0x29,
0x4f, 0xe8, 0x6b, 0x18, 0xfa, 0x94, 0x93, 0x84, 0xe2, 0x60, 0x4c, 0xdd, 0x38, 0xf2, 0x29, 0x97,
0xae, 0xf4, 0x49, 0xcd, 0x5a, 0x92, 0x1c, 0xe9, 0xd0, 0x76, 0x22, 0xca, 0x09, 0xe5, 0xe6, 0x3f,
0xbb, 0xd0, 0x3f, 0x91, 0xc7, 0x9e, 0x29, 0xc8, 0xd0, 0x16, 0x34, 0x69, 0x44, 0x1d, 0x22, 0xed,
0x1b, 0x96, 0x22, 0xc4, 0x11, 0x9d, 0x39, 0xa6, 0x94, 0x04, 0xe9, 0x31, 0x32, 0x12, 0xed, 0x42,
0x9d, 0x63, 0x4f, 0x62, 0x30, 0x38, 0xf8, 0x24, 0xc3, 0xa0, 0xe2, 0x73, 0xef, 0x02, 0x7b, 0x96,
0xd0, 0x42, 0xdf, 0x82, 0x8e, 0x03, 0xff, 0x1d, 0xb1, 0x43, 0xe6, 0x19, 0x4d, 0x09, 0xdb, 0x56,
0x66, 0x72, 0x28, 0x04, 0xa9, 0xc5, 0xa4, 0x66, 0x75, 0xa4, 0xe2, 0x8c, 0x79, 0xe8, 0x37, 0xd0,
0x0e, 0x49, 0x68, 0x27, 0xe4, 0xd6, 0x68, 0x49, 0x93, 0x3c, 0xca, 0x8c, 0x84, 0x57, 0x24, 0x61,
0x73, 0x3f, 0xb6, 0xc8, 0xed, 0x1d, 0x61, 0x7c, 0x52, 0xb3, 0x5a, 0x21, 0x09, 0x2d, 0x72, 0x8b,
0x7e, 0x9b, 0x59, 0x31, 0xa3, 0x2d, 0xad, 0xb6, 0x1f, 0xb3, 0x62, 0x71, 0x44, 0x19, 0xc9, 0xcd,
0x18, 0x7a, 0x09, 0x1d, 0x17, 0x73, 0x2c, 0x0f, 0xd8, 0x91, 0x76, 0x9b, 0x99, 0xdd, 0x08, 0x73,
0x5c, 0x9c, 0xaf, 0x2d, 0xd4, 0xc4, 0xf1, 0x76, 0xa1, 0x39, 0x27, 0x41, 0x10, 0x19, 0x7a, 0x55,
0x5d, 0x41, 0x30, 0x11, 0xa2, 0x49, 0xcd, 0x52, 0x3a, 0x68, 0x3f, 0x75, 0xef, 0xfa, 0x9e, 0x01,
0x52, 0x1f, 0x95, 0xdd, 0x8f, 0x7c, 0x4f, 0xdd, 0x42, 0x7a, 0x1f, 0xf9, 0x5e, 0x7e, 0x1e, 0x71,
0xfb, 0xee, 0xf2, 0x79, 0x8a, 0x7b, 0x4b, 0x0b, 0x75, 0xf1, 0xae, 0xb4, 0xb8, 0x8b, 0x5d, 0xcc,
0x89, 0xd1, 0x5b, 0x8e, 0xf2, 0x56, 0x4a, 0x26, 0x35, 0x0b, 0xdc, 0x9c, 0x42, 0xcf, 0xa1, 0x49,
0xc2, 0x98, 0x3f, 0x18, 0x7d, 0x69, 0xd0, 0xcf, 0x0c, 0xc6, 0x82, 0x29, 0x2e, 0x20, 0xa5, 0x68,
0x17, 0x1a, 0x4e, 0x44, 0xa9, 0x31, 0x90, 0x5a, 0x4f, 0x32, 0xad, 0xe3, 0x88, 0xd2, 0x31, 0xe3,
0xf8, 0x2a, 0xf0, 0xd9, 0x7c, 0x52, 0xb3, 0xa4, 0x12, 0x3a, 0x00, 0x60, 0x1c, 0x73, 0x62, 0xfb,
0xf4, 0x3a, 0x32, 0xd6, 0xa5, 0xc9, 0x46, 0x5e, 0x26, 0x42, 0x32, 0xa5, 0xd7, 0x02, 0x1d, 0x9d,
0x65, 0x04, 0x3a, 0x82, 0x81, 0xb2, 0x61, 0x14, 0xc7, 0x6c, 0x1e, 0x71, 0x63, 0x58, 0x7d, 0xf4,
0xdc, 0xee, 0x3c, 0x55, 0x98, 0xd4, 0xac, 0xbe, 0x34, 0xc9, 0x18, 0x68, 0x06, 0x9b, 0x45, 0x5c,
0x3b, 0xbe, 0x0b, 0x02, 0x89, 0xdf, 0x86, 0x74, 0xf4, 0xd9, 0x92, 0xa3, 0xb3, 0xbb, 0x20, 0x28,
0x80, 0x1c, 0xb2, 0x05, 0x3e, 0x3a, 0x04, 0xe5, 0x5f, 0x38, 0x11, 0x4a, 0x06, 0xaa, 0x26, 0x94,
0x45, 0xc2, 0x88, 0x13, 0xe9, 0xae, 0x70, 0xd3, 0x63, 0x25, 0x1a, 0x8d, 0xb2, 0x5b, 0x25, 0x69,
0xca, 0x19, 0x9b, 0xd2, 0xc7, 0xa7, 0x8f, 0xfa, 0xc8, 0xb3, 0xb2, 0xcf, 0xca, 0x0c, 0x81, 0x4d,
0x40, 0xb0, 0xab, 0x92, 0x57, 0xa6, 0xe8, 0x56, 0x15, 0x9b, 0xd7, 0xb9, 0xb4, 0x48, 0xd4, 0x7e,
0x61, 0x22, 0xd2, 0xf5, 0x7b, 0xe8, 0xc7, 0x84, 0x24, 0xb6, 0xef, 0x12, 0xca, 0x7d, 0xfe, 0x60,
0x3c, 0xa9, 0x96, 0xe1, 0x19, 0x21, 0xc9, 0x34, 0x95, 0x89, 0x6b, 0xc4, 0x25, 0x5a, 0x14, 0x3b,
0x76, 0x6e, 0x8c, 0xa7, 0xd2, 0xe4, 0x59, 0x5e, 0xb9, 0xce, 0x0d, 0x8d, 0x7e, 0x0a, 0x88, 0xeb,
0x91, 0x90, 0x50, 0x71, 0x79, 0xa1, 0x85, 0xfe, 0x08, 0x10, 0x27, 0xfe, 0x3b, 0x85, 0x82, 0xf1,
0xac, 0x0a, 0xbe, 0xba, 0xef, 0xd9, 0x3b, 0x5e, 0xcd, 0xe2, 0x92, 0x05, 0x7a, 0x55, 0xb2, 0x67,
0x86, 0x21, 0xed, 0x7f, 0xb6, 0xc2, 0x3e, 0x47, 0xac, 0x64, 0x82, 0x5e, 0x41, 0x2f, 0xa5, 0x6c,
0x91, 0xe8, 0xc6, 0x27, 0xd5, 0x67, 0x3b, 0x53, 0xb2, 0x6a, 0x59, 0x77, 0xe3, 0x82, 0x6b, 0xda,
0x50, 0xbf, 0xc0, 0x1e, 0xea, 0x83, 0xfe, 0xf6, 0x74, 0x34, 0xfe, 0x61, 0x7a, 0x3a, 0x1e, 0x0d,
0x6b, 0x48, 0x87, 0xe6, 0x78, 0x76, 0x76, 0x71, 0x39, 0xd4, 0x50, 0x0f, 0x3a, 0x6f, 0xac, 0x13,
0xfb, 0xcd, 0xe9, 0xeb, 0xcb, 0xe1, 0x9a, 0xd0, 0x3b, 0x9e, 0x1c, 0x9e, 0x2a, 0xb2, 0x8e, 0x86,
0xd0, 0x93, 0xe4, 0xe1, 0xe9, 0xc8, 0x7e, 0x63, 0x9d, 0x0c, 0x1b, 0x68, 0x1d, 0xba, 0x4a, 0xc1,
0x92, 0x8c, 0x66, 0xb9, 0x13, 0xff, 0x57, 0x03, 0x3d, 0xcf, 0x48, 0xb4, 0x0d, 0x9d, 0x90, 0x70,
0x2c, 0x8f, 0xad, 0x66, 0x42, 0x4e, 0xa3, 0x3d, 0xd0, 0xb9, 0x1f, 0x12, 0xc6, 0x71, 0x18, 0xcb,
0x6e, 0xdc, 0x3d, 0x18, 0x96, 0x5f, 0xef, 0xc2, 0x0f, 0x89, 0x55, 0xa8, 0xa0, 0x27, 0xd0, 0x8a,
0x6f, 0x7c, 0xdb, 0x77, 0x65, 0x93, 0xee, 0x59, 0xcd, 0xf8, 0xc6, 0x9f, 0xba, 0xe8, 0xe7, 0xd0,
0x4d, 0x7b, 0xb8, 0x3d, 0x3b, 0x3c, 0x36, 0x1a, 0x52, 0x06, 0x29, 0x6b, 0x76, 0x78, 0x2c, 0xaa,
0x37, 0x4e, 0xa2, 0x98, 0x24, 0xdc, 0x27, 0x2c, 0xed, 0xd6, 0xa8, 0x00, 0x2f, 0x93, 0x58, 0x25,
0x2d, 0xf3, 0x02, 0xa0, 0x90, 0xa0, 0x5f, 0x40, 0x5f, 0x66, 0x45, 0x62, 0xcf, 0x89, 0xef, 0xcd,
0x79, 0x3a, 0x53, 0x7a, 0x8a, 0x39, 0x91, 0x3c, 0xf4, 0x05, 0xf4, 0x02, 0x72, 0xcd, 0xed, 0xf2,
0x7c, 0xe9, 0x58, 0x5d, 0xc1, 0x3b, 0x56, 0x2c, 0xf3, 0x10, 0x36, 0x96, 0xaa, 0x1e, 0x7d, 0x0d,
0x1d, 0x12, 0xc8, 0x84, 0x63, 0x86, 0xb6, 0x53, 0x2f, 0xa3, 0x90, 0xcf, 0xde, 0x5c, 0xc3, 0xfc,
0x1d, 0x6c, 0x3d, 0x56, 0xef, 0x8b, 0x28, 0x68, 0x8b, 0x28, 0x98, 0xd7, 0xd0, 0xaf, 0x34, 0xb7,
0x12, 0x9c, 0x5a, 0x19, 0xce, 0x6d, 0xe8, 0xe4, 0x25, 0xa5, 0x46, 0x64, 0x4e, 0x23, 0x13, 0xfa,
0x3c, 0x60, 0xb6, 0x43, 0x12, 0x6e, 0xcf, 0x31, 0x9b, 0xa7, 0x0f, 0xd1, 0xe5, 0x01, 0x3b, 0x26,
0x09, 0x9f, 0x60, 0x36, 0x37, 0xdf, 0x42, 0xaf, 0x5c, 0x7a, 0xab, 0xc2, 0x20, 0x68, 0x08, 0x37,
0x69, 0x08, 0xf9, 0xbb, 0x92, 0x2c, 0xf5, 0x6a, 0xb2, 0x98, 0x21, 0x74, 0x4b, 0x15, 0xb6, 0x7a,
0xba, 0xbb, 0x72, 0xf2, 0x30, 0x63, 0x6d, 0xa7, 0xfe, 0x42, 0xb7, 0x32, 0x12, 0xed, 0x41, 0x27,
0x64, 0x9e, 0xcd, 0x1f, 0xd2, 0x35, 0x67, 0x50, 0x8c, 0x1f, 0x81, 0xe2, 0x8c, 0x79, 0x17, 0x0f,
0x31, 0xb1, 0xda, 0xa1, 0xfa, 0x61, 0x46, 0xd0, 0x2d, 0xcd, 0xbd, 0x15, 0xe1, 0xca, 0xe7, 0x5d,
0x5b, 0x4a, 0xee, 0x0f, 0x0b, 0x78, 0x0f, 0x50, 0x8c, 0xb4, 0x15, 0xf1, 0x7e, 0x09, 0x8d, 0x34,
0xd6, 0xe3, 0x59, 0xd2, 0xf8, 0xa8, 0xc8, 0x81, 0x8a, 0xac, 0x46, 0xf6, 0xff, 0x1d, 0xd8, 0xef,
0xd4, 0x3b, 0x66, 0x5b, 0xda, 0xaf, 0xaa, 0x2b, 0x63, 0xf7, 0x60, 0x3d, 0xb7, 0x56, 0xec, 0x7c,
0x87, 0x34, 0x7f, 0x00, 0xb4, 0xdc, 0xe9, 0xd0, 0xcb, 0x45, 0x07, 0x4f, 0x17, 0xda, 0xe2, 0x92,
0x9f, 0x4b, 0x68, 0xa7, 0x3c, 0xf4, 0x0c, 0xda, 0x8c, 0xdc, 0xda, 0xf4, 0x2e, 0x4c, 0xaf, 0xdb,
0x62, 0xe4, 0xf6, 0xf4, 0x2e, 0x14, 0xd9, 0x59, 0x7a, 0x55, 0x85, 0xeb, 0x17, 0x0b, 0x5d, 0xb8,
0xbe, 0x53, 0x17, 0xb9, 0x5f, 0xee, 0xb3, 0xff, 0xd6, 0x60, 0x50, 0x0d, 0x8b, 0xbe, 0x82, 0x75,
0x27, 0x0a, 0x02, 0xe2, 0x70, 0x3f, 0xa2, 0x36, 0xc5, 0xa1, 0x42, 0x56, 0xb7, 0x06, 0x05, 0xfb,
0x14, 0x87, 0x44, 0xac, 0xc8, 0x42, 0xca, 0x62, 0xec, 0xa8, 0x15, 0x59, 0xb7, 0x0a, 0x06, 0xda,
0x84, 0x26, 0xbf, 0xcf, 0x5a, 0x9f, 0x6e, 0x35, 0xf8, 0xfd, 0xd4, 0x15, 0x6d, 0x29, 0x3b, 0x51,
0xf2, 0x13, 0x23, 0x3c, 0xed, 0x7d, 0xd9, 0x31, 0x2d, 0xc1, 0x33, 0xff, 0xa5, 0x41, 0xaf, 0xbc,
0x92, 0xa2, 0x3d, 0x80, 0x30, 0xdf, 0x1c, 0x53, 0xd0, 0x06, 0xd5, 0x9d, 0xd2, 0x2a, 0x69, 0x7c,
0x70, 0x9b, 0x2e, 0x37, 0x90, 0x46, 0xb5, 0x81, 0x98, 0x7f, 0xd7, 0x60, 0x63, 0x69, 0xb6, 0xaf,
0x6a, 0x11, 0x1f, 0x1a, 0xf8, 0x39, 0x0c, 0x7c, 0x66, 0xbb, 0xc4, 0x09, 0x70, 0x82, 0x05, 0xae,
0x12, 0xac, 0x8e, 0xd5, 0xf7, 0xd9, 0xa8, 0x60, 0x9a, 0xbf, 0x87, 0x4e, 0x66, 0x2d, 0x12, 0xc0,
0xa7, 0x4e, 0x39, 0x01, 0x7c, 0xea, 0x88, 0x04, 0x28, 0x65, 0xc6, 0x5a, 0x39, 0x33, 0xcc, 0x6b,
0xd8, 0x58, 0xda, 0xd6, 0xd1, 0xf7, 0x30, 0x64, 0x24, 0xb8, 0x96, 0x6b, 0x5a, 0x12, 0xaa, 0xd8,
0x5a, 0xf5, 0xc0, 0x79, 0x91, 0xae, 0x0b, 0xcd, 0x69, 0xa1, 0x28, 0x2a, 0x4e, 0xac, 0x1d, 0x54,
0x56, 0x56, 0xcf, 0x52, 0x84, 0x79, 0x05, 0x68, 0x79, 0xbf, 0x47, 0x5f, 0x42, 0x53, 0x7e, 0x4e,
0xac, 0x1c, 0x14, 0x4a, 0x2c, 0x3b, 0x05, 0xc1, 0xee, 0x7b, 0x3a, 0x05, 0xc1, 0xae, 0xf9, 0x67,
0x68, 0xa9, 0x18, 0xe2, 0xcd, 0x48, 0xe5, 0x7b, 0xcb, 0xca, 0xe9, 0xf7, 0x76, 0xb9, 0xc7, 0x47,
0xb2, 0xd9, 0x86, 0xa6, 0x5c, 0xb7, 0xcd, 0xbf, 0x00, 0x5a, 0x5e, 0x2a, 0xc5, 0x18, 0x61, 0x1c,
0x27, 0xdc, 0xae, 0x16, 0x5f, 0x57, 0x32, 0xcf, 0x55, 0x05, 0x7e, 0x0e, 0x5d, 0x42, 0x5d, 0xbb,
0xfa, 0x08, 0x3a, 0xa1, 0xae, 0x92, 0x9b, 0x47, 0xb0, 0xf9, 0xc8, 0xaa, 0x89, 0x76, 0xa1, 0x93,
0xd6, 0x79, 0x36, 0x4c, 0x97, 0x1a, 0x4a, 0xae, 0x60, 0x9e, 0xc0, 0xd6, 0x63, 0xeb, 0x1b, 0xda,
0x2f, 0xba, 0x9d, 0xf2, 0x91, 0x7f, 0x1e, 0xa4, 0x8a, 0xaa, 0x57, 0xe6, 0x4d, 0xd0, 0xfc, 0x8f,
0x06, 0xfd, 0x8a, 0xa8, 0xa8, 0x57, 0xad, 0x54, 0xaf, 0xef, 0x2f, 0xf1, 0xcf, 0x01, 0x8a, 0x96,
0x90, 0xd6, 0x79, 0x89, 0x83, 0x3e, 0x05, 0xfd, 0x2a, 0x88, 0x9c, 0x1b, 0x81, 0x89, 0x2c, 0xac,
0x86, 0xd5, 0x91, 0x8c, 0x73, 0x72, 0x8b, 0x76, 0xa0, 0x27, 0xa0, 0xf2, 0xa9, 0x2d, 0x59, 0x72,
0xcb, 0x69, 0x58, 0xc0, 0xc8, 0xed, 0x94, 0x1e, 0x09, 0x8e, 0xf9, 0x23, 0x3c, 0x79, 0x74, 0xd7,
0x44, 0x07, 0x4b, 0xfb, 0xc7, 0xd3, 0x85, 0xeb, 0x8e, 0x95, 0xb8, 0xb4, 0x85, 0x5c, 0xc2, 0xa0,
0x2a, 0x43, 0xdf, 0x40, 0x4b, 0xa1, 0x91, 0x26, 0xfe, 0x0a, 0xc8, 0x52, 0xa5, 0xf2, 0x5f, 0x05,
0x2a, 0xed, 0xf3, 0xf6, 0xfc, 0xa7, 0xdc, 0x75, 0xd6, 0x42, 0x9f, 0xc3, 0x3a, 0xbf, 0xb7, 0x2b,
0xd7, 0x4b, 0xf7, 0x2f, 0x7e, 0x7f, 0x9e, 0x5f, 0xb0, 0xea, 0xb2, 0xfc, 0xef, 0x83, 0xf9, 0x15,
0xac, 0x2f, 0xac, 0xf6, 0xa2, 0xe8, 0x48, 0x92, 0x44, 0x49, 0xfa, 0x3e, 0x8a, 0xf8, 0xf5, 0x1f,
0xa0, 0x5b, 0x1a, 0x5a, 0x8b, 0xfb, 0x72, 0x1f, 0xf4, 0xa3, 0xd7, 0x6f, 0x8e, 0x7f, 0xb4, 0x67,
0xe7, 0x27, 0x43, 0x4d, 0xac, 0xc5, 0xd3, 0xd1, 0xf8, 0xf4, 0x62, 0x7a, 0x71, 0x29, 0x39, 0x6b,
0x07, 0x7f, 0x83, 0x96, 0x5a, 0x1a, 0xd0, 0x77, 0xd0, 0x53, 0xbf, 0xce, 0x79, 0x42, 0x70, 0x88,
0x96, 0x2a, 0x70, 0x7b, 0x89, 0x63, 0xd6, 0x5e, 0x68, 0x2f, 0x35, 0xf4, 0x25, 0x34, 0xce, 0x7c,
0xea, 0xa1, 0xea, 0x77, 0xeb, 0x76, 0x95, 0x34, 0x6b, 0x47, 0xdf, 0xfc, 0x75, 0xd7, 0xf3, 0xf9,
0xfc, 0xee, 0x6a, 0xcf, 0x89, 0xc2, 0xfd, 0xf9, 0x43, 0x4c, 0x12, 0xb5, 0x8d, 0xee, 0x5f, 0xe3,
0xab, 0xc4, 0x77, 0xf6, 0xe5, 0x5f, 0x46, 0x6c, 0x5f, 0x99, 0x5d, 0xb5, 0x24, 0xf9, 0xed, 0xff,
0x02, 0x00, 0x00, 0xff, 0xff, 0xb4, 0xb4, 0x9a, 0xc5, 0x59, 0x12, 0x00, 0x00,
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/liurenhao/fabric.git
git@gitee.com:liurenhao/fabric.git
liurenhao
fabric
fabric
v1.1.0-preview

搜索帮助