// Path: redant-cluster/src/main/java/com/redant/cluster/node/Node.java
// public class Node {
// 
//     private static final String DEFAULT_HOST = GenericsUtil.getLocalIpV4();
// 
//     private static final int DEFAULT_PORT = 8088;
// 
//     public static final Node DEFAULT_PORT_NODE = new Node(DEFAULT_HOST,DEFAULT_PORT);
// 
//     private String id;
// 
//     private String host;
// 
//     private int port;
// 
//     public Node(int port){
//         this(DEFAULT_HOST,port);
//     }
// 
//     public Node(String host, int port){
//         this(SecureUtil.md5(host+"&"+port),host,port);
//     }
// 
//     public Node(String id, String host, int port){
//         this.id = id;
//         this.host = host;
//         this.port = port;
//     }
// 
//     public static Node getNodeWithArgs(String[] args){
//         Node node = Node.DEFAULT_PORT_NODE;
//         if(args.length>1 && NumberUtil.isInteger(args[1])){
//             node = new Node(Integer.parseInt(args[1]));
//         }
//         return node;
//     }
// 
//     /**
//      * 从JsonObject中解析出SlaveNode
//      * @param object 对象
//      * @return 节点
//      */
//     public static Node parse(JSONObject object){
//         if(object==null){
//             return null;
//         }
//         String host = object.getString("host");
//         int port = object.getIntValue("port");
//         String id = object.getString("id");
//         return new Node(id,host,port);
//     }
// 
//     public String getHost() {
//         return host;
//     }
// 
//     public void setHost(String host) {
//         this.host = host;
//     }
// 
//     public int getPort() {
//         return port;
//     }
// 
//     public void setPort(int port) {
//         this.port = port;
//     }
// 
//     public String getId(){
//         return id;
//     }
// 
//     @Override
//     public String toString() {
//         return JSON.toJSONString(this);
//     }
// 
// }


import com.redant.cluster.node.Node;
package com.redant.cluster.service.discover;


/**
 * 服务发现-应用级别
 * @author houyi.wh
 * @date 2017/11/20
 **/
public interface ServiceDiscover {

    /**
     * 监听Slave节点
     */
    void watch();

    /**
     * 发现可用的Slave节点
     * @return 可用节点
     */
// Path: redant-cluster/src/main/java/com/redant/cluster/node/Node.java
// public class Node {
// 
//     private static final String DEFAULT_HOST = GenericsUtil.getLocalIpV4();
// 
//     private static final int DEFAULT_PORT = 8088;
// 
//     public static final Node DEFAULT_PORT_NODE = new Node(DEFAULT_HOST,DEFAULT_PORT);
// 
//     private String id;
// 
//     private String host;
// 
//     private int port;
// 
//     public Node(int port){
//         this(DEFAULT_HOST,port);
//     }
// 
//     public Node(String host, int port){
//         this(SecureUtil.md5(host+"&"+port),host,port);
//     }
// 
//     public Node(String id, String host, int port){
//         this.id = id;
//         this.host = host;
//         this.port = port;
//     }
// 
//     public static Node getNodeWithArgs(String[] args){
//         Node node = Node.DEFAULT_PORT_NODE;
//         if(args.length>1 && NumberUtil.isInteger(args[1])){
//             node = new Node(Integer.parseInt(args[1]));
//         }
//         return node;
//     }
// 
//     /**
//      * 从JsonObject中解析出SlaveNode
//      * @param object 对象
//      * @return 节点
//      */
//     public static Node parse(JSONObject object){
//         if(object==null){
//             return null;
//         }
//         String host = object.getString("host");
//         int port = object.getIntValue("port");
//         String id = object.getString("id");
//         return new Node(id,host,port);
//     }
// 
//     public String getHost() {
//         return host;
//     }
// 
//     public void setHost(String host) {
//         this.host = host;
//     }
// 
//     public int getPort() {
//         return port;
//     }
// 
//     public void setPort(int port) {
//         this.port = port;
//     }
// 
//     public String getId(){
//         return id;
//     }
// 
//     @Override
//     public String toString() {
//         return JSON.toJSONString(this);
//     }
// 
// }


// Path: redant-cluster/src/main/java/com/redant/cluster/service/discover/ServiceDiscover.java
import com.redant.cluster.node.Node;

package com.redant.cluster.service.discover;


/**
 * 服务发现-应用级别
 * @author houyi.wh
 * @date 2017/11/20
 **/
public interface ServiceDiscover {

    /**
     * 监听Slave节点
     */
    void watch();

    /**
     * 发现可用的Slave节点
     * @return 可用节点
     */
    Node discover();