All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.acgist.snail.pojo.session.NodeSession Maven / Gradle / Ivy

Go to download

基于Java开发的下载工具,支持下载协议:BT(BitTorrent、磁力链接、种子文件)、HLS(M3U8)、FTP、HTTP。

There is a newer version: 2.17.0
Show newest version
package com.acgist.snail.pojo.session;

import java.util.Arrays;

import com.acgist.snail.utils.BeanUtils;

/**
 * 

DHT节点信息

* * @author acgist */ public final class NodeSession implements Comparable { /** *

DHT节点状态

* * @author acgist */ public enum Status { /** *

未知:没有使用

*/ UNUSE, /** *

验证:没有收到响应

*

使用后标记为验证状态

*

验证状态节点不能用于:保存、查找

*/ VERIFY, /** *

可用:收到响应

*/ AVAILABLE; } /** *

节点ID

*/ private final byte[] id; /** *

节点地址

*/ private final String host; /** *

节点端口

*/ private final int port; /** *

节点状态

*/ private Status status; /** * @param id 节点ID * @param host 节点地址 * @param port 节点端口 */ private NodeSession(byte[] id, String host, int port) { this.id = id; this.host = host; this.port = port; this.status = Status.UNUSE; } /** *

新建DHT节点信息

* * @param id 节点ID * @param host 节点地址 * @param port 节点端口 * * @return {@link NodeSession} */ public static final NodeSession newInstance(byte[] id, String host, int port) { return new NodeSession(id, host, port); } /** *

判断节点是否可以使用

* * @return 是否可以使用 */ public boolean useable() { return this.status != Status.VERIFY; } /** *

标记验证状态

* * @return 标记结果 */ public boolean markVerify() { if(this.status == Status.UNUSE) { this.status = Status.VERIFY; } return true; } /** *

获取节点ID

* * @return 节点ID */ public byte[] getId() { return id; } /** *

获取节点地址

* * @return 节点地址 */ public String getHost() { return host; } /** *

获取节点端口

* * @return 节点端口 */ public int getPort() { return port; } /** *

获取节点状态

* * @return 节点状态 */ public Status getStatus() { return status; } /** *

设置节点状态

* * @param status 节点状态 */ public void setStatus(Status status) { this.status = status; } @Override public int compareTo(NodeSession target) { return Arrays.compareUnsigned(this.id, target.id); } @Override public int hashCode() { return Arrays.hashCode(this.id); } @Override public boolean equals(Object object) { if(this == object) { return true; } if(object instanceof NodeSession session) { return Arrays.equals(this.id, session.id); } return false; } @Override public String toString() { return BeanUtils.toString(this, this.id, this.host, this.port); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy