github.com/leonlxy/hyperledger@v1.0.0-alpha.0.20170427033203-34922035d248/protos/gossip/message.pb.go (about) 1 // Code generated by protoc-gen-go. 2 // source: gossip/message.proto 3 // DO NOT EDIT! 4 5 /* 6 Package gossip is a generated protocol buffer package. 7 8 It is generated from these files: 9 gossip/message.proto 10 11 It has these top-level messages: 12 Envelope 13 SecretEnvelope 14 Secret 15 GossipMessage 16 StateInfo 17 StateInfoSnapshot 18 StateInfoPullRequest 19 ConnEstablish 20 PeerIdentity 21 DataRequest 22 GossipHello 23 DataUpdate 24 DataDigest 25 DataMessage 26 Payload 27 AliveMessage 28 LeadershipMessage 29 PeerTime 30 MembershipRequest 31 MembershipResponse 32 Member 33 Empty 34 RemoteStateRequest 35 RemoteStateResponse 36 */ 37 package gossip 38 39 import proto "github.com/golang/protobuf/proto" 40 import fmt "fmt" 41 import math "math" 42 43 import ( 44 context "golang.org/x/net/context" 45 grpc "google.golang.org/grpc" 46 ) 47 48 // Reference imports to suppress errors if they are not otherwise used. 49 var _ = proto.Marshal 50 var _ = fmt.Errorf 51 var _ = math.Inf 52 53 // This is a compile-time assertion to ensure that this generated file 54 // is compatible with the proto package it is being compiled against. 55 // A compilation error at this line likely means your copy of the 56 // proto package needs to be updated. 57 const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package 58 59 type PullMsgType int32 60 61 const ( 62 PullMsgType_UNDEFINED PullMsgType = 0 63 PullMsgType_BLOCK_MSG PullMsgType = 1 64 PullMsgType_IDENTITY_MSG PullMsgType = 2 65 ) 66 67 var PullMsgType_name = map[int32]string{ 68 0: "UNDEFINED", 69 1: "BLOCK_MSG", 70 2: "IDENTITY_MSG", 71 } 72 var PullMsgType_value = map[string]int32{ 73 "UNDEFINED": 0, 74 "BLOCK_MSG": 1, 75 "IDENTITY_MSG": 2, 76 } 77 78 func (x PullMsgType) String() string { 79 return proto.EnumName(PullMsgType_name, int32(x)) 80 } 81 func (PullMsgType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } 82 83 type GossipMessage_Tag int32 84 85 const ( 86 GossipMessage_UNDEFINED GossipMessage_Tag = 0 87 GossipMessage_EMPTY GossipMessage_Tag = 1 88 GossipMessage_ORG_ONLY GossipMessage_Tag = 2 89 GossipMessage_CHAN_ONLY GossipMessage_Tag = 3 90 GossipMessage_CHAN_AND_ORG GossipMessage_Tag = 4 91 GossipMessage_CHAN_OR_ORG GossipMessage_Tag = 5 92 ) 93 94 var GossipMessage_Tag_name = map[int32]string{ 95 0: "UNDEFINED", 96 1: "EMPTY", 97 2: "ORG_ONLY", 98 3: "CHAN_ONLY", 99 4: "CHAN_AND_ORG", 100 5: "CHAN_OR_ORG", 101 } 102 var GossipMessage_Tag_value = map[string]int32{ 103 "UNDEFINED": 0, 104 "EMPTY": 1, 105 "ORG_ONLY": 2, 106 "CHAN_ONLY": 3, 107 "CHAN_AND_ORG": 4, 108 "CHAN_OR_ORG": 5, 109 } 110 111 func (x GossipMessage_Tag) String() string { 112 return proto.EnumName(GossipMessage_Tag_name, int32(x)) 113 } 114 func (GossipMessage_Tag) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{3, 0} } 115 116 // Envelope contains a marshalled 117 // GossipMessage and a signature over it. 118 // It may also contain a SecretEnvelope 119 // which is a marshalled Secret 120 type Envelope struct { 121 Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` 122 Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` 123 SecretEnvelope *SecretEnvelope `protobuf:"bytes,3,opt,name=secretEnvelope" json:"secretEnvelope,omitempty"` 124 } 125 126 func (m *Envelope) Reset() { *m = Envelope{} } 127 func (m *Envelope) String() string { return proto.CompactTextString(m) } 128 func (*Envelope) ProtoMessage() {} 129 func (*Envelope) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } 130 131 func (m *Envelope) GetSecretEnvelope() *SecretEnvelope { 132 if m != nil { 133 return m.SecretEnvelope 134 } 135 return nil 136 } 137 138 // SecretEnvelope is a marshalled Secret 139 // and a signature over it. 140 // The signature should be validated by the peer 141 // that signed the Envelope the SecretEnvelope 142 // came with 143 type SecretEnvelope struct { 144 Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` 145 Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` 146 } 147 148 func (m *SecretEnvelope) Reset() { *m = SecretEnvelope{} } 149 func (m *SecretEnvelope) String() string { return proto.CompactTextString(m) } 150 func (*SecretEnvelope) ProtoMessage() {} 151 func (*SecretEnvelope) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } 152 153 // Secret is an entity that might be omitted 154 // from an Envelope when the remote peer that is receiving 155 // the Envelope shouldn't know the secret's content. 156 type Secret struct { 157 // Types that are valid to be assigned to Content: 158 // *Secret_InternalEndpoint 159 Content isSecret_Content `protobuf_oneof:"content"` 160 } 161 162 func (m *Secret) Reset() { *m = Secret{} } 163 func (m *Secret) String() string { return proto.CompactTextString(m) } 164 func (*Secret) ProtoMessage() {} 165 func (*Secret) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } 166 167 type isSecret_Content interface { 168 isSecret_Content() 169 } 170 171 type Secret_InternalEndpoint struct { 172 InternalEndpoint string `protobuf:"bytes,1,opt,name=internalEndpoint,oneof"` 173 } 174 175 func (*Secret_InternalEndpoint) isSecret_Content() {} 176 177 func (m *Secret) GetContent() isSecret_Content { 178 if m != nil { 179 return m.Content 180 } 181 return nil 182 } 183 184 func (m *Secret) GetInternalEndpoint() string { 185 if x, ok := m.GetContent().(*Secret_InternalEndpoint); ok { 186 return x.InternalEndpoint 187 } 188 return "" 189 } 190 191 // XXX_OneofFuncs is for the internal use of the proto package. 192 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{}) { 193 return _Secret_OneofMarshaler, _Secret_OneofUnmarshaler, _Secret_OneofSizer, []interface{}{ 194 (*Secret_InternalEndpoint)(nil), 195 } 196 } 197 198 func _Secret_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { 199 m := msg.(*Secret) 200 // content 201 switch x := m.Content.(type) { 202 case *Secret_InternalEndpoint: 203 b.EncodeVarint(1<<3 | proto.WireBytes) 204 b.EncodeStringBytes(x.InternalEndpoint) 205 case nil: 206 default: 207 return fmt.Errorf("Secret.Content has unexpected type %T", x) 208 } 209 return nil 210 } 211 212 func _Secret_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { 213 m := msg.(*Secret) 214 switch tag { 215 case 1: // content.internalEndpoint 216 if wire != proto.WireBytes { 217 return true, proto.ErrInternalBadWireType 218 } 219 x, err := b.DecodeStringBytes() 220 m.Content = &Secret_InternalEndpoint{x} 221 return true, err 222 default: 223 return false, nil 224 } 225 } 226 227 func _Secret_OneofSizer(msg proto.Message) (n int) { 228 m := msg.(*Secret) 229 // content 230 switch x := m.Content.(type) { 231 case *Secret_InternalEndpoint: 232 n += proto.SizeVarint(1<<3 | proto.WireBytes) 233 n += proto.SizeVarint(uint64(len(x.InternalEndpoint))) 234 n += len(x.InternalEndpoint) 235 case nil: 236 default: 237 panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) 238 } 239 return n 240 } 241 242 // GossipMessage defines the message sent in a gossip network 243 type GossipMessage struct { 244 // used mainly for testing, but will might be used in the future 245 // for ensuring message delivery by acking 246 Nonce uint64 `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"` 247 // The channel of the message. 248 // Some GossipMessages may set this to nil, because 249 // they are cross-channels but some may not 250 Channel []byte `protobuf:"bytes,2,opt,name=channel,proto3" json:"channel,omitempty"` 251 // determines to which peers it is allowed 252 // to forward the message 253 Tag GossipMessage_Tag `protobuf:"varint,3,opt,name=tag,enum=gossip.GossipMessage_Tag" json:"tag,omitempty"` 254 // Types that are valid to be assigned to Content: 255 // *GossipMessage_AliveMsg 256 // *GossipMessage_MemReq 257 // *GossipMessage_MemRes 258 // *GossipMessage_DataMsg 259 // *GossipMessage_Hello 260 // *GossipMessage_DataDig 261 // *GossipMessage_DataReq 262 // *GossipMessage_DataUpdate 263 // *GossipMessage_Empty 264 // *GossipMessage_Conn 265 // *GossipMessage_StateInfo 266 // *GossipMessage_StateSnapshot 267 // *GossipMessage_StateInfoPullReq 268 // *GossipMessage_StateRequest 269 // *GossipMessage_StateResponse 270 // *GossipMessage_LeadershipMsg 271 // *GossipMessage_PeerIdentity 272 Content isGossipMessage_Content `protobuf_oneof:"content"` 273 } 274 275 func (m *GossipMessage) Reset() { *m = GossipMessage{} } 276 func (m *GossipMessage) String() string { return proto.CompactTextString(m) } 277 func (*GossipMessage) ProtoMessage() {} 278 func (*GossipMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } 279 280 type isGossipMessage_Content interface { 281 isGossipMessage_Content() 282 } 283 284 type GossipMessage_AliveMsg struct { 285 AliveMsg *AliveMessage `protobuf:"bytes,5,opt,name=alive_msg,json=aliveMsg,oneof"` 286 } 287 type GossipMessage_MemReq struct { 288 MemReq *MembershipRequest `protobuf:"bytes,6,opt,name=mem_req,json=memReq,oneof"` 289 } 290 type GossipMessage_MemRes struct { 291 MemRes *MembershipResponse `protobuf:"bytes,7,opt,name=mem_res,json=memRes,oneof"` 292 } 293 type GossipMessage_DataMsg struct { 294 DataMsg *DataMessage `protobuf:"bytes,8,opt,name=data_msg,json=dataMsg,oneof"` 295 } 296 type GossipMessage_Hello struct { 297 Hello *GossipHello `protobuf:"bytes,9,opt,name=hello,oneof"` 298 } 299 type GossipMessage_DataDig struct { 300 DataDig *DataDigest `protobuf:"bytes,10,opt,name=data_dig,json=dataDig,oneof"` 301 } 302 type GossipMessage_DataReq struct { 303 DataReq *DataRequest `protobuf:"bytes,11,opt,name=data_req,json=dataReq,oneof"` 304 } 305 type GossipMessage_DataUpdate struct { 306 DataUpdate *DataUpdate `protobuf:"bytes,12,opt,name=data_update,json=dataUpdate,oneof"` 307 } 308 type GossipMessage_Empty struct { 309 Empty *Empty `protobuf:"bytes,13,opt,name=empty,oneof"` 310 } 311 type GossipMessage_Conn struct { 312 Conn *ConnEstablish `protobuf:"bytes,14,opt,name=conn,oneof"` 313 } 314 type GossipMessage_StateInfo struct { 315 StateInfo *StateInfo `protobuf:"bytes,15,opt,name=state_info,json=stateInfo,oneof"` 316 } 317 type GossipMessage_StateSnapshot struct { 318 StateSnapshot *StateInfoSnapshot `protobuf:"bytes,16,opt,name=state_snapshot,json=stateSnapshot,oneof"` 319 } 320 type GossipMessage_StateInfoPullReq struct { 321 StateInfoPullReq *StateInfoPullRequest `protobuf:"bytes,17,opt,name=state_info_pull_req,json=stateInfoPullReq,oneof"` 322 } 323 type GossipMessage_StateRequest struct { 324 StateRequest *RemoteStateRequest `protobuf:"bytes,18,opt,name=state_request,json=stateRequest,oneof"` 325 } 326 type GossipMessage_StateResponse struct { 327 StateResponse *RemoteStateResponse `protobuf:"bytes,19,opt,name=state_response,json=stateResponse,oneof"` 328 } 329 type GossipMessage_LeadershipMsg struct { 330 LeadershipMsg *LeadershipMessage `protobuf:"bytes,20,opt,name=leadership_msg,json=leadershipMsg,oneof"` 331 } 332 type GossipMessage_PeerIdentity struct { 333 PeerIdentity *PeerIdentity `protobuf:"bytes,21,opt,name=peer_identity,json=peerIdentity,oneof"` 334 } 335 336 func (*GossipMessage_AliveMsg) isGossipMessage_Content() {} 337 func (*GossipMessage_MemReq) isGossipMessage_Content() {} 338 func (*GossipMessage_MemRes) isGossipMessage_Content() {} 339 func (*GossipMessage_DataMsg) isGossipMessage_Content() {} 340 func (*GossipMessage_Hello) isGossipMessage_Content() {} 341 func (*GossipMessage_DataDig) isGossipMessage_Content() {} 342 func (*GossipMessage_DataReq) isGossipMessage_Content() {} 343 func (*GossipMessage_DataUpdate) isGossipMessage_Content() {} 344 func (*GossipMessage_Empty) isGossipMessage_Content() {} 345 func (*GossipMessage_Conn) isGossipMessage_Content() {} 346 func (*GossipMessage_StateInfo) isGossipMessage_Content() {} 347 func (*GossipMessage_StateSnapshot) isGossipMessage_Content() {} 348 func (*GossipMessage_StateInfoPullReq) isGossipMessage_Content() {} 349 func (*GossipMessage_StateRequest) isGossipMessage_Content() {} 350 func (*GossipMessage_StateResponse) isGossipMessage_Content() {} 351 func (*GossipMessage_LeadershipMsg) isGossipMessage_Content() {} 352 func (*GossipMessage_PeerIdentity) isGossipMessage_Content() {} 353 354 func (m *GossipMessage) GetContent() isGossipMessage_Content { 355 if m != nil { 356 return m.Content 357 } 358 return nil 359 } 360 361 func (m *GossipMessage) GetAliveMsg() *AliveMessage { 362 if x, ok := m.GetContent().(*GossipMessage_AliveMsg); ok { 363 return x.AliveMsg 364 } 365 return nil 366 } 367 368 func (m *GossipMessage) GetMemReq() *MembershipRequest { 369 if x, ok := m.GetContent().(*GossipMessage_MemReq); ok { 370 return x.MemReq 371 } 372 return nil 373 } 374 375 func (m *GossipMessage) GetMemRes() *MembershipResponse { 376 if x, ok := m.GetContent().(*GossipMessage_MemRes); ok { 377 return x.MemRes 378 } 379 return nil 380 } 381 382 func (m *GossipMessage) GetDataMsg() *DataMessage { 383 if x, ok := m.GetContent().(*GossipMessage_DataMsg); ok { 384 return x.DataMsg 385 } 386 return nil 387 } 388 389 func (m *GossipMessage) GetHello() *GossipHello { 390 if x, ok := m.GetContent().(*GossipMessage_Hello); ok { 391 return x.Hello 392 } 393 return nil 394 } 395 396 func (m *GossipMessage) GetDataDig() *DataDigest { 397 if x, ok := m.GetContent().(*GossipMessage_DataDig); ok { 398 return x.DataDig 399 } 400 return nil 401 } 402 403 func (m *GossipMessage) GetDataReq() *DataRequest { 404 if x, ok := m.GetContent().(*GossipMessage_DataReq); ok { 405 return x.DataReq 406 } 407 return nil 408 } 409 410 func (m *GossipMessage) GetDataUpdate() *DataUpdate { 411 if x, ok := m.GetContent().(*GossipMessage_DataUpdate); ok { 412 return x.DataUpdate 413 } 414 return nil 415 } 416 417 func (m *GossipMessage) GetEmpty() *Empty { 418 if x, ok := m.GetContent().(*GossipMessage_Empty); ok { 419 return x.Empty 420 } 421 return nil 422 } 423 424 func (m *GossipMessage) GetConn() *ConnEstablish { 425 if x, ok := m.GetContent().(*GossipMessage_Conn); ok { 426 return x.Conn 427 } 428 return nil 429 } 430 431 func (m *GossipMessage) GetStateInfo() *StateInfo { 432 if x, ok := m.GetContent().(*GossipMessage_StateInfo); ok { 433 return x.StateInfo 434 } 435 return nil 436 } 437 438 func (m *GossipMessage) GetStateSnapshot() *StateInfoSnapshot { 439 if x, ok := m.GetContent().(*GossipMessage_StateSnapshot); ok { 440 return x.StateSnapshot 441 } 442 return nil 443 } 444 445 func (m *GossipMessage) GetStateInfoPullReq() *StateInfoPullRequest { 446 if x, ok := m.GetContent().(*GossipMessage_StateInfoPullReq); ok { 447 return x.StateInfoPullReq 448 } 449 return nil 450 } 451 452 func (m *GossipMessage) GetStateRequest() *RemoteStateRequest { 453 if x, ok := m.GetContent().(*GossipMessage_StateRequest); ok { 454 return x.StateRequest 455 } 456 return nil 457 } 458 459 func (m *GossipMessage) GetStateResponse() *RemoteStateResponse { 460 if x, ok := m.GetContent().(*GossipMessage_StateResponse); ok { 461 return x.StateResponse 462 } 463 return nil 464 } 465 466 func (m *GossipMessage) GetLeadershipMsg() *LeadershipMessage { 467 if x, ok := m.GetContent().(*GossipMessage_LeadershipMsg); ok { 468 return x.LeadershipMsg 469 } 470 return nil 471 } 472 473 func (m *GossipMessage) GetPeerIdentity() *PeerIdentity { 474 if x, ok := m.GetContent().(*GossipMessage_PeerIdentity); ok { 475 return x.PeerIdentity 476 } 477 return nil 478 } 479 480 // XXX_OneofFuncs is for the internal use of the proto package. 481 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{}) { 482 return _GossipMessage_OneofMarshaler, _GossipMessage_OneofUnmarshaler, _GossipMessage_OneofSizer, []interface{}{ 483 (*GossipMessage_AliveMsg)(nil), 484 (*GossipMessage_MemReq)(nil), 485 (*GossipMessage_MemRes)(nil), 486 (*GossipMessage_DataMsg)(nil), 487 (*GossipMessage_Hello)(nil), 488 (*GossipMessage_DataDig)(nil), 489 (*GossipMessage_DataReq)(nil), 490 (*GossipMessage_DataUpdate)(nil), 491 (*GossipMessage_Empty)(nil), 492 (*GossipMessage_Conn)(nil), 493 (*GossipMessage_StateInfo)(nil), 494 (*GossipMessage_StateSnapshot)(nil), 495 (*GossipMessage_StateInfoPullReq)(nil), 496 (*GossipMessage_StateRequest)(nil), 497 (*GossipMessage_StateResponse)(nil), 498 (*GossipMessage_LeadershipMsg)(nil), 499 (*GossipMessage_PeerIdentity)(nil), 500 } 501 } 502 503 func _GossipMessage_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { 504 m := msg.(*GossipMessage) 505 // content 506 switch x := m.Content.(type) { 507 case *GossipMessage_AliveMsg: 508 b.EncodeVarint(5<<3 | proto.WireBytes) 509 if err := b.EncodeMessage(x.AliveMsg); err != nil { 510 return err 511 } 512 case *GossipMessage_MemReq: 513 b.EncodeVarint(6<<3 | proto.WireBytes) 514 if err := b.EncodeMessage(x.MemReq); err != nil { 515 return err 516 } 517 case *GossipMessage_MemRes: 518 b.EncodeVarint(7<<3 | proto.WireBytes) 519 if err := b.EncodeMessage(x.MemRes); err != nil { 520 return err 521 } 522 case *GossipMessage_DataMsg: 523 b.EncodeVarint(8<<3 | proto.WireBytes) 524 if err := b.EncodeMessage(x.DataMsg); err != nil { 525 return err 526 } 527 case *GossipMessage_Hello: 528 b.EncodeVarint(9<<3 | proto.WireBytes) 529 if err := b.EncodeMessage(x.Hello); err != nil { 530 return err 531 } 532 case *GossipMessage_DataDig: 533 b.EncodeVarint(10<<3 | proto.WireBytes) 534 if err := b.EncodeMessage(x.DataDig); err != nil { 535 return err 536 } 537 case *GossipMessage_DataReq: 538 b.EncodeVarint(11<<3 | proto.WireBytes) 539 if err := b.EncodeMessage(x.DataReq); err != nil { 540 return err 541 } 542 case *GossipMessage_DataUpdate: 543 b.EncodeVarint(12<<3 | proto.WireBytes) 544 if err := b.EncodeMessage(x.DataUpdate); err != nil { 545 return err 546 } 547 case *GossipMessage_Empty: 548 b.EncodeVarint(13<<3 | proto.WireBytes) 549 if err := b.EncodeMessage(x.Empty); err != nil { 550 return err 551 } 552 case *GossipMessage_Conn: 553 b.EncodeVarint(14<<3 | proto.WireBytes) 554 if err := b.EncodeMessage(x.Conn); err != nil { 555 return err 556 } 557 case *GossipMessage_StateInfo: 558 b.EncodeVarint(15<<3 | proto.WireBytes) 559 if err := b.EncodeMessage(x.StateInfo); err != nil { 560 return err 561 } 562 case *GossipMessage_StateSnapshot: 563 b.EncodeVarint(16<<3 | proto.WireBytes) 564 if err := b.EncodeMessage(x.StateSnapshot); err != nil { 565 return err 566 } 567 case *GossipMessage_StateInfoPullReq: 568 b.EncodeVarint(17<<3 | proto.WireBytes) 569 if err := b.EncodeMessage(x.StateInfoPullReq); err != nil { 570 return err 571 } 572 case *GossipMessage_StateRequest: 573 b.EncodeVarint(18<<3 | proto.WireBytes) 574 if err := b.EncodeMessage(x.StateRequest); err != nil { 575 return err 576 } 577 case *GossipMessage_StateResponse: 578 b.EncodeVarint(19<<3 | proto.WireBytes) 579 if err := b.EncodeMessage(x.StateResponse); err != nil { 580 return err 581 } 582 case *GossipMessage_LeadershipMsg: 583 b.EncodeVarint(20<<3 | proto.WireBytes) 584 if err := b.EncodeMessage(x.LeadershipMsg); err != nil { 585 return err 586 } 587 case *GossipMessage_PeerIdentity: 588 b.EncodeVarint(21<<3 | proto.WireBytes) 589 if err := b.EncodeMessage(x.PeerIdentity); err != nil { 590 return err 591 } 592 case nil: 593 default: 594 return fmt.Errorf("GossipMessage.Content has unexpected type %T", x) 595 } 596 return nil 597 } 598 599 func _GossipMessage_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { 600 m := msg.(*GossipMessage) 601 switch tag { 602 case 5: // content.alive_msg 603 if wire != proto.WireBytes { 604 return true, proto.ErrInternalBadWireType 605 } 606 msg := new(AliveMessage) 607 err := b.DecodeMessage(msg) 608 m.Content = &GossipMessage_AliveMsg{msg} 609 return true, err 610 case 6: // content.mem_req 611 if wire != proto.WireBytes { 612 return true, proto.ErrInternalBadWireType 613 } 614 msg := new(MembershipRequest) 615 err := b.DecodeMessage(msg) 616 m.Content = &GossipMessage_MemReq{msg} 617 return true, err 618 case 7: // content.mem_res 619 if wire != proto.WireBytes { 620 return true, proto.ErrInternalBadWireType 621 } 622 msg := new(MembershipResponse) 623 err := b.DecodeMessage(msg) 624 m.Content = &GossipMessage_MemRes{msg} 625 return true, err 626 case 8: // content.data_msg 627 if wire != proto.WireBytes { 628 return true, proto.ErrInternalBadWireType 629 } 630 msg := new(DataMessage) 631 err := b.DecodeMessage(msg) 632 m.Content = &GossipMessage_DataMsg{msg} 633 return true, err 634 case 9: // content.hello 635 if wire != proto.WireBytes { 636 return true, proto.ErrInternalBadWireType 637 } 638 msg := new(GossipHello) 639 err := b.DecodeMessage(msg) 640 m.Content = &GossipMessage_Hello{msg} 641 return true, err 642 case 10: // content.data_dig 643 if wire != proto.WireBytes { 644 return true, proto.ErrInternalBadWireType 645 } 646 msg := new(DataDigest) 647 err := b.DecodeMessage(msg) 648 m.Content = &GossipMessage_DataDig{msg} 649 return true, err 650 case 11: // content.data_req 651 if wire != proto.WireBytes { 652 return true, proto.ErrInternalBadWireType 653 } 654 msg := new(DataRequest) 655 err := b.DecodeMessage(msg) 656 m.Content = &GossipMessage_DataReq{msg} 657 return true, err 658 case 12: // content.data_update 659 if wire != proto.WireBytes { 660 return true, proto.ErrInternalBadWireType 661 } 662 msg := new(DataUpdate) 663 err := b.DecodeMessage(msg) 664 m.Content = &GossipMessage_DataUpdate{msg} 665 return true, err 666 case 13: // content.empty 667 if wire != proto.WireBytes { 668 return true, proto.ErrInternalBadWireType 669 } 670 msg := new(Empty) 671 err := b.DecodeMessage(msg) 672 m.Content = &GossipMessage_Empty{msg} 673 return true, err 674 case 14: // content.conn 675 if wire != proto.WireBytes { 676 return true, proto.ErrInternalBadWireType 677 } 678 msg := new(ConnEstablish) 679 err := b.DecodeMessage(msg) 680 m.Content = &GossipMessage_Conn{msg} 681 return true, err 682 case 15: // content.state_info 683 if wire != proto.WireBytes { 684 return true, proto.ErrInternalBadWireType 685 } 686 msg := new(StateInfo) 687 err := b.DecodeMessage(msg) 688 m.Content = &GossipMessage_StateInfo{msg} 689 return true, err 690 case 16: // content.state_snapshot 691 if wire != proto.WireBytes { 692 return true, proto.ErrInternalBadWireType 693 } 694 msg := new(StateInfoSnapshot) 695 err := b.DecodeMessage(msg) 696 m.Content = &GossipMessage_StateSnapshot{msg} 697 return true, err 698 case 17: // content.state_info_pull_req 699 if wire != proto.WireBytes { 700 return true, proto.ErrInternalBadWireType 701 } 702 msg := new(StateInfoPullRequest) 703 err := b.DecodeMessage(msg) 704 m.Content = &GossipMessage_StateInfoPullReq{msg} 705 return true, err 706 case 18: // content.state_request 707 if wire != proto.WireBytes { 708 return true, proto.ErrInternalBadWireType 709 } 710 msg := new(RemoteStateRequest) 711 err := b.DecodeMessage(msg) 712 m.Content = &GossipMessage_StateRequest{msg} 713 return true, err 714 case 19: // content.state_response 715 if wire != proto.WireBytes { 716 return true, proto.ErrInternalBadWireType 717 } 718 msg := new(RemoteStateResponse) 719 err := b.DecodeMessage(msg) 720 m.Content = &GossipMessage_StateResponse{msg} 721 return true, err 722 case 20: // content.leadership_msg 723 if wire != proto.WireBytes { 724 return true, proto.ErrInternalBadWireType 725 } 726 msg := new(LeadershipMessage) 727 err := b.DecodeMessage(msg) 728 m.Content = &GossipMessage_LeadershipMsg{msg} 729 return true, err 730 case 21: // content.peer_identity 731 if wire != proto.WireBytes { 732 return true, proto.ErrInternalBadWireType 733 } 734 msg := new(PeerIdentity) 735 err := b.DecodeMessage(msg) 736 m.Content = &GossipMessage_PeerIdentity{msg} 737 return true, err 738 default: 739 return false, nil 740 } 741 } 742 743 func _GossipMessage_OneofSizer(msg proto.Message) (n int) { 744 m := msg.(*GossipMessage) 745 // content 746 switch x := m.Content.(type) { 747 case *GossipMessage_AliveMsg: 748 s := proto.Size(x.AliveMsg) 749 n += proto.SizeVarint(5<<3 | proto.WireBytes) 750 n += proto.SizeVarint(uint64(s)) 751 n += s 752 case *GossipMessage_MemReq: 753 s := proto.Size(x.MemReq) 754 n += proto.SizeVarint(6<<3 | proto.WireBytes) 755 n += proto.SizeVarint(uint64(s)) 756 n += s 757 case *GossipMessage_MemRes: 758 s := proto.Size(x.MemRes) 759 n += proto.SizeVarint(7<<3 | proto.WireBytes) 760 n += proto.SizeVarint(uint64(s)) 761 n += s 762 case *GossipMessage_DataMsg: 763 s := proto.Size(x.DataMsg) 764 n += proto.SizeVarint(8<<3 | proto.WireBytes) 765 n += proto.SizeVarint(uint64(s)) 766 n += s 767 case *GossipMessage_Hello: 768 s := proto.Size(x.Hello) 769 n += proto.SizeVarint(9<<3 | proto.WireBytes) 770 n += proto.SizeVarint(uint64(s)) 771 n += s 772 case *GossipMessage_DataDig: 773 s := proto.Size(x.DataDig) 774 n += proto.SizeVarint(10<<3 | proto.WireBytes) 775 n += proto.SizeVarint(uint64(s)) 776 n += s 777 case *GossipMessage_DataReq: 778 s := proto.Size(x.DataReq) 779 n += proto.SizeVarint(11<<3 | proto.WireBytes) 780 n += proto.SizeVarint(uint64(s)) 781 n += s 782 case *GossipMessage_DataUpdate: 783 s := proto.Size(x.DataUpdate) 784 n += proto.SizeVarint(12<<3 | proto.WireBytes) 785 n += proto.SizeVarint(uint64(s)) 786 n += s 787 case *GossipMessage_Empty: 788 s := proto.Size(x.Empty) 789 n += proto.SizeVarint(13<<3 | proto.WireBytes) 790 n += proto.SizeVarint(uint64(s)) 791 n += s 792 case *GossipMessage_Conn: 793 s := proto.Size(x.Conn) 794 n += proto.SizeVarint(14<<3 | proto.WireBytes) 795 n += proto.SizeVarint(uint64(s)) 796 n += s 797 case *GossipMessage_StateInfo: 798 s := proto.Size(x.StateInfo) 799 n += proto.SizeVarint(15<<3 | proto.WireBytes) 800 n += proto.SizeVarint(uint64(s)) 801 n += s 802 case *GossipMessage_StateSnapshot: 803 s := proto.Size(x.StateSnapshot) 804 n += proto.SizeVarint(16<<3 | proto.WireBytes) 805 n += proto.SizeVarint(uint64(s)) 806 n += s 807 case *GossipMessage_StateInfoPullReq: 808 s := proto.Size(x.StateInfoPullReq) 809 n += proto.SizeVarint(17<<3 | proto.WireBytes) 810 n += proto.SizeVarint(uint64(s)) 811 n += s 812 case *GossipMessage_StateRequest: 813 s := proto.Size(x.StateRequest) 814 n += proto.SizeVarint(18<<3 | proto.WireBytes) 815 n += proto.SizeVarint(uint64(s)) 816 n += s 817 case *GossipMessage_StateResponse: 818 s := proto.Size(x.StateResponse) 819 n += proto.SizeVarint(19<<3 | proto.WireBytes) 820 n += proto.SizeVarint(uint64(s)) 821 n += s 822 case *GossipMessage_LeadershipMsg: 823 s := proto.Size(x.LeadershipMsg) 824 n += proto.SizeVarint(20<<3 | proto.WireBytes) 825 n += proto.SizeVarint(uint64(s)) 826 n += s 827 case *GossipMessage_PeerIdentity: 828 s := proto.Size(x.PeerIdentity) 829 n += proto.SizeVarint(21<<3 | proto.WireBytes) 830 n += proto.SizeVarint(uint64(s)) 831 n += s 832 case nil: 833 default: 834 panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) 835 } 836 return n 837 } 838 839 // StateInfo is used for a peer to relay its state information 840 // to other peers 841 type StateInfo struct { 842 Metadata []byte `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` 843 Timestamp *PeerTime `protobuf:"bytes,2,opt,name=timestamp" json:"timestamp,omitempty"` 844 PkiId []byte `protobuf:"bytes,3,opt,name=pki_id,json=pkiId,proto3" json:"pki_id,omitempty"` 845 // channelMAC is an authentication code that proves 846 // that the peer that sent this message knows 847 // the name of the channel. 848 // The channel name that this message relates to 849 // can only be computed by a peer that has joined 850 // the channel 851 ChannelMAC []byte `protobuf:"bytes,4,opt,name=channelMAC,proto3" json:"channelMAC,omitempty"` 852 } 853 854 func (m *StateInfo) Reset() { *m = StateInfo{} } 855 func (m *StateInfo) String() string { return proto.CompactTextString(m) } 856 func (*StateInfo) ProtoMessage() {} 857 func (*StateInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } 858 859 func (m *StateInfo) GetTimestamp() *PeerTime { 860 if m != nil { 861 return m.Timestamp 862 } 863 return nil 864 } 865 866 // StateInfoSnapshot is an aggregation of StateInfo messages 867 type StateInfoSnapshot struct { 868 Elements []*Envelope `protobuf:"bytes,1,rep,name=elements" json:"elements,omitempty"` 869 } 870 871 func (m *StateInfoSnapshot) Reset() { *m = StateInfoSnapshot{} } 872 func (m *StateInfoSnapshot) String() string { return proto.CompactTextString(m) } 873 func (*StateInfoSnapshot) ProtoMessage() {} 874 func (*StateInfoSnapshot) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } 875 876 func (m *StateInfoSnapshot) GetElements() []*Envelope { 877 if m != nil { 878 return m.Elements 879 } 880 return nil 881 } 882 883 // StateInfoPullRequest is used to fetch a StateInfoSnapshot 884 // from a remote peer 885 type StateInfoPullRequest struct { 886 // channelMAC is an authentication code that proves 887 // that the peer that sent this message knows 888 // the name of the channel. 889 // The channel name that this message relates to 890 // can only be computed by a peer that has joined 891 // the channel 892 ChannelMAC []byte `protobuf:"bytes,1,opt,name=channelMAC,proto3" json:"channelMAC,omitempty"` 893 } 894 895 func (m *StateInfoPullRequest) Reset() { *m = StateInfoPullRequest{} } 896 func (m *StateInfoPullRequest) String() string { return proto.CompactTextString(m) } 897 func (*StateInfoPullRequest) ProtoMessage() {} 898 func (*StateInfoPullRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } 899 900 // ConnEstablish is the message used for the gossip handshake 901 // Whenever a peer connects to another peer, it handshakes 902 // with it by sending this message that proves its identity 903 type ConnEstablish struct { 904 PkiId []byte `protobuf:"bytes,1,opt,name=pki_id,json=pkiId,proto3" json:"pki_id,omitempty"` 905 Cert []byte `protobuf:"bytes,2,opt,name=cert,proto3" json:"cert,omitempty"` 906 Hash []byte `protobuf:"bytes,3,opt,name=hash,proto3" json:"hash,omitempty"` 907 } 908 909 func (m *ConnEstablish) Reset() { *m = ConnEstablish{} } 910 func (m *ConnEstablish) String() string { return proto.CompactTextString(m) } 911 func (*ConnEstablish) ProtoMessage() {} 912 func (*ConnEstablish) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } 913 914 // PeerIdentity defines the identity of the peer 915 // Used to make other peers learn of the identity 916 // of a certain peer 917 type PeerIdentity struct { 918 PkiId []byte `protobuf:"bytes,1,opt,name=pki_id,json=pkiId,proto3" json:"pki_id,omitempty"` 919 Cert []byte `protobuf:"bytes,2,opt,name=cert,proto3" json:"cert,omitempty"` 920 Metadata []byte `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"` 921 } 922 923 func (m *PeerIdentity) Reset() { *m = PeerIdentity{} } 924 func (m *PeerIdentity) String() string { return proto.CompactTextString(m) } 925 func (*PeerIdentity) ProtoMessage() {} 926 func (*PeerIdentity) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } 927 928 // DataRequest is a message used for a peer to request 929 // certain data blocks from a remote peer 930 type DataRequest struct { 931 Nonce uint64 `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"` 932 Digests []string `protobuf:"bytes,2,rep,name=digests" json:"digests,omitempty"` 933 MsgType PullMsgType `protobuf:"varint,3,opt,name=msg_type,json=msgType,enum=gossip.PullMsgType" json:"msg_type,omitempty"` 934 } 935 936 func (m *DataRequest) Reset() { *m = DataRequest{} } 937 func (m *DataRequest) String() string { return proto.CompactTextString(m) } 938 func (*DataRequest) ProtoMessage() {} 939 func (*DataRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } 940 941 // GossipHello is the message that is used for the peer to initiate 942 // a pull round with another peer 943 type GossipHello struct { 944 Nonce uint64 `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"` 945 Metadata []byte `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` 946 MsgType PullMsgType `protobuf:"varint,3,opt,name=msg_type,json=msgType,enum=gossip.PullMsgType" json:"msg_type,omitempty"` 947 } 948 949 func (m *GossipHello) Reset() { *m = GossipHello{} } 950 func (m *GossipHello) String() string { return proto.CompactTextString(m) } 951 func (*GossipHello) ProtoMessage() {} 952 func (*GossipHello) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } 953 954 // DataUpdate is the the final message in the pull phase 955 // sent from the receiver to the initiator 956 type DataUpdate struct { 957 Nonce uint64 `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"` 958 Data []*Envelope `protobuf:"bytes,2,rep,name=data" json:"data,omitempty"` 959 MsgType PullMsgType `protobuf:"varint,3,opt,name=msg_type,json=msgType,enum=gossip.PullMsgType" json:"msg_type,omitempty"` 960 } 961 962 func (m *DataUpdate) Reset() { *m = DataUpdate{} } 963 func (m *DataUpdate) String() string { return proto.CompactTextString(m) } 964 func (*DataUpdate) ProtoMessage() {} 965 func (*DataUpdate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } 966 967 func (m *DataUpdate) GetData() []*Envelope { 968 if m != nil { 969 return m.Data 970 } 971 return nil 972 } 973 974 // DataDigest is the message sent from the receiver peer 975 // to the initator peer and contains the data items it has 976 type DataDigest struct { 977 Nonce uint64 `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"` 978 Digests []string `protobuf:"bytes,2,rep,name=digests" json:"digests,omitempty"` 979 MsgType PullMsgType `protobuf:"varint,3,opt,name=msg_type,json=msgType,enum=gossip.PullMsgType" json:"msg_type,omitempty"` 980 } 981 982 func (m *DataDigest) Reset() { *m = DataDigest{} } 983 func (m *DataDigest) String() string { return proto.CompactTextString(m) } 984 func (*DataDigest) ProtoMessage() {} 985 func (*DataDigest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } 986 987 // DataMessage is the message that contains a block 988 type DataMessage struct { 989 Payload *Payload `protobuf:"bytes,1,opt,name=payload" json:"payload,omitempty"` 990 } 991 992 func (m *DataMessage) Reset() { *m = DataMessage{} } 993 func (m *DataMessage) String() string { return proto.CompactTextString(m) } 994 func (*DataMessage) ProtoMessage() {} 995 func (*DataMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } 996 997 func (m *DataMessage) GetPayload() *Payload { 998 if m != nil { 999 return m.Payload 1000 } 1001 return nil 1002 } 1003 1004 // Payload contains a block 1005 type Payload struct { 1006 SeqNum uint64 `protobuf:"varint,1,opt,name=seq_num,json=seqNum" json:"seq_num,omitempty"` 1007 Hash string `protobuf:"bytes,2,opt,name=hash" json:"hash,omitempty"` 1008 Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` 1009 } 1010 1011 func (m *Payload) Reset() { *m = Payload{} } 1012 func (m *Payload) String() string { return proto.CompactTextString(m) } 1013 func (*Payload) ProtoMessage() {} 1014 func (*Payload) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } 1015 1016 // AliveMessage is sent to inform remote peers 1017 // of a peer's existence and activity 1018 type AliveMessage struct { 1019 Membership *Member `protobuf:"bytes,1,opt,name=membership" json:"membership,omitempty"` 1020 Timestamp *PeerTime `protobuf:"bytes,2,opt,name=timestamp" json:"timestamp,omitempty"` 1021 Identity []byte `protobuf:"bytes,4,opt,name=identity,proto3" json:"identity,omitempty"` 1022 } 1023 1024 func (m *AliveMessage) Reset() { *m = AliveMessage{} } 1025 func (m *AliveMessage) String() string { return proto.CompactTextString(m) } 1026 func (*AliveMessage) ProtoMessage() {} 1027 func (*AliveMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } 1028 1029 func (m *AliveMessage) GetMembership() *Member { 1030 if m != nil { 1031 return m.Membership 1032 } 1033 return nil 1034 } 1035 1036 func (m *AliveMessage) GetTimestamp() *PeerTime { 1037 if m != nil { 1038 return m.Timestamp 1039 } 1040 return nil 1041 } 1042 1043 // Leadership Message is sent during leader election to inform 1044 // remote peers about intent of peer to proclaim itself as leader 1045 type LeadershipMessage struct { 1046 PkiId []byte `protobuf:"bytes,1,opt,name=pki_id,json=pkiId,proto3" json:"pki_id,omitempty"` 1047 Timestamp *PeerTime `protobuf:"bytes,2,opt,name=timestamp" json:"timestamp,omitempty"` 1048 IsDeclaration bool `protobuf:"varint,3,opt,name=is_declaration,json=isDeclaration" json:"is_declaration,omitempty"` 1049 } 1050 1051 func (m *LeadershipMessage) Reset() { *m = LeadershipMessage{} } 1052 func (m *LeadershipMessage) String() string { return proto.CompactTextString(m) } 1053 func (*LeadershipMessage) ProtoMessage() {} 1054 func (*LeadershipMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } 1055 1056 func (m *LeadershipMessage) GetTimestamp() *PeerTime { 1057 if m != nil { 1058 return m.Timestamp 1059 } 1060 return nil 1061 } 1062 1063 // PeerTime defines the logical time of a peer's life 1064 type PeerTime struct { 1065 IncNumber uint64 `protobuf:"varint,1,opt,name=inc_number,json=incNumber" json:"inc_number,omitempty"` 1066 SeqNum uint64 `protobuf:"varint,2,opt,name=seq_num,json=seqNum" json:"seq_num,omitempty"` 1067 } 1068 1069 func (m *PeerTime) Reset() { *m = PeerTime{} } 1070 func (m *PeerTime) String() string { return proto.CompactTextString(m) } 1071 func (*PeerTime) ProtoMessage() {} 1072 func (*PeerTime) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } 1073 1074 // MembershipRequest is used to ask membership information 1075 // from a remote peer 1076 type MembershipRequest struct { 1077 SelfInformation *Envelope `protobuf:"bytes,1,opt,name=self_information,json=selfInformation" json:"self_information,omitempty"` 1078 Known [][]byte `protobuf:"bytes,2,rep,name=known,proto3" json:"known,omitempty"` 1079 } 1080 1081 func (m *MembershipRequest) Reset() { *m = MembershipRequest{} } 1082 func (m *MembershipRequest) String() string { return proto.CompactTextString(m) } 1083 func (*MembershipRequest) ProtoMessage() {} 1084 func (*MembershipRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } 1085 1086 func (m *MembershipRequest) GetSelfInformation() *Envelope { 1087 if m != nil { 1088 return m.SelfInformation 1089 } 1090 return nil 1091 } 1092 1093 // MembershipResponse is used for replying to MembershipRequests 1094 type MembershipResponse struct { 1095 Alive []*Envelope `protobuf:"bytes,1,rep,name=alive" json:"alive,omitempty"` 1096 Dead []*Envelope `protobuf:"bytes,2,rep,name=dead" json:"dead,omitempty"` 1097 } 1098 1099 func (m *MembershipResponse) Reset() { *m = MembershipResponse{} } 1100 func (m *MembershipResponse) String() string { return proto.CompactTextString(m) } 1101 func (*MembershipResponse) ProtoMessage() {} 1102 func (*MembershipResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } 1103 1104 func (m *MembershipResponse) GetAlive() []*Envelope { 1105 if m != nil { 1106 return m.Alive 1107 } 1108 return nil 1109 } 1110 1111 func (m *MembershipResponse) GetDead() []*Envelope { 1112 if m != nil { 1113 return m.Dead 1114 } 1115 return nil 1116 } 1117 1118 // Member holds membership-related information 1119 // about a peer 1120 type Member struct { 1121 Endpoint string `protobuf:"bytes,1,opt,name=endpoint" json:"endpoint,omitempty"` 1122 Metadata []byte `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` 1123 PkiId []byte `protobuf:"bytes,3,opt,name=pki_id,json=pkiId,proto3" json:"pki_id,omitempty"` 1124 } 1125 1126 func (m *Member) Reset() { *m = Member{} } 1127 func (m *Member) String() string { return proto.CompactTextString(m) } 1128 func (*Member) ProtoMessage() {} 1129 func (*Member) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } 1130 1131 // Empty is used for pinging and in tests 1132 type Empty struct { 1133 } 1134 1135 func (m *Empty) Reset() { *m = Empty{} } 1136 func (m *Empty) String() string { return proto.CompactTextString(m) } 1137 func (*Empty) ProtoMessage() {} 1138 func (*Empty) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} } 1139 1140 // RemoteStateRequest is used to ask a set of blocks 1141 // from a remote peer 1142 type RemoteStateRequest struct { 1143 StartSeqNum uint64 `protobuf:"varint,1,opt,name=start_seq_num,json=startSeqNum" json:"start_seq_num,omitempty"` 1144 EndSeqNum uint64 `protobuf:"varint,2,opt,name=end_seq_num,json=endSeqNum" json:"end_seq_num,omitempty"` 1145 } 1146 1147 func (m *RemoteStateRequest) Reset() { *m = RemoteStateRequest{} } 1148 func (m *RemoteStateRequest) String() string { return proto.CompactTextString(m) } 1149 func (*RemoteStateRequest) ProtoMessage() {} 1150 func (*RemoteStateRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} } 1151 1152 // RemoteStateResponse is used to send a set of blocks 1153 // to a remote peer 1154 type RemoteStateResponse struct { 1155 Payloads []*Payload `protobuf:"bytes,1,rep,name=payloads" json:"payloads,omitempty"` 1156 } 1157 1158 func (m *RemoteStateResponse) Reset() { *m = RemoteStateResponse{} } 1159 func (m *RemoteStateResponse) String() string { return proto.CompactTextString(m) } 1160 func (*RemoteStateResponse) ProtoMessage() {} 1161 func (*RemoteStateResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} } 1162 1163 func (m *RemoteStateResponse) GetPayloads() []*Payload { 1164 if m != nil { 1165 return m.Payloads 1166 } 1167 return nil 1168 } 1169 1170 func init() { 1171 proto.RegisterType((*Envelope)(nil), "gossip.Envelope") 1172 proto.RegisterType((*SecretEnvelope)(nil), "gossip.SecretEnvelope") 1173 proto.RegisterType((*Secret)(nil), "gossip.Secret") 1174 proto.RegisterType((*GossipMessage)(nil), "gossip.GossipMessage") 1175 proto.RegisterType((*StateInfo)(nil), "gossip.StateInfo") 1176 proto.RegisterType((*StateInfoSnapshot)(nil), "gossip.StateInfoSnapshot") 1177 proto.RegisterType((*StateInfoPullRequest)(nil), "gossip.StateInfoPullRequest") 1178 proto.RegisterType((*ConnEstablish)(nil), "gossip.ConnEstablish") 1179 proto.RegisterType((*PeerIdentity)(nil), "gossip.PeerIdentity") 1180 proto.RegisterType((*DataRequest)(nil), "gossip.DataRequest") 1181 proto.RegisterType((*GossipHello)(nil), "gossip.GossipHello") 1182 proto.RegisterType((*DataUpdate)(nil), "gossip.DataUpdate") 1183 proto.RegisterType((*DataDigest)(nil), "gossip.DataDigest") 1184 proto.RegisterType((*DataMessage)(nil), "gossip.DataMessage") 1185 proto.RegisterType((*Payload)(nil), "gossip.Payload") 1186 proto.RegisterType((*AliveMessage)(nil), "gossip.AliveMessage") 1187 proto.RegisterType((*LeadershipMessage)(nil), "gossip.LeadershipMessage") 1188 proto.RegisterType((*PeerTime)(nil), "gossip.PeerTime") 1189 proto.RegisterType((*MembershipRequest)(nil), "gossip.MembershipRequest") 1190 proto.RegisterType((*MembershipResponse)(nil), "gossip.MembershipResponse") 1191 proto.RegisterType((*Member)(nil), "gossip.Member") 1192 proto.RegisterType((*Empty)(nil), "gossip.Empty") 1193 proto.RegisterType((*RemoteStateRequest)(nil), "gossip.RemoteStateRequest") 1194 proto.RegisterType((*RemoteStateResponse)(nil), "gossip.RemoteStateResponse") 1195 proto.RegisterEnum("gossip.PullMsgType", PullMsgType_name, PullMsgType_value) 1196 proto.RegisterEnum("gossip.GossipMessage_Tag", GossipMessage_Tag_name, GossipMessage_Tag_value) 1197 } 1198 1199 // Reference imports to suppress errors if they are not otherwise used. 1200 var _ context.Context 1201 var _ grpc.ClientConn 1202 1203 // This is a compile-time assertion to ensure that this generated file 1204 // is compatible with the grpc package it is being compiled against. 1205 const _ = grpc.SupportPackageIsVersion3 1206 1207 // Client API for Gossip service 1208 1209 type GossipClient interface { 1210 // GossipStream is the gRPC stream used for sending and receiving messages 1211 GossipStream(ctx context.Context, opts ...grpc.CallOption) (Gossip_GossipStreamClient, error) 1212 // Ping is used to probe a remote peer's aliveness 1213 Ping(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) 1214 } 1215 1216 type gossipClient struct { 1217 cc *grpc.ClientConn 1218 } 1219 1220 func NewGossipClient(cc *grpc.ClientConn) GossipClient { 1221 return &gossipClient{cc} 1222 } 1223 1224 func (c *gossipClient) GossipStream(ctx context.Context, opts ...grpc.CallOption) (Gossip_GossipStreamClient, error) { 1225 stream, err := grpc.NewClientStream(ctx, &_Gossip_serviceDesc.Streams[0], c.cc, "/gossip.Gossip/GossipStream", opts...) 1226 if err != nil { 1227 return nil, err 1228 } 1229 x := &gossipGossipStreamClient{stream} 1230 return x, nil 1231 } 1232 1233 type Gossip_GossipStreamClient interface { 1234 Send(*Envelope) error 1235 Recv() (*Envelope, error) 1236 grpc.ClientStream 1237 } 1238 1239 type gossipGossipStreamClient struct { 1240 grpc.ClientStream 1241 } 1242 1243 func (x *gossipGossipStreamClient) Send(m *Envelope) error { 1244 return x.ClientStream.SendMsg(m) 1245 } 1246 1247 func (x *gossipGossipStreamClient) Recv() (*Envelope, error) { 1248 m := new(Envelope) 1249 if err := x.ClientStream.RecvMsg(m); err != nil { 1250 return nil, err 1251 } 1252 return m, nil 1253 } 1254 1255 func (c *gossipClient) Ping(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) { 1256 out := new(Empty) 1257 err := grpc.Invoke(ctx, "/gossip.Gossip/Ping", in, out, c.cc, opts...) 1258 if err != nil { 1259 return nil, err 1260 } 1261 return out, nil 1262 } 1263 1264 // Server API for Gossip service 1265 1266 type GossipServer interface { 1267 // GossipStream is the gRPC stream used for sending and receiving messages 1268 GossipStream(Gossip_GossipStreamServer) error 1269 // Ping is used to probe a remote peer's aliveness 1270 Ping(context.Context, *Empty) (*Empty, error) 1271 } 1272 1273 func RegisterGossipServer(s *grpc.Server, srv GossipServer) { 1274 s.RegisterService(&_Gossip_serviceDesc, srv) 1275 } 1276 1277 func _Gossip_GossipStream_Handler(srv interface{}, stream grpc.ServerStream) error { 1278 return srv.(GossipServer).GossipStream(&gossipGossipStreamServer{stream}) 1279 } 1280 1281 type Gossip_GossipStreamServer interface { 1282 Send(*Envelope) error 1283 Recv() (*Envelope, error) 1284 grpc.ServerStream 1285 } 1286 1287 type gossipGossipStreamServer struct { 1288 grpc.ServerStream 1289 } 1290 1291 func (x *gossipGossipStreamServer) Send(m *Envelope) error { 1292 return x.ServerStream.SendMsg(m) 1293 } 1294 1295 func (x *gossipGossipStreamServer) Recv() (*Envelope, error) { 1296 m := new(Envelope) 1297 if err := x.ServerStream.RecvMsg(m); err != nil { 1298 return nil, err 1299 } 1300 return m, nil 1301 } 1302 1303 func _Gossip_Ping_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 1304 in := new(Empty) 1305 if err := dec(in); err != nil { 1306 return nil, err 1307 } 1308 if interceptor == nil { 1309 return srv.(GossipServer).Ping(ctx, in) 1310 } 1311 info := &grpc.UnaryServerInfo{ 1312 Server: srv, 1313 FullMethod: "/gossip.Gossip/Ping", 1314 } 1315 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 1316 return srv.(GossipServer).Ping(ctx, req.(*Empty)) 1317 } 1318 return interceptor(ctx, in, info, handler) 1319 } 1320 1321 var _Gossip_serviceDesc = grpc.ServiceDesc{ 1322 ServiceName: "gossip.Gossip", 1323 HandlerType: (*GossipServer)(nil), 1324 Methods: []grpc.MethodDesc{ 1325 { 1326 MethodName: "Ping", 1327 Handler: _Gossip_Ping_Handler, 1328 }, 1329 }, 1330 Streams: []grpc.StreamDesc{ 1331 { 1332 StreamName: "GossipStream", 1333 Handler: _Gossip_GossipStream_Handler, 1334 ServerStreams: true, 1335 ClientStreams: true, 1336 }, 1337 }, 1338 Metadata: fileDescriptor0, 1339 } 1340 1341 func init() { proto.RegisterFile("gossip/message.proto", fileDescriptor0) } 1342 1343 var fileDescriptor0 = []byte{ 1344 // 1352 bytes of a gzipped FileDescriptorProto 1345 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xb4, 0x57, 0xdd, 0x6f, 0xe3, 0x44, 1346 0x10, 0x8f, 0x9b, 0x4f, 0x4f, 0x3e, 0x9a, 0x6e, 0x7b, 0x60, 0xca, 0x71, 0xaa, 0x2c, 0xee, 0x54, 1347 0xe8, 0x91, 0x9e, 0x7a, 0x80, 0x4e, 0x3a, 0x81, 0x94, 0x36, 0xa1, 0x09, 0x5c, 0xd2, 0xca, 0xcd, 1348 0x09, 0x8e, 0x17, 0x6b, 0x13, 0x6f, 0x1d, 0x73, 0xf6, 0xda, 0xf5, 0x6e, 0x0e, 0xfa, 0x08, 0x8f, 1349 0x3c, 0xf0, 0xcc, 0x9f, 0x8b, 0xbc, 0x6b, 0x3b, 0x76, 0xdd, 0x9e, 0xd4, 0x93, 0x78, 0xf3, 0x7c, 1350 0xfc, 0x66, 0x66, 0x67, 0x67, 0x67, 0xc6, 0xb0, 0x63, 0xfb, 0x8c, 0x39, 0xc1, 0xa1, 0x47, 0x18, 1351 0xc3, 0x36, 0xe9, 0x05, 0xa1, 0xcf, 0x7d, 0x54, 0x93, 0x5c, 0xfd, 0x2f, 0x05, 0x1a, 0x43, 0xfa, 1352 0x8e, 0xb8, 0x7e, 0x40, 0x90, 0x06, 0xf5, 0x00, 0x5f, 0xbb, 0x3e, 0xb6, 0x34, 0x65, 0x4f, 0xd9, 1353 0x6f, 0x19, 0x09, 0x89, 0x1e, 0x82, 0xca, 0x1c, 0x9b, 0x62, 0xbe, 0x0a, 0x89, 0xb6, 0x21, 0x64, 1354 0x6b, 0x06, 0xfa, 0x1e, 0x3a, 0x8c, 0x2c, 0x42, 0xc2, 0x13, 0x4b, 0x5a, 0x79, 0x4f, 0xd9, 0x6f, 1355 0x1e, 0x7d, 0xd4, 0x93, 0x5e, 0x7a, 0x17, 0x39, 0xa9, 0x71, 0x43, 0x5b, 0x1f, 0x41, 0x27, 0xaf, 1356 0xf1, 0xa1, 0x91, 0xe8, 0x7d, 0xa8, 0x49, 0x4b, 0xe8, 0x29, 0x74, 0x1d, 0xca, 0x49, 0x48, 0xb1, 1357 0x3b, 0xa4, 0x56, 0xe0, 0x3b, 0x94, 0x0b, 0x53, 0xea, 0xa8, 0x64, 0x14, 0x24, 0xc7, 0x2a, 0xd4, 1358 0x17, 0x3e, 0xe5, 0x84, 0x72, 0xfd, 0x5f, 0x15, 0xda, 0xa7, 0x22, 0xec, 0x89, 0xcc, 0x18, 0xda, 1359 0x81, 0x2a, 0xf5, 0xe9, 0x82, 0x08, 0x7c, 0xc5, 0x90, 0x44, 0x14, 0xe2, 0x62, 0x89, 0x29, 0x25, 1360 0x6e, 0x1c, 0x46, 0x42, 0xa2, 0x03, 0x28, 0x73, 0x6c, 0x8b, 0x1c, 0x74, 0x8e, 0x3e, 0x49, 0x72, 1361 0x90, 0xb3, 0xd9, 0x9b, 0x61, 0xdb, 0x88, 0xb4, 0xd0, 0x73, 0x50, 0xb1, 0xeb, 0xbc, 0x23, 0xa6, 1362 0xc7, 0x6c, 0xad, 0x2a, 0xd2, 0xb6, 0x93, 0x40, 0xfa, 0x91, 0x20, 0x46, 0x8c, 0x4a, 0x46, 0x43, 1363 0x28, 0x4e, 0x98, 0x8d, 0xbe, 0x86, 0xba, 0x47, 0x3c, 0x33, 0x24, 0x57, 0x5a, 0x4d, 0x40, 0x52, 1364 0x2f, 0x13, 0xe2, 0xcd, 0x49, 0xc8, 0x96, 0x4e, 0x60, 0x90, 0xab, 0x15, 0x61, 0x7c, 0x54, 0x32, 1365 0x6a, 0x1e, 0xf1, 0x0c, 0x72, 0x85, 0xbe, 0x49, 0x50, 0x4c, 0xab, 0x0b, 0xd4, 0xee, 0x6d, 0x28, 1366 0x16, 0xf8, 0x94, 0x91, 0x14, 0xc6, 0xd0, 0x33, 0x68, 0x58, 0x98, 0x63, 0x11, 0x60, 0x43, 0xe0, 1367 0xb6, 0x13, 0xdc, 0x00, 0x73, 0xbc, 0x8e, 0xaf, 0x1e, 0xa9, 0x45, 0xe1, 0x1d, 0x40, 0x75, 0x49, 1368 0x5c, 0xd7, 0xd7, 0xd4, 0xbc, 0xba, 0x4c, 0xc1, 0x28, 0x12, 0x8d, 0x4a, 0x86, 0xd4, 0x41, 0x87, 1369 0xb1, 0x79, 0xcb, 0xb1, 0x35, 0x10, 0xfa, 0x28, 0x6b, 0x7e, 0xe0, 0xd8, 0xf2, 0x14, 0xc2, 0xfa, 1370 0xc0, 0xb1, 0xd3, 0x78, 0xa2, 0xd3, 0x37, 0x8b, 0xf1, 0xac, 0xcf, 0x2d, 0x10, 0xf2, 0xe0, 0x4d, 1371 0x81, 0x58, 0x05, 0x16, 0xe6, 0x44, 0x6b, 0x15, 0xbd, 0xbc, 0x16, 0x92, 0x51, 0xc9, 0x00, 0x2b, 1372 0xa5, 0xd0, 0x63, 0xa8, 0x12, 0x2f, 0xe0, 0xd7, 0x5a, 0x5b, 0x00, 0xda, 0x09, 0x60, 0x18, 0x31, 1373 0xa3, 0x03, 0x08, 0x29, 0x3a, 0x80, 0xca, 0xc2, 0xa7, 0x54, 0xeb, 0x08, 0xad, 0x07, 0x89, 0xd6, 1374 0x89, 0x4f, 0xe9, 0x90, 0x71, 0x3c, 0x77, 0x1d, 0xb6, 0x1c, 0x95, 0x0c, 0xa1, 0x84, 0x8e, 0x00, 1375 0x18, 0xc7, 0x9c, 0x98, 0x0e, 0xbd, 0xf4, 0xb5, 0x4d, 0x01, 0xd9, 0x4a, 0x9f, 0x49, 0x24, 0x19, 1376 0xd3, 0xcb, 0x28, 0x3b, 0x2a, 0x4b, 0x08, 0x74, 0x0c, 0x1d, 0x89, 0x61, 0x14, 0x07, 0x6c, 0xe9, 1377 0x73, 0xad, 0x9b, 0xbf, 0xf4, 0x14, 0x77, 0x11, 0x2b, 0x8c, 0x4a, 0x46, 0x5b, 0x40, 0x12, 0x06, 1378 0x9a, 0xc0, 0xf6, 0xda, 0xaf, 0x19, 0xac, 0x5c, 0x57, 0xe4, 0x6f, 0x4b, 0x18, 0x7a, 0x58, 0x30, 1379 0x74, 0xbe, 0x72, 0xdd, 0x75, 0x22, 0xbb, 0xec, 0x06, 0x1f, 0xf5, 0x41, 0xda, 0x8f, 0x8c, 0x44, 1380 0x4a, 0x1a, 0xca, 0x17, 0x94, 0x41, 0x3c, 0x9f, 0x13, 0x61, 0x6e, 0x6d, 0xa6, 0xc5, 0x32, 0x34, 1381 0x1a, 0x24, 0xa7, 0x0a, 0xe3, 0x92, 0xd3, 0xb6, 0x85, 0x8d, 0x4f, 0x6f, 0xb5, 0x91, 0x56, 0x65, 1382 0x9b, 0x65, 0x19, 0x51, 0x6e, 0x5c, 0x82, 0x2d, 0x59, 0xbc, 0xa2, 0x44, 0x77, 0xf2, 0xb9, 0x79, 1383 0x95, 0x4a, 0xd7, 0x85, 0xda, 0x5e, 0x43, 0xa2, 0x72, 0x7d, 0x09, 0xed, 0x80, 0x90, 0xd0, 0x74, 1384 0x2c, 0x42, 0xb9, 0xc3, 0xaf, 0xb5, 0x07, 0xf9, 0x67, 0x78, 0x4e, 0x48, 0x38, 0x8e, 0x65, 0xd1, 1385 0x31, 0x82, 0x0c, 0xad, 0x9b, 0x50, 0x9e, 0x61, 0x1b, 0xb5, 0x41, 0x7d, 0x3d, 0x1d, 0x0c, 0x7f, 1386 0x18, 0x4f, 0x87, 0x83, 0x6e, 0x09, 0xa9, 0x50, 0x1d, 0x4e, 0xce, 0x67, 0x6f, 0xba, 0x0a, 0x6a, 1387 0x41, 0xe3, 0xcc, 0x38, 0x35, 0xcf, 0xa6, 0xaf, 0xde, 0x74, 0x37, 0x22, 0xbd, 0x93, 0x51, 0x7f, 1388 0x2a, 0xc9, 0x32, 0xea, 0x42, 0x4b, 0x90, 0xfd, 0xe9, 0xc0, 0x3c, 0x33, 0x4e, 0xbb, 0x15, 0xb4, 1389 0x09, 0x4d, 0xa9, 0x60, 0x08, 0x46, 0x35, 0xdb, 0x9a, 0xfe, 0x51, 0x40, 0x4d, 0xaf, 0x08, 0xed, 1390 0x42, 0xc3, 0x23, 0x1c, 0x47, 0x05, 0x1b, 0x37, 0xc9, 0x94, 0x46, 0x3d, 0x50, 0xb9, 0xe3, 0x11, 1391 0xc6, 0xb1, 0x17, 0x88, 0xf6, 0xd4, 0x3c, 0xea, 0x66, 0x8f, 0x33, 0x73, 0x3c, 0x62, 0xac, 0x55, 1392 0xd0, 0x03, 0xa8, 0x05, 0x6f, 0x1d, 0xd3, 0xb1, 0x44, 0xd7, 0x6a, 0x19, 0xd5, 0xe0, 0xad, 0x33, 1393 0xb6, 0xd0, 0x23, 0x80, 0xb8, 0xa9, 0x4d, 0xfa, 0x27, 0x5a, 0x45, 0x88, 0x32, 0x1c, 0xbd, 0x0f, 1394 0x5b, 0x85, 0xda, 0x43, 0x4f, 0xa1, 0x41, 0x5c, 0xe2, 0x11, 0xca, 0x99, 0xa6, 0xec, 0x95, 0xb3, 1395 0xae, 0xd3, 0x09, 0x90, 0x6a, 0xe8, 0xdf, 0xc2, 0xce, 0x6d, 0x55, 0x77, 0xc3, 0xb5, 0x52, 0x70, 1396 0x3d, 0x85, 0x76, 0xee, 0x85, 0x65, 0x8e, 0xa0, 0x64, 0x8f, 0x80, 0xa0, 0xb2, 0x20, 0x21, 0x8f, 1397 0x7b, 0xb4, 0xf8, 0x8e, 0x78, 0x4b, 0xcc, 0x96, 0xf1, 0x59, 0xc5, 0xb7, 0xfe, 0x1a, 0x5a, 0xd9, 1398 0x7b, 0xbe, 0x8f, 0xb9, 0xec, 0x45, 0x94, 0xf3, 0x17, 0xa1, 0x7b, 0xd0, 0xcc, 0x34, 0xa5, 0xbb, 1399 0x47, 0x89, 0x25, 0xda, 0x1c, 0xd3, 0x36, 0xf6, 0xca, 0xfb, 0xaa, 0x91, 0x90, 0xa8, 0x07, 0x0d, 1400 0x8f, 0xd9, 0x26, 0xbf, 0x8e, 0x67, 0x6a, 0x67, 0xdd, 0xeb, 0xa2, 0x64, 0x4d, 0x98, 0x3d, 0xbb, 1401 0x0e, 0x88, 0x51, 0xf7, 0xe4, 0x87, 0xee, 0x43, 0x33, 0xd3, 0x64, 0xef, 0x70, 0x97, 0x8d, 0x77, 1402 0xa3, 0x50, 0x38, 0xf7, 0x73, 0xf8, 0x07, 0xc0, 0xba, 0x7f, 0xde, 0xe1, 0xef, 0x73, 0xa8, 0xc4, 1403 0xbe, 0x6e, 0x2f, 0x86, 0xca, 0x07, 0x79, 0x76, 0xa5, 0x67, 0x39, 0x1f, 0xfe, 0xf7, 0xc4, 0xbe, 1404 0x90, 0xf7, 0x98, 0xac, 0x04, 0x5f, 0xe4, 0xf7, 0x93, 0xe6, 0xd1, 0x66, 0x8a, 0x96, 0xec, 0x74, 1405 0x61, 0xd1, 0x7f, 0x84, 0x7a, 0xcc, 0x43, 0x1f, 0x43, 0x9d, 0x91, 0x2b, 0x93, 0xae, 0xbc, 0x38, 1406 0xcc, 0x1a, 0x23, 0x57, 0xd3, 0x95, 0x97, 0x16, 0x64, 0x74, 0x1b, 0xaa, 0x2c, 0xc8, 0x88, 0x97, 1407 0xa9, 0x28, 0xf1, 0xad, 0xff, 0xad, 0x40, 0x2b, 0xbb, 0x14, 0xa0, 0x1e, 0x80, 0x97, 0xce, 0xee, 1408 0x38, 0x94, 0x4e, 0x7e, 0xaa, 0x1b, 0x19, 0x8d, 0x7b, 0xf7, 0x85, 0x5d, 0x68, 0xa4, 0x5d, 0x51, 1409 0x3e, 0xff, 0x94, 0xd6, 0xff, 0x54, 0x60, 0xab, 0xd0, 0x5d, 0xef, 0x7a, 0x37, 0xf7, 0x75, 0xfc, 1410 0x18, 0x3a, 0x0e, 0x33, 0x2d, 0xb2, 0x70, 0x71, 0x88, 0xb9, 0xe3, 0x53, 0x91, 0x87, 0x86, 0xd1, 1411 0x76, 0xd8, 0x60, 0xcd, 0xd4, 0x8f, 0xa1, 0x91, 0xa0, 0xd1, 0x67, 0x00, 0x0e, 0x5d, 0x44, 0xd9, 1412 0x9d, 0x93, 0x30, 0x4e, 0xb0, 0xea, 0xd0, 0xc5, 0x54, 0x30, 0xb2, 0xc9, 0xdf, 0xc8, 0x26, 0x5f, 1413 0xbf, 0x84, 0xad, 0xc2, 0xd6, 0x84, 0x5e, 0x42, 0x97, 0x11, 0xf7, 0x52, 0x8c, 0xcb, 0xd0, 0x93, 1414 0x11, 0x28, 0xf9, 0xb0, 0xd3, 0xfa, 0xdd, 0x8c, 0x34, 0xc7, 0x6b, 0xc5, 0xa8, 0x18, 0xdf, 0x52, 1415 0xff, 0x77, 0x2a, 0x8a, 0xae, 0x65, 0x48, 0x42, 0x9f, 0x03, 0x2a, 0xee, 0x59, 0xe8, 0x09, 0x54, 1416 0xc5, 0x5a, 0x77, 0x67, 0xab, 0x94, 0x62, 0xf1, 0x88, 0x08, 0xb6, 0xde, 0xf3, 0x88, 0x08, 0xb6, 1417 0xf4, 0x9f, 0xa1, 0x26, 0x7d, 0x44, 0x37, 0x47, 0x72, 0x7b, 0xaf, 0x91, 0xd2, 0xef, 0x6d, 0x00, 1418 0xb7, 0x4f, 0x02, 0xbd, 0x0e, 0x55, 0xb1, 0xf6, 0xe8, 0xbf, 0x00, 0x2a, 0x0e, 0x77, 0xa4, 0x8b, 1419 0x7d, 0x20, 0xe4, 0x66, 0xbe, 0xbe, 0x9b, 0x82, 0x79, 0x21, 0x8b, 0xfc, 0x11, 0x34, 0x09, 0xb5, 1420 0xcc, 0xfc, 0x25, 0xa8, 0x84, 0x5a, 0x52, 0xae, 0x1f, 0xc3, 0xf6, 0x2d, 0x23, 0x1f, 0x1d, 0x40, 1421 0x23, 0x7e, 0x4a, 0xc9, 0x38, 0x29, 0xbc, 0xb5, 0x54, 0xe1, 0xcb, 0xef, 0xa0, 0x99, 0x79, 0xbe, 1422 0x37, 0xa7, 0x72, 0x1b, 0xd4, 0xe3, 0x57, 0x67, 0x27, 0x3f, 0x99, 0x93, 0x8b, 0xd3, 0xae, 0x12, 1423 0x0d, 0xdf, 0xf1, 0x60, 0x38, 0x9d, 0x8d, 0x67, 0x6f, 0x04, 0x67, 0xe3, 0xe8, 0x37, 0xa8, 0xc9, 1424 0xf6, 0x89, 0x5e, 0x40, 0x4b, 0x7e, 0x5d, 0xf0, 0x90, 0x60, 0x0f, 0x15, 0x12, 0xbe, 0x5b, 0xe0, 1425 0xe8, 0xa5, 0x7d, 0xe5, 0x99, 0x82, 0x9e, 0x40, 0xe5, 0xdc, 0xa1, 0x36, 0xca, 0xaf, 0x8b, 0xbb, 1426 0x79, 0x52, 0x2f, 0x1d, 0x7f, 0xf5, 0xeb, 0x81, 0xed, 0xf0, 0xe5, 0x6a, 0xde, 0x5b, 0xf8, 0xde, 1427 0xe1, 0xf2, 0x3a, 0x20, 0xa1, 0x4b, 0x2c, 0x9b, 0x84, 0x87, 0x97, 0x78, 0x1e, 0x3a, 0x8b, 0x43, 1428 0xf1, 0xa3, 0xc6, 0x0e, 0x25, 0x6c, 0x5e, 0x13, 0xe4, 0xf3, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 1429 0xd6, 0x2d, 0x62, 0x5a, 0xcf, 0x0d, 0x00, 0x00, 1430 }