1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements.  See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership.  The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the
7  * "License"); you may not use this file except in compliance
8  * with the License.  You may obtain a copy of the License at
9  *
10  *     http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18 
19 package org.apache.zookeeper.server.quorum;
20 
21 import static org.apache.zookeeper.common.NetUtils.formatInetAddr;
22 import java.util.stream.Collectors;
23 import org.apache.zookeeper.common.NetUtils;
24 import org.apache.zookeeper.jmx.ZKMBeanInfo;
25 
26 /**
27  * A remote peer bean only provides limited information about the remote peer,
28  * and the peer cannot be managed remotely.
29  */
30 public class RemotePeerBean implements RemotePeerMXBean, ZKMBeanInfo {
31 
32     private QuorumPeer.QuorumServer peer;
33     private final QuorumPeer localPeer;
34 
RemotePeerBean(QuorumPeer localPeer, QuorumPeer.QuorumServer peer)35     public RemotePeerBean(QuorumPeer localPeer, QuorumPeer.QuorumServer peer) {
36         this.peer = peer;
37         this.localPeer = localPeer;
38     }
39 
setQuorumServer(QuorumPeer.QuorumServer peer)40     public void setQuorumServer(QuorumPeer.QuorumServer peer) {
41         this.peer = peer;
42     }
43 
getName()44     public String getName() {
45         return "replica." + peer.id;
46     }
isHidden()47     public boolean isHidden() {
48         return false;
49     }
50 
getQuorumAddress()51     public String getQuorumAddress() {
52         return peer.addr.getAllAddresses().stream().map(NetUtils::formatInetAddr)
53             .collect(Collectors.joining("|"));
54     }
55 
getElectionAddress()56     public String getElectionAddress() {
57         return peer.electionAddr.getAllAddresses().stream().map(NetUtils::formatInetAddr)
58             .collect(Collectors.joining("|"));
59     }
60 
getClientAddress()61     public String getClientAddress() {
62         if (null == peer.clientAddr) {
63             return "";
64         }
65         return formatInetAddr(peer.clientAddr);
66     }
67 
getLearnerType()68     public String getLearnerType() {
69         return peer.type.toString();
70     }
71 
72     @Override
isLeader()73     public boolean isLeader() {
74         return localPeer.isLeader(peer.getId());
75     }
76 
77 }
78