etcdserver: include IsLeader in etcdserverpb.Member

release-2.3
Gyu-Ho Lee 2016-02-11 12:49:41 -08:00
parent fcf94f3a59
commit a56287b9b4
3 changed files with 44 additions and 8 deletions

View File

@ -59,7 +59,7 @@ func (cs *ClusterServer) MemberAdd(ctx context.Context, r *pb.MemberAddRequest)
return &pb.MemberAddResponse{
Header: cs.header(),
Member: &pb.Member{ID: uint64(m.ID), PeerURLs: m.PeerURLs},
Member: &pb.Member{ID: uint64(m.ID), IsLeader: m.ID == cs.server.Leader(), PeerURLs: m.PeerURLs},
}, nil
}
@ -103,6 +103,7 @@ func (cs *ClusterServer) MemberList(ctx context.Context, r *pb.MemberListRequest
protoMembs[i] = &pb.Member{
Name: membs[i].Name,
ID: uint64(membs[i].ID),
IsLeader: membs[i].ID == cs.server.Leader(),
PeerURLs: membs[i].PeerURLs,
ClientURLs: membs[i].ClientURLs,
}

View File

@ -994,10 +994,11 @@ type Member struct {
ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"`
// If the member is not started, name will be an empty string.
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
PeerURLs []string `protobuf:"bytes,3,rep,name=peerURLs" json:"peerURLs,omitempty"`
IsLeader bool `protobuf:"varint,3,opt,name=IsLeader,proto3" json:"IsLeader,omitempty"`
PeerURLs []string `protobuf:"bytes,4,rep,name=peerURLs" json:"peerURLs,omitempty"`
// If the member is not started, client_URLs will be an zero length
// string array.
ClientURLs []string `protobuf:"bytes,4,rep,name=clientURLs" json:"clientURLs,omitempty"`
ClientURLs []string `protobuf:"bytes,5,rep,name=clientURLs" json:"clientURLs,omitempty"`
}
func (m *Member) Reset() { *m = Member{} }
@ -2868,9 +2869,19 @@ func (m *Member) MarshalTo(data []byte) (int, error) {
i = encodeVarintRpc(data, i, uint64(len(m.Name)))
i += copy(data[i:], m.Name)
}
if m.IsLeader {
data[i] = 0x18
i++
if m.IsLeader {
data[i] = 1
} else {
data[i] = 0
}
i++
}
if len(m.PeerURLs) > 0 {
for _, s := range m.PeerURLs {
data[i] = 0x1a
data[i] = 0x22
i++
l = len(s)
for l >= 1<<7 {
@ -2885,7 +2896,7 @@ func (m *Member) MarshalTo(data []byte) (int, error) {
}
if len(m.ClientURLs) > 0 {
for _, s := range m.ClientURLs {
data[i] = 0x22
data[i] = 0x2a
i++
l = len(s)
for l >= 1<<7 {
@ -3668,6 +3679,9 @@ func (m *Member) Size() (n int) {
if l > 0 {
n += 1 + l + sovRpc(uint64(l))
}
if m.IsLeader {
n += 2
}
if len(m.PeerURLs) > 0 {
for _, s := range m.PeerURLs {
l = len(s)
@ -6859,6 +6873,26 @@ func (m *Member) Unmarshal(data []byte) error {
m.Name = string(data[iNdEx:postIndex])
iNdEx = postIndex
case 3:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field IsLeader", wireType)
}
var v int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowRpc
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := data[iNdEx]
iNdEx++
v |= (int(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
m.IsLeader = bool(v != 0)
case 4:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field PeerURLs", wireType)
}
@ -6887,7 +6921,7 @@ func (m *Member) Unmarshal(data []byte) error {
}
m.PeerURLs = append(m.PeerURLs, string(data[iNdEx:postIndex]))
iNdEx = postIndex
case 4:
case 5:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field ClientURLs", wireType)
}

View File

@ -323,10 +323,11 @@ message Member {
uint64 ID = 1;
// If the member is not started, name will be an empty string.
string name = 2;
repeated string peerURLs = 3;
bool IsLeader = 3;
repeated string peerURLs = 4;
// If the member is not started, client_URLs will be an zero length
// string array.
repeated string clientURLs = 4;
repeated string clientURLs = 5;
}
message MemberAddRequest {