Mercurial > lbo > hg > clusterconsensus
changeset 38:7a6db8262f43
Initial prototype of clusterrpc example
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Thu, 25 Jul 2019 16:37:06 +0200 |
parents | e8ed644c2122 |
children | b9727e8e0611 |
files | example_clusterrpc/example.go example_clusterrpc/proto/consensus.pb.go example_clusterrpc/proto/consensus.proto example_http/example.go http/server.go |
diffstat | 5 files changed, 3755 insertions(+), 155 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/example_clusterrpc/example.go Thu Jul 25 16:37:06 2019 +0200 @@ -0,0 +1,533 @@ +package main + +import ( + "bytes" + "errors" + "flag" + "fmt" + "strconv" + "strings" + "time" + + con "bitbucket.org/dermesser/clusterconsensus" + proto "bitbucket.org/dermesser/clusterconsensus/example_clusterrpc/proto" + _ "bitbucket.org/dermesser/clusterrpc" + rpccl "bitbucket.org/dermesser/clusterrpc/client" + rpcsrv "bitbucket.org/dermesser/clusterrpc/server" + "github.com/golang/glog" + pb "github.com/golang/protobuf/proto" +) + +const ( + change_ADD string = "ADD" + change_RM = "RM" + + SERVICE = "Consensus" +) + +type Connector struct { +} + +type client struct { + cl *rpccl.Client + host string + cluster string +} + +func (c *Connector) Connect(cluster string, m con.Member) (con.ConsensusClient, error) { + addr := m.Address + host := strings.Split(addr, ":")[0] + port := strings.Split(addr, ":")[1] + iport, err := strconv.ParseUint(port, 10, 32) + if err != nil { + return nil, err + } + glog.Info("connecting to ", host, ":", iport) + ch, err := rpccl.NewChannelAndConnect(rpccl.Peer(host, uint(iport)), nil) + if err != nil { + glog.Error("connect failed: ", err) + return nil, err + } + cl := rpccl.New(addr, ch) + return &client{cl: &cl, host: addr, cluster: cluster}, nil +} + +func (c *client) Close() error { + return nil +} + +func (c *client) Prepare(i con.InstanceNumber, m con.Member) (con.InstanceNumber, error) { + req := proto.PrepareRequest{Instance: pb.Uint64(uint64(i)), + Master: &proto.Member{Address: pb.String(m.Address)}, Cluster: pb.String(c.cluster)} + resp := c.cl.NewRequest(SERVICE, "Prepare").GoProto(&req) + if !resp.Ok() { + return 0, errors.New(resp.Error()) + } + var respMsg proto.PrepareResponse + if err := resp.GetResponseMessage(&respMsg); err != nil { + return 0, err + } + return con.InstanceNumber(respMsg.GetInstance()), nil +} + +func (c *client) Accept(i con.InstanceNumber, s con.SequenceNumber, chgs []con.Change) (bool, error) { + version := &proto.Version{Instance: pb.Uint64(uint64(i)), Sequence: pb.Uint64(uint64(s))} + changes := make([]*proto.Change, len(chgs)) + for i := range chgs { + changes[i] = &proto.Change{Change: chgs[i].Serialize()} + } + req := proto.AcceptRequest{Version: version, Changes: changes, Cluster: pb.String(c.cluster)} + + resp := c.cl.NewRequest(SERVICE, "Accept").GoProto(&req) + if !resp.Ok() { + return false, errors.New(resp.Error()) + } + var respMsg proto.GenericResponse + if err := resp.GetResponseMessage(&respMsg); err != nil { + return false, err + } + if respMsg.GetError() != nil { + return false, errors.New(respMsg.GetError().GetError()) + } + return true, nil +} + +func (c *client) AddMember(i con.InstanceNumber, s con.SequenceNumber, m con.Member) error { + version := &proto.Version{Instance: pb.Uint64(uint64(i)), Sequence: pb.Uint64(uint64(s))} + req := &proto.AddMemberRequest{Version: version, Member: &proto.Member{Address: &m.Address}, Cluster: &c.cluster} + resp := c.cl.NewRequest(SERVICE, "AddMember").GoProto(req) + if !resp.Ok() { + return errors.New(resp.Error()) + } + var respMsg proto.GenericResponse + if err := resp.GetResponseMessage(&respMsg); err != nil { + return err + } + if !respMsg.GetAccepted() { + return errors.New("AddMember not accepted") + } + return nil +} + +func (c *client) RemoveMember(i con.InstanceNumber, s con.SequenceNumber, m con.Member) error { + version := &proto.Version{Instance: pb.Uint64(uint64(i)), Sequence: pb.Uint64(uint64(s))} + req := &proto.RemoveMemberRequest{Version: version, Member: &proto.Member{Address: &m.Address}, Cluster: &c.cluster} + resp := c.cl.NewRequest(SERVICE, "RemoveMember").GoProto(req) + if !resp.Ok() { + return errors.New(resp.Error()) + } + var respMsg proto.GenericResponse + if err := resp.GetResponseMessage(&respMsg); err != nil { + return err + } + if !respMsg.GetAccepted() { + return errors.New("RemoveMember not accepted") + } + return nil +} + +func (c *client) StartParticipation(i con.InstanceNumber, + s con.SequenceNumber, + cluster string, + self con.Member, + master con.Member, + members []con.Member, + snapshot []byte) error { + participants := make([]*proto.Member, len(members)) + for i := range members { + participants[i] = &proto.Member{Address: &members[i].Address} + } + req := &proto.StartParticipation{ + Version: &proto.Version{Instance: pb.Uint64(uint64(i)), Sequence: pb.Uint64(uint64(s))}, + Cluster: &c.cluster, + Self: &proto.Member{Address: &self.Address}, + Master: &proto.Member{Address: &self.Address}, + Members: participants, + Snapshot: snapshot} + var respMsg proto.GenericResponse + resp := c.cl.NewRequest(SERVICE, "StartParticipation").GoProto(req) + if !resp.Ok() { + return errors.New(resp.Error()) + } + resp.GetResponseMessage(&respMsg) + if !respMsg.GetAccepted() { + return errors.New("StartParticipation not accepted") + } + return nil +} + +func (c *client) SubmitRequest(chg []con.Change) error { + changes := make([]*proto.Change, len(chg)) + for i := range chg { + changes[i] = &proto.Change{Change: chg[i].Serialize()} + } + req := &proto.SubmitRequest{Cluster: &c.cluster, Changes: changes} + var respMsg proto.GenericResponse + resp := c.cl.NewRequest(SERVICE, "Submit").GoProto(req) + if !resp.Ok() { + return errors.New(resp.Error()) + } + resp.GetResponseMessage(&respMsg) + if !respMsg.GetAccepted() { + return errors.New("Submit not accepted!") + } + return nil +} + +// Simple state machine +type State struct { + inner map[string]string +} + +func (s State) Snapshot() []byte { + buf := bytes.NewBuffer([]byte{}) + + for k, v := range s.inner { + buf.WriteString(k) + buf.WriteString("×") + buf.WriteString(v) + buf.WriteString("×") + } + + return buf.Bytes() +} + +func (s State) Apply(c con.Change) { + chg := c.(Change) + + glog.Info("Applying", chg) + + if chg.t == change_ADD { + s.inner[chg.key] = chg.val + } else if chg.t == change_RM { + delete(s.inner, chg.key) + } +} + +func (s State) Install(ss []byte) { + parts := strings.Split(string(ss), "×") + + for i := 0; i < len(parts)-1; { + key := parts[i] + i++ + val := parts[i] + i++ + s.inner[key] = val + } +} + +// Change to state machine +type Change struct { + t string + key string + val string +} + +func (c Change) Serialize() []byte { + return []byte(fmt.Sprintf("%s×%s×%s", c.t, c.key, c.val)) +} + +type ChangeDeserializer struct{} + +func (cd ChangeDeserializer) Deserialize(b []byte) con.Change { + parts := strings.Split(string(b), "×") + + return Change{t: parts[0], key: parts[1], val: parts[2]} +} + +type EventHandler struct{} + +var isMaster bool = false + +func (eh EventHandler) OnBecomeMaster(*con.Participant) { + glog.Info("BECAME MASTER") + isMaster = true +} + +func (eh EventHandler) OnLoseMaster(*con.Participant) { + glog.Info("LOST MASTERSHIP") + isMaster = false +} + +func (eh EventHandler) OnCommit(p *con.Participant, s con.SequenceNumber, chg []con.Change) { + glog.Info("COMMITTED: ", s, chg) +} + +type RpcServer struct { + // cluster/server mapping + participants map[string]con.ConsensusServer + server *rpcsrv.Server +} + +func NewRpcServer(host string, port uint) (*RpcServer, error) { + srv, err := rpcsrv.NewServer(host, port, 1, nil) + if err != nil { + return nil, err + } + srv.SetMachineName(fmt.Sprintf("port:%d", port)) + + rpcServer := &RpcServer{participants: map[string]con.ConsensusServer{}, server: srv} + srv.RegisterHandler(SERVICE, "Prepare", rpcServer.handlePrepare) + srv.RegisterHandler(SERVICE, "Accept", rpcServer.handleAccept) + srv.RegisterHandler(SERVICE, "AddMember", rpcServer.handleAddMember) + srv.RegisterHandler(SERVICE, "RemoveMember", rpcServer.handleRmMember) + srv.RegisterHandler(SERVICE, "StartParticipation", rpcServer.handleStart) + srv.RegisterHandler(SERVICE, "Submit", rpcServer.handleSubmit) + go srv.Start() + return rpcServer, nil +} + +func (srv *RpcServer) handlePrepare(ctx *rpcsrv.Context) { + var req proto.PrepareRequest + var resp proto.PrepareResponse + + if err := ctx.GetArgument(&req); err != nil { + glog.Error("Couldn't parse prepare request:", err) + ctx.Fail("couldn't parse request") + return + } + inner, ok := srv.participants[req.GetCluster()] + if !ok { + glog.Error("bad cluster", req.GetCluster()) + ctx.Fail("bad cluster") + return + } + + glog.Info("server: prepare:", req.String()) + inst, err := inner.Prepare(con.InstanceNumber(req.GetInstance()), con.Member{Address: req.GetMaster().GetAddress()}) + if err != nil { + glog.Error("couldn't prepare:", err) + ctx.Fail("couldn't prepare") + return + } + resp.Instance = pb.Uint64(uint64(inst)) + ctx.Return(&resp) +} + +type ProtoChange proto.Change + +func (c ProtoChange) Serialize() []byte { + return proto.Change(c).Change +} + +func (srv *RpcServer) handleAccept(ctx *rpcsrv.Context) { + var req proto.AcceptRequest + var resp proto.GenericResponse + + if err := ctx.GetArgument(&req); err != nil { + glog.Error("Couldn't parse accept request:", err) + ctx.Fail("couldn't parse request") + return + } + inner, ok := srv.participants[req.GetCluster()] + if !ok { + glog.Error("bad cluster", req.GetCluster()) + ctx.Fail("bad cluster") + return + } + + glog.Info("server: accept:", req.String()) + changes := make([]con.Change, len(req.GetChanges())) + for i, c := range req.GetChanges() { + changes[i] = ChangeDeserializer{}.Deserialize(c.GetChange()) + } + acc, err := inner.Accept(con.InstanceNumber(req.GetVersion().GetInstance()), con.SequenceNumber(req.GetVersion().GetSequence()), + changes) + if err != nil { + glog.Error("couldn't accept:", err) + ctx.Fail("couldn't accept") + return + } + resp.Accepted = pb.Bool(acc) + ctx.Return(&resp) +} +func (srv *RpcServer) handleAddMember(ctx *rpcsrv.Context) { + var req proto.AddMemberRequest + var resp proto.GenericResponse + + if err := ctx.GetArgument(&req); err != nil { + glog.Error("Couldn't parse addmember request:", err) + ctx.Fail("couldn't parse request") + return + } + inner, ok := srv.participants[req.GetCluster()] + if !ok { + glog.Error("bad cluster", req.GetCluster()) + ctx.Fail("bad cluster") + return + } + + glog.Info("server: addmember:", req.String()) + err := inner.AddMember(con.InstanceNumber(req.GetVersion().GetInstance()), con.SequenceNumber(req.GetVersion().GetSequence()), + con.Member{Address: req.GetMember().GetAddress()}) + if err != nil { + glog.Error("couldn't add member:", err) + ctx.Fail("couldn't add member") + return + } + resp.Accepted = pb.Bool(true) + ctx.Return(&resp) +} +func (srv *RpcServer) handleRmMember(ctx *rpcsrv.Context) { + var req proto.RemoveMemberRequest + var resp proto.GenericResponse + + if err := ctx.GetArgument(&req); err != nil { + glog.Error("Couldn't parse rmmember request:", err) + ctx.Fail("couldn't parse request") + return + } + inner, ok := srv.participants[req.GetCluster()] + if !ok { + glog.Error("bad cluster", req.GetCluster()) + ctx.Fail("bad cluster") + return + } + + glog.Info("server: rmmember:", req.String()) + err := inner.RemoveMember(con.InstanceNumber(req.GetVersion().GetInstance()), con.SequenceNumber(req.GetVersion().GetSequence()), + con.Member{Address: req.GetMember().GetAddress()}) + if err != nil { + glog.Error("couldn't remove member:", err) + ctx.Fail("couldn't remove member") + return + } + resp.Accepted = pb.Bool(true) + ctx.Return(&resp) +} +func (srv *RpcServer) handleStart(ctx *rpcsrv.Context) { + var req proto.StartParticipation + var resp proto.GenericResponse + + if err := ctx.GetArgument(&req); err != nil { + glog.Error("Couldn't parse startparticipation request:", err) + ctx.Fail("couldn't parse request") + return + } + + inner, ok := srv.participants[req.GetCluster()] + if !ok { + glog.Error("bad cluster", req.GetCluster()) + ctx.Fail("bad cluster") + return + } + + participants := make([]con.Member, len(req.GetMembers())) + for i := range req.GetMembers() { + participants[i] = con.Member{Address: req.GetMembers()[i].GetAddress()} + } + + glog.Info("server: start:", req.String()) + err := inner.StartParticipation(con.InstanceNumber(req.GetVersion().GetInstance()), + con.SequenceNumber(req.GetVersion().GetSequence()), + req.GetCluster(), + con.Member{Address: req.GetSelf().GetAddress()}, + con.Member{Address: req.GetMaster().GetAddress()}, + participants, + req.GetSnapshot()) + if err != nil { + glog.Error("couldn't start:", err) + ctx.Fail("couldn't start") + return + } + resp.Accepted = pb.Bool(true) + ctx.Return(&resp) +} +func (srv *RpcServer) handleSubmit(ctx *rpcsrv.Context) { + var req proto.SubmitRequest + var resp proto.GenericResponse + + if err := ctx.GetArgument(&req); err != nil { + glog.Error("Couldn't parse submit request:", err) + ctx.Fail("couldn't parse request") + return + } + + inner, ok := srv.participants[req.GetCluster()] + if !ok { + glog.Error("bad cluster", req.GetCluster()) + ctx.Fail("bad cluster") + return + } + + glog.Info("server: submit:", req.String()) + + changes := make([]con.Change, len(req.GetChanges())) + for i := range req.GetChanges() { + changes[i] = ChangeDeserializer{}.Deserialize(req.GetChanges()[i].GetChange()) + } + + err := inner.SubmitRequest(changes) + if err != nil { + glog.Error("couldn't submit:", err) + ctx.Fail("couldn't submit") + return + } + resp.Accepted = pb.Bool(true) + ctx.Return(&resp) +} + +func (srv *RpcServer) Register(cluster string, participant *con.Participant, decoder con.ChangeDeserializer) error { + if _, ok := srv.participants[cluster]; ok { + return con.NewError(con.ERR_STATE, fmt.Sprintf("Server is already part of cluster %s", cluster), nil) + } + + srv.participants[cluster] = participant + return nil +} + +func main() { + initMaster := flag.Bool("initMaster", false, "Initialize as master, then add participants") + participants := flag.String("participants", "", "Comma-separated list of other participants' addresses") + host := flag.String("host", "localhost", "externally reachable host name or IP") + port := flag.Uint("listen", 9000, "Port to listen on") + cluster := flag.String("cluster", "cluster1", "ClusterID") + interval := flag.Uint("interval", 2, "interval for submitting random changes") + flag.Parse() + + glog.Info("setting up server") + server, err := NewRpcServer(*host, *port) + if err != nil { + glog.Exit("Couldn't open server:", err) + } + + glog.Info("creating participant for", *cluster) + participant := con.NewParticipant(*cluster, &Connector{}, State{inner: make(map[string]string)}) + participant.SetEventHandler(EventHandler{}) + server.participants[*cluster] = participant + + if *initMaster { + glog.Info("initializing master") + addr := fmt.Sprintf("%s:%d", *host, *port) + participant.InitMaster(con.Member{Address: addr}, []byte{}) + for _, a := range strings.Split(*participants, ",") { + glog.Info("Adding member", a) + fmt.Println("AddMember err? ", participant.AddParticipant(con.Member{Address: a})) + } + participant.Submit([]con.Change{}) + } + + i := 0 + for { + time.Sleep(time.Duration(*interval) * time.Second) + + if isMaster { + glog.Info("<MASTER>") + } else if err := participant.PingMaster(); err != nil { + glog.Info("<Follower> Master down:", err) + } else { + glog.Info("<Follower>") + } + + err := participant.SubmitOne( + Change{t: change_ADD, key: fmt.Sprintf("%d.k%d", *port, i), val: fmt.Sprintf("v%d", i)}) + if err != nil { + glog.Info("couldn't submit change:", err) + } + if i%5 == 0 { + glog.Info("master? ", participant.IsMaster(), "state len: ", len(participant.GetState().(State).inner), + "state: ", participant.GetState().(State)) + } + i++ + } +}
--- a/example_clusterrpc/proto/consensus.pb.go Wed Jul 24 15:42:12 2019 +0200 +++ b/example_clusterrpc/proto/consensus.pb.go Thu Jul 25 16:37:06 2019 +0200 @@ -1,35 +1,19 @@ -// Code generated by protoc-gen-go. +// Code generated by protoc-gen-gogo. DO NOT EDIT. // source: consensus.proto -// DO NOT EDIT! - -/* -Package proto is a generated protocol buffer package. - -It is generated from these files: - consensus.proto -It has these top-level messages: - Error - Change - Member - Version - GenericResponse - PrepareRequest - PrepareResponse - AcceptRequest - AddMemberRequest - RemoveMemberRequest - StartParticipation - SubmitRequest -*/ package proto -import proto1 "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" +import ( + fmt "fmt" + github_com_gogo_protobuf_proto "github.com/gogo/protobuf/proto" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" + math_bits "math/bits" +) // Reference imports to suppress errors if they are not otherwise used. -var _ = proto1.Marshal +var _ = proto.Marshal var _ = fmt.Errorf var _ = math.Inf @@ -37,18 +21,48 @@ // 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 _ = proto1.ProtoPackageIsVersion2 // please upgrade the proto package +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package type Error struct { - Error *string `protobuf:"bytes,1,opt,name=error" json:"error,omitempty"` - Type *string `protobuf:"bytes,2,opt,name=type" json:"type,omitempty"` - XXX_unrecognized []byte `json:"-"` + Error *string `protobuf:"bytes,1,opt,name=error" json:"error,omitempty"` + Type *string `protobuf:"bytes,2,opt,name=type" json:"type,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *Error) Reset() { *m = Error{} } -func (m *Error) String() string { return proto1.CompactTextString(m) } -func (*Error) ProtoMessage() {} -func (*Error) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } +func (m *Error) Reset() { *m = Error{} } +func (m *Error) String() string { return proto.CompactTextString(m) } +func (*Error) ProtoMessage() {} +func (*Error) Descriptor() ([]byte, []int) { + return fileDescriptor_56f0f2c53b3de771, []int{0} +} +func (m *Error) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Error) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Error.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Error) XXX_Merge(src proto.Message) { + xxx_messageInfo_Error.Merge(m, src) +} +func (m *Error) XXX_Size() int { + return m.Size() +} +func (m *Error) XXX_DiscardUnknown() { + xxx_messageInfo_Error.DiscardUnknown(m) +} + +var xxx_messageInfo_Error proto.InternalMessageInfo func (m *Error) GetError() string { if m != nil && m.Error != nil { @@ -65,14 +79,44 @@ } type Change struct { - Change []byte `protobuf:"bytes,1,opt,name=change" json:"change,omitempty"` - XXX_unrecognized []byte `json:"-"` + Change []byte `protobuf:"bytes,1,opt,name=change" json:"change,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *Change) Reset() { *m = Change{} } -func (m *Change) String() string { return proto1.CompactTextString(m) } -func (*Change) ProtoMessage() {} -func (*Change) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } +func (m *Change) Reset() { *m = Change{} } +func (m *Change) String() string { return proto.CompactTextString(m) } +func (*Change) ProtoMessage() {} +func (*Change) Descriptor() ([]byte, []int) { + return fileDescriptor_56f0f2c53b3de771, []int{1} +} +func (m *Change) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Change) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Change.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Change) XXX_Merge(src proto.Message) { + xxx_messageInfo_Change.Merge(m, src) +} +func (m *Change) XXX_Size() int { + return m.Size() +} +func (m *Change) XXX_DiscardUnknown() { + xxx_messageInfo_Change.DiscardUnknown(m) +} + +var xxx_messageInfo_Change proto.InternalMessageInfo func (m *Change) GetChange() []byte { if m != nil { @@ -82,14 +126,44 @@ } type Member struct { - Address *string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"` - XXX_unrecognized []byte `json:"-"` + Address *string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *Member) Reset() { *m = Member{} } -func (m *Member) String() string { return proto1.CompactTextString(m) } -func (*Member) ProtoMessage() {} -func (*Member) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } +func (m *Member) Reset() { *m = Member{} } +func (m *Member) String() string { return proto.CompactTextString(m) } +func (*Member) ProtoMessage() {} +func (*Member) Descriptor() ([]byte, []int) { + return fileDescriptor_56f0f2c53b3de771, []int{2} +} +func (m *Member) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Member) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Member.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Member) XXX_Merge(src proto.Message) { + xxx_messageInfo_Member.Merge(m, src) +} +func (m *Member) XXX_Size() int { + return m.Size() +} +func (m *Member) XXX_DiscardUnknown() { + xxx_messageInfo_Member.DiscardUnknown(m) +} + +var xxx_messageInfo_Member proto.InternalMessageInfo func (m *Member) GetAddress() string { if m != nil && m.Address != nil { @@ -99,15 +173,45 @@ } type Version struct { - Instance *uint64 `protobuf:"varint,1,req,name=instance" json:"instance,omitempty"` - Sequence *uint64 `protobuf:"varint,2,req,name=sequence" json:"sequence,omitempty"` - XXX_unrecognized []byte `json:"-"` + Instance *uint64 `protobuf:"varint,1,req,name=instance" json:"instance,omitempty"` + Sequence *uint64 `protobuf:"varint,2,req,name=sequence" json:"sequence,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *Version) Reset() { *m = Version{} } -func (m *Version) String() string { return proto1.CompactTextString(m) } -func (*Version) ProtoMessage() {} -func (*Version) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } +func (m *Version) Reset() { *m = Version{} } +func (m *Version) String() string { return proto.CompactTextString(m) } +func (*Version) ProtoMessage() {} +func (*Version) Descriptor() ([]byte, []int) { + return fileDescriptor_56f0f2c53b3de771, []int{3} +} +func (m *Version) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Version) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Version.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Version) XXX_Merge(src proto.Message) { + xxx_messageInfo_Version.Merge(m, src) +} +func (m *Version) XXX_Size() int { + return m.Size() +} +func (m *Version) XXX_DiscardUnknown() { + xxx_messageInfo_Version.DiscardUnknown(m) +} + +var xxx_messageInfo_Version proto.InternalMessageInfo func (m *Version) GetInstance() uint64 { if m != nil && m.Instance != nil { @@ -124,15 +228,46 @@ } type GenericResponse struct { - Accepted *bool `protobuf:"varint,1,req,name=accepted" json:"accepted,omitempty"` - Error *Error `protobuf:"bytes,2,opt,name=error" json:"error,omitempty"` - XXX_unrecognized []byte `json:"-"` + Accepted *bool `protobuf:"varint,1,req,name=accepted" json:"accepted,omitempty"` + Error *Error `protobuf:"bytes,2,opt,name=error" json:"error,omitempty"` + Instance *uint64 `protobuf:"varint,3,opt,name=instance" json:"instance,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *GenericResponse) Reset() { *m = GenericResponse{} } -func (m *GenericResponse) String() string { return proto1.CompactTextString(m) } -func (*GenericResponse) ProtoMessage() {} -func (*GenericResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } +func (m *GenericResponse) Reset() { *m = GenericResponse{} } +func (m *GenericResponse) String() string { return proto.CompactTextString(m) } +func (*GenericResponse) ProtoMessage() {} +func (*GenericResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_56f0f2c53b3de771, []int{4} +} +func (m *GenericResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GenericResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GenericResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *GenericResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_GenericResponse.Merge(m, src) +} +func (m *GenericResponse) XXX_Size() int { + return m.Size() +} +func (m *GenericResponse) XXX_DiscardUnknown() { + xxx_messageInfo_GenericResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_GenericResponse proto.InternalMessageInfo func (m *GenericResponse) GetAccepted() bool { if m != nil && m.Accepted != nil { @@ -148,16 +283,54 @@ return nil } +func (m *GenericResponse) GetInstance() uint64 { + if m != nil && m.Instance != nil { + return *m.Instance + } + return 0 +} + type PrepareRequest struct { - Instance *uint64 `protobuf:"varint,1,req,name=instance" json:"instance,omitempty"` - Master *Member `protobuf:"bytes,2,req,name=master" json:"master,omitempty"` - XXX_unrecognized []byte `json:"-"` + Instance *uint64 `protobuf:"varint,1,req,name=instance" json:"instance,omitempty"` + Master *Member `protobuf:"bytes,2,req,name=master" json:"master,omitempty"` + Cluster *string `protobuf:"bytes,3,req,name=cluster" json:"cluster,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *PrepareRequest) Reset() { *m = PrepareRequest{} } -func (m *PrepareRequest) String() string { return proto1.CompactTextString(m) } -func (*PrepareRequest) ProtoMessage() {} -func (*PrepareRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } +func (m *PrepareRequest) Reset() { *m = PrepareRequest{} } +func (m *PrepareRequest) String() string { return proto.CompactTextString(m) } +func (*PrepareRequest) ProtoMessage() {} +func (*PrepareRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_56f0f2c53b3de771, []int{5} +} +func (m *PrepareRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PrepareRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PrepareRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *PrepareRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_PrepareRequest.Merge(m, src) +} +func (m *PrepareRequest) XXX_Size() int { + return m.Size() +} +func (m *PrepareRequest) XXX_DiscardUnknown() { + xxx_messageInfo_PrepareRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_PrepareRequest proto.InternalMessageInfo func (m *PrepareRequest) GetInstance() uint64 { if m != nil && m.Instance != nil { @@ -173,16 +346,53 @@ return nil } +func (m *PrepareRequest) GetCluster() string { + if m != nil && m.Cluster != nil { + return *m.Cluster + } + return "" +} + type PrepareResponse struct { - Instance *uint64 `protobuf:"varint,1,req,name=instance" json:"instance,omitempty"` - Error *Error `protobuf:"bytes,2,opt,name=error" json:"error,omitempty"` - XXX_unrecognized []byte `json:"-"` + Instance *uint64 `protobuf:"varint,1,req,name=instance" json:"instance,omitempty"` + Error *Error `protobuf:"bytes,2,opt,name=error" json:"error,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *PrepareResponse) Reset() { *m = PrepareResponse{} } -func (m *PrepareResponse) String() string { return proto1.CompactTextString(m) } -func (*PrepareResponse) ProtoMessage() {} -func (*PrepareResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } +func (m *PrepareResponse) Reset() { *m = PrepareResponse{} } +func (m *PrepareResponse) String() string { return proto.CompactTextString(m) } +func (*PrepareResponse) ProtoMessage() {} +func (*PrepareResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_56f0f2c53b3de771, []int{6} +} +func (m *PrepareResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PrepareResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PrepareResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *PrepareResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_PrepareResponse.Merge(m, src) +} +func (m *PrepareResponse) XXX_Size() int { + return m.Size() +} +func (m *PrepareResponse) XXX_DiscardUnknown() { + xxx_messageInfo_PrepareResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_PrepareResponse proto.InternalMessageInfo func (m *PrepareResponse) GetInstance() uint64 { if m != nil && m.Instance != nil { @@ -199,15 +409,46 @@ } type AcceptRequest struct { - Version *Version `protobuf:"bytes,1,req,name=version" json:"version,omitempty"` - Changes []*Change `protobuf:"bytes,2,rep,name=changes" json:"changes,omitempty"` - XXX_unrecognized []byte `json:"-"` + Version *Version `protobuf:"bytes,1,req,name=version" json:"version,omitempty"` + Changes []*Change `protobuf:"bytes,2,rep,name=changes" json:"changes,omitempty"` + Cluster *string `protobuf:"bytes,3,req,name=cluster" json:"cluster,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *AcceptRequest) Reset() { *m = AcceptRequest{} } -func (m *AcceptRequest) String() string { return proto1.CompactTextString(m) } -func (*AcceptRequest) ProtoMessage() {} -func (*AcceptRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } +func (m *AcceptRequest) Reset() { *m = AcceptRequest{} } +func (m *AcceptRequest) String() string { return proto.CompactTextString(m) } +func (*AcceptRequest) ProtoMessage() {} +func (*AcceptRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_56f0f2c53b3de771, []int{7} +} +func (m *AcceptRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AcceptRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AcceptRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *AcceptRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_AcceptRequest.Merge(m, src) +} +func (m *AcceptRequest) XXX_Size() int { + return m.Size() +} +func (m *AcceptRequest) XXX_DiscardUnknown() { + xxx_messageInfo_AcceptRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_AcceptRequest proto.InternalMessageInfo func (m *AcceptRequest) GetVersion() *Version { if m != nil { @@ -223,16 +464,54 @@ return nil } +func (m *AcceptRequest) GetCluster() string { + if m != nil && m.Cluster != nil { + return *m.Cluster + } + return "" +} + type AddMemberRequest struct { - Version *Version `protobuf:"bytes,1,req,name=version" json:"version,omitempty"` - Member *Member `protobuf:"bytes,2,req,name=member" json:"member,omitempty"` - XXX_unrecognized []byte `json:"-"` + Version *Version `protobuf:"bytes,1,req,name=version" json:"version,omitempty"` + Member *Member `protobuf:"bytes,2,req,name=member" json:"member,omitempty"` + Cluster *string `protobuf:"bytes,3,req,name=cluster" json:"cluster,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *AddMemberRequest) Reset() { *m = AddMemberRequest{} } -func (m *AddMemberRequest) String() string { return proto1.CompactTextString(m) } -func (*AddMemberRequest) ProtoMessage() {} -func (*AddMemberRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } +func (m *AddMemberRequest) Reset() { *m = AddMemberRequest{} } +func (m *AddMemberRequest) String() string { return proto.CompactTextString(m) } +func (*AddMemberRequest) ProtoMessage() {} +func (*AddMemberRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_56f0f2c53b3de771, []int{8} +} +func (m *AddMemberRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AddMemberRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AddMemberRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *AddMemberRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_AddMemberRequest.Merge(m, src) +} +func (m *AddMemberRequest) XXX_Size() int { + return m.Size() +} +func (m *AddMemberRequest) XXX_DiscardUnknown() { + xxx_messageInfo_AddMemberRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_AddMemberRequest proto.InternalMessageInfo func (m *AddMemberRequest) GetVersion() *Version { if m != nil { @@ -248,16 +527,54 @@ return nil } +func (m *AddMemberRequest) GetCluster() string { + if m != nil && m.Cluster != nil { + return *m.Cluster + } + return "" +} + type RemoveMemberRequest struct { - Version *Version `protobuf:"bytes,1,req,name=version" json:"version,omitempty"` - Member *Member `protobuf:"bytes,2,req,name=member" json:"member,omitempty"` - XXX_unrecognized []byte `json:"-"` + Version *Version `protobuf:"bytes,1,req,name=version" json:"version,omitempty"` + Member *Member `protobuf:"bytes,2,req,name=member" json:"member,omitempty"` + Cluster *string `protobuf:"bytes,3,req,name=cluster" json:"cluster,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *RemoveMemberRequest) Reset() { *m = RemoveMemberRequest{} } -func (m *RemoveMemberRequest) String() string { return proto1.CompactTextString(m) } -func (*RemoveMemberRequest) ProtoMessage() {} -func (*RemoveMemberRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } +func (m *RemoveMemberRequest) Reset() { *m = RemoveMemberRequest{} } +func (m *RemoveMemberRequest) String() string { return proto.CompactTextString(m) } +func (*RemoveMemberRequest) ProtoMessage() {} +func (*RemoveMemberRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_56f0f2c53b3de771, []int{9} +} +func (m *RemoveMemberRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RemoveMemberRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RemoveMemberRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RemoveMemberRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_RemoveMemberRequest.Merge(m, src) +} +func (m *RemoveMemberRequest) XXX_Size() int { + return m.Size() +} +func (m *RemoveMemberRequest) XXX_DiscardUnknown() { + xxx_messageInfo_RemoveMemberRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_RemoveMemberRequest proto.InternalMessageInfo func (m *RemoveMemberRequest) GetVersion() *Version { if m != nil { @@ -273,20 +590,57 @@ return nil } +func (m *RemoveMemberRequest) GetCluster() string { + if m != nil && m.Cluster != nil { + return *m.Cluster + } + return "" +} + type StartParticipation struct { - Version *Version `protobuf:"bytes,1,req,name=version" json:"version,omitempty"` - Cluster *string `protobuf:"bytes,2,req,name=cluster" json:"cluster,omitempty"` - Self *Member `protobuf:"bytes,3,req,name=self" json:"self,omitempty"` - Master *Member `protobuf:"bytes,4,req,name=master" json:"master,omitempty"` - Members []*Member `protobuf:"bytes,5,rep,name=members" json:"members,omitempty"` - Snapshot []byte `protobuf:"bytes,6,req,name=snapshot" json:"snapshot,omitempty"` - XXX_unrecognized []byte `json:"-"` + Version *Version `protobuf:"bytes,1,req,name=version" json:"version,omitempty"` + Cluster *string `protobuf:"bytes,2,req,name=cluster" json:"cluster,omitempty"` + Self *Member `protobuf:"bytes,3,req,name=self" json:"self,omitempty"` + Master *Member `protobuf:"bytes,4,req,name=master" json:"master,omitempty"` + Members []*Member `protobuf:"bytes,5,rep,name=members" json:"members,omitempty"` + Snapshot []byte `protobuf:"bytes,6,req,name=snapshot" json:"snapshot,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *StartParticipation) Reset() { *m = StartParticipation{} } -func (m *StartParticipation) String() string { return proto1.CompactTextString(m) } -func (*StartParticipation) ProtoMessage() {} -func (*StartParticipation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } +func (m *StartParticipation) Reset() { *m = StartParticipation{} } +func (m *StartParticipation) String() string { return proto.CompactTextString(m) } +func (*StartParticipation) ProtoMessage() {} +func (*StartParticipation) Descriptor() ([]byte, []int) { + return fileDescriptor_56f0f2c53b3de771, []int{10} +} +func (m *StartParticipation) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *StartParticipation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_StartParticipation.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *StartParticipation) XXX_Merge(src proto.Message) { + xxx_messageInfo_StartParticipation.Merge(m, src) +} +func (m *StartParticipation) XXX_Size() int { + return m.Size() +} +func (m *StartParticipation) XXX_DiscardUnknown() { + xxx_messageInfo_StartParticipation.DiscardUnknown(m) +} + +var xxx_messageInfo_StartParticipation proto.InternalMessageInfo func (m *StartParticipation) GetVersion() *Version { if m != nil { @@ -331,14 +685,45 @@ } type SubmitRequest struct { - Changes []*Change `protobuf:"bytes,1,rep,name=changes" json:"changes,omitempty"` - XXX_unrecognized []byte `json:"-"` + Changes []*Change `protobuf:"bytes,1,rep,name=changes" json:"changes,omitempty"` + Cluster *string `protobuf:"bytes,2,req,name=cluster" json:"cluster,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *SubmitRequest) Reset() { *m = SubmitRequest{} } -func (m *SubmitRequest) String() string { return proto1.CompactTextString(m) } -func (*SubmitRequest) ProtoMessage() {} -func (*SubmitRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } +func (m *SubmitRequest) Reset() { *m = SubmitRequest{} } +func (m *SubmitRequest) String() string { return proto.CompactTextString(m) } +func (*SubmitRequest) ProtoMessage() {} +func (*SubmitRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_56f0f2c53b3de771, []int{11} +} +func (m *SubmitRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *SubmitRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_SubmitRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *SubmitRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SubmitRequest.Merge(m, src) +} +func (m *SubmitRequest) XXX_Size() int { + return m.Size() +} +func (m *SubmitRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SubmitRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SubmitRequest proto.InternalMessageInfo func (m *SubmitRequest) GetChanges() []*Change { if m != nil { @@ -347,48 +732,2720 @@ return nil } +func (m *SubmitRequest) GetCluster() string { + if m != nil && m.Cluster != nil { + return *m.Cluster + } + return "" +} + func init() { - proto1.RegisterType((*Error)(nil), "proto.Error") - proto1.RegisterType((*Change)(nil), "proto.Change") - proto1.RegisterType((*Member)(nil), "proto.Member") - proto1.RegisterType((*Version)(nil), "proto.Version") - proto1.RegisterType((*GenericResponse)(nil), "proto.GenericResponse") - proto1.RegisterType((*PrepareRequest)(nil), "proto.PrepareRequest") - proto1.RegisterType((*PrepareResponse)(nil), "proto.PrepareResponse") - proto1.RegisterType((*AcceptRequest)(nil), "proto.AcceptRequest") - proto1.RegisterType((*AddMemberRequest)(nil), "proto.AddMemberRequest") - proto1.RegisterType((*RemoveMemberRequest)(nil), "proto.RemoveMemberRequest") - proto1.RegisterType((*StartParticipation)(nil), "proto.StartParticipation") - proto1.RegisterType((*SubmitRequest)(nil), "proto.SubmitRequest") + proto.RegisterType((*Error)(nil), "proto.Error") + proto.RegisterType((*Change)(nil), "proto.Change") + proto.RegisterType((*Member)(nil), "proto.Member") + proto.RegisterType((*Version)(nil), "proto.Version") + proto.RegisterType((*GenericResponse)(nil), "proto.GenericResponse") + proto.RegisterType((*PrepareRequest)(nil), "proto.PrepareRequest") + proto.RegisterType((*PrepareResponse)(nil), "proto.PrepareResponse") + proto.RegisterType((*AcceptRequest)(nil), "proto.AcceptRequest") + proto.RegisterType((*AddMemberRequest)(nil), "proto.AddMemberRequest") + proto.RegisterType((*RemoveMemberRequest)(nil), "proto.RemoveMemberRequest") + proto.RegisterType((*StartParticipation)(nil), "proto.StartParticipation") + proto.RegisterType((*SubmitRequest)(nil), "proto.SubmitRequest") +} + +func init() { proto.RegisterFile("consensus.proto", fileDescriptor_56f0f2c53b3de771) } + +var fileDescriptor_56f0f2c53b3de771 = []byte{ + // 466 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x53, 0x5d, 0x8b, 0xd3, 0x40, + 0x14, 0x65, 0xd2, 0x36, 0x59, 0x6f, 0xdb, 0xad, 0x8c, 0x22, 0xc1, 0x87, 0x12, 0x07, 0x64, 0xfb, + 0xb4, 0x60, 0xff, 0x41, 0x15, 0xf1, 0x49, 0x58, 0x67, 0xc1, 0xf7, 0xd9, 0xe4, 0xea, 0x06, 0x36, + 0x93, 0x38, 0x33, 0x5d, 0x10, 0x14, 0xfc, 0x79, 0x3e, 0xfa, 0x13, 0xa4, 0x2f, 0xfe, 0x0d, 0x99, + 0xaf, 0x98, 0x22, 0x2d, 0xf5, 0xc9, 0xa7, 0xce, 0xe9, 0x99, 0xb9, 0xf7, 0x9c, 0x7b, 0x4f, 0x60, + 0x51, 0xb6, 0x52, 0xa3, 0xd4, 0x5b, 0x7d, 0xd9, 0xa9, 0xd6, 0xb4, 0x74, 0xe2, 0x7e, 0xd8, 0x0b, + 0x98, 0xbc, 0x56, 0xaa, 0x55, 0xf4, 0x31, 0x4c, 0xd0, 0x1e, 0x72, 0x52, 0x90, 0xd5, 0x03, 0xee, + 0x01, 0xa5, 0x30, 0x36, 0x9f, 0x3b, 0xcc, 0x13, 0xf7, 0xa7, 0x3b, 0xb3, 0x02, 0xd2, 0x57, 0xb7, + 0x42, 0x7e, 0x44, 0xfa, 0x04, 0xd2, 0xd2, 0x9d, 0xdc, 0xa3, 0x19, 0x0f, 0x88, 0x31, 0x48, 0xdf, + 0x62, 0x73, 0x83, 0x8a, 0xe6, 0x90, 0x89, 0xaa, 0x52, 0xa8, 0x75, 0xa8, 0x1b, 0x21, 0xdb, 0x40, + 0xf6, 0x1e, 0x95, 0xae, 0x5b, 0x49, 0x9f, 0xc2, 0x59, 0x2d, 0xb5, 0x11, 0xb2, 0xb4, 0x85, 0x92, + 0xd5, 0x98, 0xf7, 0xd8, 0x72, 0x1a, 0x3f, 0x6d, 0xd1, 0x72, 0x89, 0xe7, 0x22, 0x66, 0x0d, 0x2c, + 0xde, 0xa0, 0x44, 0x55, 0x97, 0x1c, 0x75, 0x67, 0xfd, 0xd9, 0xeb, 0xa2, 0x2c, 0xb1, 0x33, 0x58, + 0xb9, 0x52, 0x67, 0xbc, 0xc7, 0x94, 0x45, 0x87, 0xd6, 0xcc, 0x74, 0x3d, 0xf3, 0x83, 0xb8, 0x74, + 0xf6, 0xa3, 0xdf, 0xa1, 0x94, 0x51, 0x41, 0x86, 0x52, 0x58, 0x03, 0xe7, 0x57, 0x0a, 0x3b, 0xa1, + 0x90, 0x5b, 0x05, 0xda, 0x1c, 0x15, 0xfe, 0x1c, 0xd2, 0x46, 0x68, 0x83, 0xca, 0xc9, 0x9e, 0xae, + 0xe7, 0xa1, 0x9d, 0x1f, 0x0c, 0x0f, 0xa4, 0x1d, 0x50, 0x79, 0xb7, 0x75, 0xf7, 0x46, 0x45, 0x62, + 0x07, 0x14, 0x20, 0x7b, 0x07, 0x8b, 0xbe, 0xdd, 0x1f, 0x77, 0x07, 0xfb, 0x9d, 0xe0, 0x8e, 0x7d, + 0x81, 0xf9, 0xc6, 0x4d, 0x23, 0x1a, 0x58, 0x41, 0x76, 0xef, 0x97, 0xe0, 0xea, 0x4d, 0xd7, 0xe7, + 0xe1, 0x59, 0x58, 0x0d, 0x8f, 0x34, 0xbd, 0x80, 0xcc, 0x2f, 0x57, 0xe7, 0x49, 0x31, 0x1a, 0xf8, + 0xf1, 0x51, 0xe0, 0x91, 0x3d, 0x62, 0xe8, 0x2b, 0x3c, 0xdc, 0x54, 0x55, 0xf0, 0xff, 0xcf, 0x02, + 0xec, 0x3c, 0xdd, 0xd3, 0x43, 0xf3, 0xec, 0x03, 0x77, 0xa0, 0xfd, 0x37, 0x02, 0x8f, 0x38, 0x36, + 0xed, 0x3d, 0xfe, 0x37, 0x09, 0xbf, 0x08, 0xd0, 0x6b, 0x23, 0x94, 0xb9, 0x12, 0xca, 0xd4, 0x65, + 0xdd, 0x09, 0x63, 0xeb, 0x9e, 0xae, 0x60, 0x50, 0x3a, 0xd9, 0x2b, 0x4d, 0x9f, 0xc1, 0x58, 0xe3, + 0xdd, 0x07, 0xd7, 0xf1, 0x2f, 0x65, 0x8e, 0x1a, 0x24, 0x72, 0x7c, 0x2c, 0x91, 0x17, 0x90, 0x79, + 0x23, 0x3a, 0x9f, 0xec, 0x6d, 0x3a, 0xdc, 0x8b, 0xac, 0xfb, 0x34, 0xa5, 0xe8, 0xf4, 0x6d, 0x6b, + 0xf2, 0xb4, 0x48, 0x56, 0x33, 0xde, 0x63, 0xc6, 0x61, 0x7e, 0xbd, 0xbd, 0x69, 0xea, 0x3e, 0x69, + 0x83, 0xfc, 0x90, 0x53, 0xf3, 0xb3, 0x6f, 0xf1, 0xe5, 0xec, 0xfb, 0x6e, 0x49, 0x7e, 0xec, 0x96, + 0xe4, 0xe7, 0x6e, 0x49, 0x7e, 0x07, 0x00, 0x00, 0xff, 0xff, 0x7a, 0x7f, 0x09, 0x06, 0xd1, 0x04, + 0x00, 0x00, +} + +func (m *Error) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Error) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Error != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintConsensus(dAtA, i, uint64(len(*m.Error))) + i += copy(dAtA[i:], *m.Error) + } + if m.Type != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintConsensus(dAtA, i, uint64(len(*m.Type))) + i += copy(dAtA[i:], *m.Type) + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + +func (m *Change) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Change) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Change != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintConsensus(dAtA, i, uint64(len(m.Change))) + i += copy(dAtA[i:], m.Change) + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + +func (m *Member) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Member) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Address != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintConsensus(dAtA, i, uint64(len(*m.Address))) + i += copy(dAtA[i:], *m.Address) + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + +func (m *Version) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Version) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Instance == nil { + return 0, github_com_gogo_protobuf_proto.NewRequiredNotSetError("instance") + } else { + dAtA[i] = 0x8 + i++ + i = encodeVarintConsensus(dAtA, i, uint64(*m.Instance)) + } + if m.Sequence == nil { + return 0, github_com_gogo_protobuf_proto.NewRequiredNotSetError("sequence") + } else { + dAtA[i] = 0x10 + i++ + i = encodeVarintConsensus(dAtA, i, uint64(*m.Sequence)) + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + +func (m *GenericResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GenericResponse) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Accepted == nil { + return 0, github_com_gogo_protobuf_proto.NewRequiredNotSetError("accepted") + } else { + dAtA[i] = 0x8 + i++ + if *m.Accepted { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + if m.Error != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintConsensus(dAtA, i, uint64(m.Error.Size())) + n1, err1 := m.Error.MarshalTo(dAtA[i:]) + if err1 != nil { + return 0, err1 + } + i += n1 + } + if m.Instance != nil { + dAtA[i] = 0x18 + i++ + i = encodeVarintConsensus(dAtA, i, uint64(*m.Instance)) + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + +func (m *PrepareRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PrepareRequest) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Instance == nil { + return 0, github_com_gogo_protobuf_proto.NewRequiredNotSetError("instance") + } else { + dAtA[i] = 0x8 + i++ + i = encodeVarintConsensus(dAtA, i, uint64(*m.Instance)) + } + if m.Master == nil { + return 0, github_com_gogo_protobuf_proto.NewRequiredNotSetError("master") + } else { + dAtA[i] = 0x12 + i++ + i = encodeVarintConsensus(dAtA, i, uint64(m.Master.Size())) + n2, err2 := m.Master.MarshalTo(dAtA[i:]) + if err2 != nil { + return 0, err2 + } + i += n2 + } + if m.Cluster == nil { + return 0, github_com_gogo_protobuf_proto.NewRequiredNotSetError("cluster") + } else { + dAtA[i] = 0x1a + i++ + i = encodeVarintConsensus(dAtA, i, uint64(len(*m.Cluster))) + i += copy(dAtA[i:], *m.Cluster) + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + +func (m *PrepareResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PrepareResponse) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Instance == nil { + return 0, github_com_gogo_protobuf_proto.NewRequiredNotSetError("instance") + } else { + dAtA[i] = 0x8 + i++ + i = encodeVarintConsensus(dAtA, i, uint64(*m.Instance)) + } + if m.Error != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintConsensus(dAtA, i, uint64(m.Error.Size())) + n3, err3 := m.Error.MarshalTo(dAtA[i:]) + if err3 != nil { + return 0, err3 + } + i += n3 + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + +func (m *AcceptRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *AcceptRequest) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Version == nil { + return 0, github_com_gogo_protobuf_proto.NewRequiredNotSetError("version") + } else { + dAtA[i] = 0xa + i++ + i = encodeVarintConsensus(dAtA, i, uint64(m.Version.Size())) + n4, err4 := m.Version.MarshalTo(dAtA[i:]) + if err4 != nil { + return 0, err4 + } + i += n4 + } + if len(m.Changes) > 0 { + for _, msg := range m.Changes { + dAtA[i] = 0x12 + i++ + i = encodeVarintConsensus(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.Cluster == nil { + return 0, github_com_gogo_protobuf_proto.NewRequiredNotSetError("cluster") + } else { + dAtA[i] = 0x1a + i++ + i = encodeVarintConsensus(dAtA, i, uint64(len(*m.Cluster))) + i += copy(dAtA[i:], *m.Cluster) + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + +func (m *AddMemberRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *AddMemberRequest) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Version == nil { + return 0, github_com_gogo_protobuf_proto.NewRequiredNotSetError("version") + } else { + dAtA[i] = 0xa + i++ + i = encodeVarintConsensus(dAtA, i, uint64(m.Version.Size())) + n5, err5 := m.Version.MarshalTo(dAtA[i:]) + if err5 != nil { + return 0, err5 + } + i += n5 + } + if m.Member == nil { + return 0, github_com_gogo_protobuf_proto.NewRequiredNotSetError("member") + } else { + dAtA[i] = 0x12 + i++ + i = encodeVarintConsensus(dAtA, i, uint64(m.Member.Size())) + n6, err6 := m.Member.MarshalTo(dAtA[i:]) + if err6 != nil { + return 0, err6 + } + i += n6 + } + if m.Cluster == nil { + return 0, github_com_gogo_protobuf_proto.NewRequiredNotSetError("cluster") + } else { + dAtA[i] = 0x1a + i++ + i = encodeVarintConsensus(dAtA, i, uint64(len(*m.Cluster))) + i += copy(dAtA[i:], *m.Cluster) + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + +func (m *RemoveMemberRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RemoveMemberRequest) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Version == nil { + return 0, github_com_gogo_protobuf_proto.NewRequiredNotSetError("version") + } else { + dAtA[i] = 0xa + i++ + i = encodeVarintConsensus(dAtA, i, uint64(m.Version.Size())) + n7, err7 := m.Version.MarshalTo(dAtA[i:]) + if err7 != nil { + return 0, err7 + } + i += n7 + } + if m.Member == nil { + return 0, github_com_gogo_protobuf_proto.NewRequiredNotSetError("member") + } else { + dAtA[i] = 0x12 + i++ + i = encodeVarintConsensus(dAtA, i, uint64(m.Member.Size())) + n8, err8 := m.Member.MarshalTo(dAtA[i:]) + if err8 != nil { + return 0, err8 + } + i += n8 + } + if m.Cluster == nil { + return 0, github_com_gogo_protobuf_proto.NewRequiredNotSetError("cluster") + } else { + dAtA[i] = 0x1a + i++ + i = encodeVarintConsensus(dAtA, i, uint64(len(*m.Cluster))) + i += copy(dAtA[i:], *m.Cluster) + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + +func (m *StartParticipation) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *StartParticipation) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Version == nil { + return 0, github_com_gogo_protobuf_proto.NewRequiredNotSetError("version") + } else { + dAtA[i] = 0xa + i++ + i = encodeVarintConsensus(dAtA, i, uint64(m.Version.Size())) + n9, err9 := m.Version.MarshalTo(dAtA[i:]) + if err9 != nil { + return 0, err9 + } + i += n9 + } + if m.Cluster == nil { + return 0, github_com_gogo_protobuf_proto.NewRequiredNotSetError("cluster") + } else { + dAtA[i] = 0x12 + i++ + i = encodeVarintConsensus(dAtA, i, uint64(len(*m.Cluster))) + i += copy(dAtA[i:], *m.Cluster) + } + if m.Self == nil { + return 0, github_com_gogo_protobuf_proto.NewRequiredNotSetError("self") + } else { + dAtA[i] = 0x1a + i++ + i = encodeVarintConsensus(dAtA, i, uint64(m.Self.Size())) + n10, err10 := m.Self.MarshalTo(dAtA[i:]) + if err10 != nil { + return 0, err10 + } + i += n10 + } + if m.Master == nil { + return 0, github_com_gogo_protobuf_proto.NewRequiredNotSetError("master") + } else { + dAtA[i] = 0x22 + i++ + i = encodeVarintConsensus(dAtA, i, uint64(m.Master.Size())) + n11, err11 := m.Master.MarshalTo(dAtA[i:]) + if err11 != nil { + return 0, err11 + } + i += n11 + } + if len(m.Members) > 0 { + for _, msg := range m.Members { + dAtA[i] = 0x2a + i++ + i = encodeVarintConsensus(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.Snapshot == nil { + return 0, github_com_gogo_protobuf_proto.NewRequiredNotSetError("snapshot") + } else { + dAtA[i] = 0x32 + i++ + i = encodeVarintConsensus(dAtA, i, uint64(len(m.Snapshot))) + i += copy(dAtA[i:], m.Snapshot) + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + +func (m *SubmitRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SubmitRequest) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Changes) > 0 { + for _, msg := range m.Changes { + dAtA[i] = 0xa + i++ + i = encodeVarintConsensus(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.Cluster == nil { + return 0, github_com_gogo_protobuf_proto.NewRequiredNotSetError("cluster") + } else { + dAtA[i] = 0x12 + i++ + i = encodeVarintConsensus(dAtA, i, uint64(len(*m.Cluster))) + i += copy(dAtA[i:], *m.Cluster) + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + +func encodeVarintConsensus(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m *Error) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Error != nil { + l = len(*m.Error) + n += 1 + l + sovConsensus(uint64(l)) + } + if m.Type != nil { + l = len(*m.Type) + n += 1 + l + sovConsensus(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *Change) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Change != nil { + l = len(m.Change) + n += 1 + l + sovConsensus(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *Member) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Address != nil { + l = len(*m.Address) + n += 1 + l + sovConsensus(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *Version) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Instance != nil { + n += 1 + sovConsensus(uint64(*m.Instance)) + } + if m.Sequence != nil { + n += 1 + sovConsensus(uint64(*m.Sequence)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *GenericResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Accepted != nil { + n += 2 + } + if m.Error != nil { + l = m.Error.Size() + n += 1 + l + sovConsensus(uint64(l)) + } + if m.Instance != nil { + n += 1 + sovConsensus(uint64(*m.Instance)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *PrepareRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Instance != nil { + n += 1 + sovConsensus(uint64(*m.Instance)) + } + if m.Master != nil { + l = m.Master.Size() + n += 1 + l + sovConsensus(uint64(l)) + } + if m.Cluster != nil { + l = len(*m.Cluster) + n += 1 + l + sovConsensus(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *PrepareResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Instance != nil { + n += 1 + sovConsensus(uint64(*m.Instance)) + } + if m.Error != nil { + l = m.Error.Size() + n += 1 + l + sovConsensus(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *AcceptRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Version != nil { + l = m.Version.Size() + n += 1 + l + sovConsensus(uint64(l)) + } + if len(m.Changes) > 0 { + for _, e := range m.Changes { + l = e.Size() + n += 1 + l + sovConsensus(uint64(l)) + } + } + if m.Cluster != nil { + l = len(*m.Cluster) + n += 1 + l + sovConsensus(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *AddMemberRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Version != nil { + l = m.Version.Size() + n += 1 + l + sovConsensus(uint64(l)) + } + if m.Member != nil { + l = m.Member.Size() + n += 1 + l + sovConsensus(uint64(l)) + } + if m.Cluster != nil { + l = len(*m.Cluster) + n += 1 + l + sovConsensus(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *RemoveMemberRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Version != nil { + l = m.Version.Size() + n += 1 + l + sovConsensus(uint64(l)) + } + if m.Member != nil { + l = m.Member.Size() + n += 1 + l + sovConsensus(uint64(l)) + } + if m.Cluster != nil { + l = len(*m.Cluster) + n += 1 + l + sovConsensus(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *StartParticipation) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Version != nil { + l = m.Version.Size() + n += 1 + l + sovConsensus(uint64(l)) + } + if m.Cluster != nil { + l = len(*m.Cluster) + n += 1 + l + sovConsensus(uint64(l)) + } + if m.Self != nil { + l = m.Self.Size() + n += 1 + l + sovConsensus(uint64(l)) + } + if m.Master != nil { + l = m.Master.Size() + n += 1 + l + sovConsensus(uint64(l)) + } + if len(m.Members) > 0 { + for _, e := range m.Members { + l = e.Size() + n += 1 + l + sovConsensus(uint64(l)) + } + } + if m.Snapshot != nil { + l = len(m.Snapshot) + n += 1 + l + sovConsensus(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *SubmitRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Changes) > 0 { + for _, e := range m.Changes { + l = e.Size() + n += 1 + l + sovConsensus(uint64(l)) + } + } + if m.Cluster != nil { + l = len(*m.Cluster) + n += 1 + l + sovConsensus(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n } -func init() { proto1.RegisterFile("consensus.proto", fileDescriptor0) } +func sovConsensus(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozConsensus(x uint64) (n int) { + return sovConsensus(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *Error) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Error: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Error: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthConsensus + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthConsensus + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.Error = &s + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthConsensus + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthConsensus + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.Type = &s + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipConsensus(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthConsensus + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthConsensus + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Change) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Change: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Change: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Change", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthConsensus + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthConsensus + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Change = append(m.Change[:0], dAtA[iNdEx:postIndex]...) + if m.Change == nil { + m.Change = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipConsensus(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthConsensus + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthConsensus + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Member) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Member: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Member: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthConsensus + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthConsensus + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.Address = &s + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipConsensus(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthConsensus + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthConsensus + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Version) Unmarshal(dAtA []byte) error { + var hasFields [1]uint64 + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Version: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Version: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Instance", wireType) + } + var v uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Instance = &v + hasFields[0] |= uint64(0x00000001) + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Sequence", wireType) + } + var v uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Sequence = &v + hasFields[0] |= uint64(0x00000002) + default: + iNdEx = preIndex + skippy, err := skipConsensus(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthConsensus + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthConsensus + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + if hasFields[0]&uint64(0x00000001) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("instance") + } + if hasFields[0]&uint64(0x00000002) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("sequence") + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GenericResponse) Unmarshal(dAtA []byte) error { + var hasFields [1]uint64 + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GenericResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GenericResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Accepted", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.Accepted = &b + hasFields[0] |= uint64(0x00000001) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConsensus + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthConsensus + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Error == nil { + m.Error = &Error{} + } + if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Instance", wireType) + } + var v uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Instance = &v + default: + iNdEx = preIndex + skippy, err := skipConsensus(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthConsensus + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthConsensus + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + if hasFields[0]&uint64(0x00000001) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("accepted") + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PrepareRequest) Unmarshal(dAtA []byte) error { + var hasFields [1]uint64 + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PrepareRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PrepareRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Instance", wireType) + } + var v uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Instance = &v + hasFields[0] |= uint64(0x00000001) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Master", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConsensus + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthConsensus + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Master == nil { + m.Master = &Member{} + } + if err := m.Master.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + hasFields[0] |= uint64(0x00000002) + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Cluster", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthConsensus + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthConsensus + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.Cluster = &s + iNdEx = postIndex + hasFields[0] |= uint64(0x00000004) + default: + iNdEx = preIndex + skippy, err := skipConsensus(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthConsensus + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthConsensus + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + if hasFields[0]&uint64(0x00000001) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("instance") + } + if hasFields[0]&uint64(0x00000002) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("master") + } + if hasFields[0]&uint64(0x00000004) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("cluster") + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PrepareResponse) Unmarshal(dAtA []byte) error { + var hasFields [1]uint64 + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PrepareResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PrepareResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Instance", wireType) + } + var v uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Instance = &v + hasFields[0] |= uint64(0x00000001) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConsensus + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthConsensus + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Error == nil { + m.Error = &Error{} + } + if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipConsensus(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthConsensus + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthConsensus + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + if hasFields[0]&uint64(0x00000001) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("instance") + } -var fileDescriptor0 = []byte{ - // 387 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x92, 0xcd, 0x6e, 0xe2, 0x30, - 0x10, 0xc7, 0x15, 0xc8, 0x07, 0x0c, 0x09, 0x20, 0xef, 0x25, 0xab, 0xd5, 0x7e, 0xc8, 0xda, 0x03, - 0x97, 0x65, 0x25, 0x9e, 0x60, 0xd1, 0xaa, 0xea, 0xa9, 0x12, 0x0a, 0x6a, 0xef, 0xc6, 0x99, 0x96, - 0x48, 0xc4, 0x49, 0x6d, 0x07, 0xa9, 0xef, 0xd5, 0x07, 0x6c, 0x6c, 0x03, 0xa5, 0x55, 0xd4, 0xf6, - 0xd0, 0x03, 0xc2, 0x19, 0xcf, 0xfc, 0xe7, 0x37, 0xff, 0x31, 0x4c, 0x78, 0x25, 0x14, 0x0a, 0xd5, - 0xa8, 0x79, 0x2d, 0x2b, 0x5d, 0x91, 0xc0, 0xfe, 0xd1, 0xdf, 0x10, 0x5c, 0x48, 0x59, 0x49, 0x92, - 0x40, 0x80, 0xe6, 0x90, 0x7a, 0xbf, 0xbc, 0xd9, 0x90, 0xc4, 0xe0, 0xeb, 0x87, 0x1a, 0xd3, 0x9e, - 0xf9, 0xa2, 0x29, 0x84, 0xff, 0xb7, 0x4c, 0xdc, 0x21, 0x19, 0x43, 0xc8, 0xed, 0xc9, 0xe6, 0xc5, - 0xf4, 0x2b, 0x84, 0x57, 0x58, 0x6e, 0x50, 0x92, 0x09, 0x44, 0x2c, 0xcf, 0x25, 0x2a, 0xe5, 0x24, - 0xe8, 0x1f, 0x88, 0x6e, 0x50, 0xaa, 0xa2, 0x12, 0x64, 0x0a, 0x83, 0x42, 0x28, 0xcd, 0x04, 0x37, - 0x75, 0xbd, 0x99, 0x6f, 0x22, 0x0a, 0xef, 0x1b, 0x34, 0x91, 0x9e, 0x89, 0xd0, 0x7f, 0x30, 0xb9, - 0x44, 0x81, 0xb2, 0xe0, 0x19, 0xaa, 0xda, 0xd0, 0x9a, 0x24, 0xc6, 0x39, 0xd6, 0x1a, 0x73, 0x5b, - 0x36, 0x20, 0xdf, 0x8e, 0x94, 0x86, 0x6b, 0xb4, 0x88, 0xdd, 0x30, 0x73, 0x3b, 0x02, 0x5d, 0xc2, - 0x78, 0x25, 0xb1, 0x66, 0x12, 0x33, 0x23, 0xad, 0x74, 0x47, 0xdf, 0xef, 0x10, 0x96, 0x4c, 0x69, - 0x94, 0xb6, 0xeb, 0x68, 0x91, 0x1c, 0x14, 0xdc, 0x10, 0x06, 0xe2, 0x24, 0xf1, 0x0c, 0xf1, 0x4a, - 0xe3, 0x4d, 0x88, 0x15, 0x24, 0x4b, 0xcb, 0x7c, 0x64, 0xf8, 0x09, 0xd1, 0xde, 0xd9, 0x60, 0xcb, - 0x47, 0x8b, 0xf1, 0x21, 0xff, 0x68, 0xce, 0x0f, 0x88, 0x9c, 0xa5, 0xaa, 0x15, 0xec, 0x9f, 0x31, - 0x39, 0xcb, 0x69, 0x06, 0xd3, 0x65, 0x9e, 0x3b, 0xc0, 0x0f, 0x8b, 0x9a, 0x39, 0x6d, 0x45, 0xf7, - 0x9c, 0xd7, 0xf0, 0x25, 0xc3, 0xb2, 0xda, 0xe3, 0xe7, 0xca, 0x3e, 0x7a, 0x40, 0xd6, 0x9a, 0x49, - 0xbd, 0x6a, 0x7f, 0x05, 0x2f, 0x6a, 0xa6, 0x4d, 0xd5, 0xbb, 0xb2, 0xed, 0xdb, 0xe1, 0xbb, 0xe6, - 0xb4, 0x96, 0x61, 0x6b, 0xb1, 0xaf, 0x70, 0x77, 0x9b, 0xf6, 0x3b, 0xba, 0x9c, 0xed, 0xd0, 0xef, - 0xba, 0x6e, 0xfd, 0x74, 0x8c, 0x2a, 0x0d, 0x5e, 0xf8, 0x79, 0xb8, 0x37, 0x4f, 0x4f, 0xb0, 0x5a, - 0x6d, 0x2b, 0x9d, 0x86, 0xad, 0x40, 0x4c, 0xff, 0x42, 0xb2, 0x6e, 0x36, 0x65, 0x71, 0xda, 0xd9, - 0xd9, 0x4a, 0xbc, 0x8e, 0x95, 0x3c, 0x05, 0x00, 0x00, 0xff, 0xff, 0xfb, 0x7d, 0x23, 0xac, 0x4e, - 0x03, 0x00, 0x00, + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *AcceptRequest) Unmarshal(dAtA []byte) error { + var hasFields [1]uint64 + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AcceptRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AcceptRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConsensus + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthConsensus + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Version == nil { + m.Version = &Version{} + } + if err := m.Version.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + hasFields[0] |= uint64(0x00000001) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Changes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConsensus + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthConsensus + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Changes = append(m.Changes, &Change{}) + if err := m.Changes[len(m.Changes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Cluster", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthConsensus + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthConsensus + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.Cluster = &s + iNdEx = postIndex + hasFields[0] |= uint64(0x00000002) + default: + iNdEx = preIndex + skippy, err := skipConsensus(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthConsensus + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthConsensus + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + if hasFields[0]&uint64(0x00000001) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("version") + } + if hasFields[0]&uint64(0x00000002) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("cluster") + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *AddMemberRequest) Unmarshal(dAtA []byte) error { + var hasFields [1]uint64 + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AddMemberRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AddMemberRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConsensus + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthConsensus + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Version == nil { + m.Version = &Version{} + } + if err := m.Version.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + hasFields[0] |= uint64(0x00000001) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Member", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConsensus + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthConsensus + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Member == nil { + m.Member = &Member{} + } + if err := m.Member.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + hasFields[0] |= uint64(0x00000002) + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Cluster", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthConsensus + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthConsensus + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.Cluster = &s + iNdEx = postIndex + hasFields[0] |= uint64(0x00000004) + default: + iNdEx = preIndex + skippy, err := skipConsensus(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthConsensus + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthConsensus + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + if hasFields[0]&uint64(0x00000001) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("version") + } + if hasFields[0]&uint64(0x00000002) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("member") + } + if hasFields[0]&uint64(0x00000004) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("cluster") + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RemoveMemberRequest) Unmarshal(dAtA []byte) error { + var hasFields [1]uint64 + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RemoveMemberRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RemoveMemberRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConsensus + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthConsensus + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Version == nil { + m.Version = &Version{} + } + if err := m.Version.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + hasFields[0] |= uint64(0x00000001) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Member", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConsensus + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthConsensus + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Member == nil { + m.Member = &Member{} + } + if err := m.Member.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + hasFields[0] |= uint64(0x00000002) + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Cluster", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthConsensus + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthConsensus + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.Cluster = &s + iNdEx = postIndex + hasFields[0] |= uint64(0x00000004) + default: + iNdEx = preIndex + skippy, err := skipConsensus(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthConsensus + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthConsensus + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + if hasFields[0]&uint64(0x00000001) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("version") + } + if hasFields[0]&uint64(0x00000002) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("member") + } + if hasFields[0]&uint64(0x00000004) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("cluster") + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil } +func (m *StartParticipation) Unmarshal(dAtA []byte) error { + var hasFields [1]uint64 + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StartParticipation: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StartParticipation: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConsensus + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthConsensus + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Version == nil { + m.Version = &Version{} + } + if err := m.Version.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + hasFields[0] |= uint64(0x00000001) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Cluster", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthConsensus + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthConsensus + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.Cluster = &s + iNdEx = postIndex + hasFields[0] |= uint64(0x00000002) + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Self", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConsensus + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthConsensus + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Self == nil { + m.Self = &Member{} + } + if err := m.Self.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + hasFields[0] |= uint64(0x00000004) + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Master", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConsensus + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthConsensus + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Master == nil { + m.Master = &Member{} + } + if err := m.Master.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + hasFields[0] |= uint64(0x00000008) + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Members", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConsensus + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthConsensus + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Members = append(m.Members, &Member{}) + if err := m.Members[len(m.Members)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Snapshot", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthConsensus + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthConsensus + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Snapshot = append(m.Snapshot[:0], dAtA[iNdEx:postIndex]...) + if m.Snapshot == nil { + m.Snapshot = []byte{} + } + iNdEx = postIndex + hasFields[0] |= uint64(0x00000010) + default: + iNdEx = preIndex + skippy, err := skipConsensus(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthConsensus + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthConsensus + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + if hasFields[0]&uint64(0x00000001) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("version") + } + if hasFields[0]&uint64(0x00000002) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("cluster") + } + if hasFields[0]&uint64(0x00000004) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("self") + } + if hasFields[0]&uint64(0x00000008) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("master") + } + if hasFields[0]&uint64(0x00000010) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("snapshot") + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SubmitRequest) Unmarshal(dAtA []byte) error { + var hasFields [1]uint64 + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SubmitRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SubmitRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Changes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConsensus + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthConsensus + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Changes = append(m.Changes, &Change{}) + if err := m.Changes[len(m.Changes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Cluster", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConsensus + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthConsensus + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthConsensus + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.Cluster = &s + iNdEx = postIndex + hasFields[0] |= uint64(0x00000001) + default: + iNdEx = preIndex + skippy, err := skipConsensus(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthConsensus + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthConsensus + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + if hasFields[0]&uint64(0x00000001) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("cluster") + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipConsensus(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowConsensus + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowConsensus + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowConsensus + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthConsensus + } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthConsensus + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowConsensus + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipConsensus(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthConsensus + } + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthConsensus = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowConsensus = fmt.Errorf("proto: integer overflow") +)
--- a/example_clusterrpc/proto/consensus.proto Wed Jul 24 15:42:12 2019 +0200 +++ b/example_clusterrpc/proto/consensus.proto Thu Jul 25 16:37:06 2019 +0200 @@ -1,3 +1,4 @@ +syntax = "proto2"; package proto; message Error { @@ -21,11 +22,13 @@ message GenericResponse { required bool accepted = 1; optional Error error = 2; + optional uint64 instance = 3; } message PrepareRequest { required uint64 instance = 1; required Member master = 2; + required string cluster = 3; } message PrepareResponse { @@ -36,16 +39,19 @@ message AcceptRequest { required Version version = 1; repeated Change changes = 2; + required string cluster = 3; } message AddMemberRequest { required Version version = 1; required Member member = 2; + required string cluster = 3; } message RemoveMemberRequest { required Version version = 1; required Member member = 2; + required string cluster = 3; } message StartParticipation { @@ -59,4 +65,5 @@ message SubmitRequest { repeated Change changes = 1; + required string cluster = 2; }
--- a/example_http/example.go Wed Jul 24 15:42:12 2019 +0200 +++ b/example_http/example.go Thu Jul 25 16:37:06 2019 +0200 @@ -140,11 +140,12 @@ err := participant.SubmitOne(Change{t: change_ADD, key: fmt.Sprintf(*addr+"k%d", i), val: fmt.Sprintf("val%d", i)}) if err != nil { - glog.Info(err) + glog.Info("couldn't submit change:", err) } if i%5 == 0 { - log.Println("master:", participant.IsMaster(), len(participant.GetState().(State).inner), participant.GetState().(State)) + log.Println("master:", participant.IsMaster(), len(participant.GetState().(State).inner), + participant.GetState().(State)) } i++
--- a/http/server.go Wed Jul 24 15:42:12 2019 +0200 +++ b/http/server.go Thu Jul 25 16:37:06 2019 +0200 @@ -26,6 +26,7 @@ return HttpConsensusServer{participants: make(map[string]con.ConsensusServer), mux: http.NewServeMux()} } +// Register initializes a new cluster on this server. stub is a Participant instance used by your application. func (srv HttpConsensusServer) Register(cluster string, stub con.ConsensusServer, decoder con.ChangeDeserializer) error { if _, ok := srv.participants[cluster]; ok { return con.NewError(con.ERR_STATE, fmt.Sprintf("Server is already part of cluster %s", cluster), nil) @@ -204,7 +205,8 @@ } glog.Info("server: add_member:", r.URL.Path, decoded) - err := h.inner.AddMember(con.InstanceNumber(decoded.Instance), con.SequenceNumber(decoded.Sequence), con.Member{Address: decoded.Mem.Addr}) + err := h.inner.AddMember(con.InstanceNumber(decoded.Instance), con.SequenceNumber(decoded.Sequence), + con.Member{Address: decoded.Mem.Addr}) var result GenericResponse