⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parentnode.java

📁 java B++树 一个很好的算法来实现这些问题 推荐!
💻 JAVA
字号:
package mddb.client;

import java.util.*;
import java.net.*;
import java.awt.Point;
import mddb.packets.MddbPacket;
import mddb.client.components.*;
import mddb.client.components.NeighbourList;
/*------------------------------------------------------------------------------
 用于描述节点,并作为ClientNode的父类,提供一些必需的通用功能
 ------------------------------------------------------------------------------*/
public class ParentNode {
    //预定义常量------------------------------------------------------------------
    public static final String multiAddr = "231.0.0.1"; //多播IP
    public static final int multiPort = 9000; //多播地址端口号
    public final static int HELLO_STATUS = 0; //节点正向自己的邻居广播HELLO信息和获取反馈的RHELLO信息
    public final static int RM_STATUS = 1; //节点正在请求加入选定的组
    public final static int OTHER_STATUS = 2; //节点已经分组完毕

    //特殊标示常量----------------------------------------------------------------
    public static final long NODE_ALL = -1; //代表全体节点
    public static final int ANY_DISTANCE = -2; //表示是广播,所以距离不限
    public static final int ONE_HOP_DISTANCE = -3;//表示一跳的距离

    //节点属性-------------------------------------------------------------------
    long ID; //网络标识,移动主机在网络中的唯一标识
    long masterId; //节点所属组的master的标识
    int range; //节点覆盖范围,即一“跳”(one hop)的最长距离,单位:m
    int validRange; //节点有效覆盖范围
    long timeStamp; //节点的时间戳
    int nodeState; //标识节点状态--有以下三种
    Point position;//节点的地址

    //节点主要成员----------------------------------------------------------------
    GroupAdjacencyList groupAdjacencyList; //组邻接表--只有Master需要维护
    NeighbourList nebrList;                //节点当前邻居节点信息列表--每个节点都要维护
    MemberList    mbrList;                 //成员列表--只有Master需要维护
    //为算法增加的变量
    ArrayList m_RHELLOList;//RHELLO包保存队列
    ArrayList m_DelayQueue;//Delay包保存队列


    //==========================================================================
    public ParentNode( int rangVal, int validRangVal ,Point nodePosition,long id) {
        //设定覆盖范围-----------------
        range = rangVal;
        validRange = validRangVal;
        ID = id;
        position = nodePosition;
        //----------------------------
        nebrList = new NeighbourList();
        //节点刚创建的时候都是Master孤点,所以MemberID中应该包含自己
        mbrList = new MemberList(this.ID,this.position);

        groupAdjacencyList = new GroupAdjacencyList();

        m_RHELLOList = new ArrayList();
        m_DelayQueue = new ArrayList();
    }
    //判断自己是否是master节点----------------------------------------------------
    public boolean isMaster()
    {
        synchronized (this){
            if( ID == masterId )
                return true;
            else return false;
        }
    }

    //判断自己是不是孤点
    public boolean isAcnode(){
        synchronized (this){
            if( isMaster() && mbrList.getSize() <= 1 )
                return true;
            return false;
        }
    }
    //--------------------------------------------------------------------------
    public final long getID() {
        return ID;
    }
    public final Point getPosition() {
        return position;
    }

    public final GroupAdjacencyList getGroupAdjacencyList() {
        return groupAdjacencyList;
    }

    public  final NeighbourList getNeighbourList() {
        return nebrList;
    }

    public final MemberList getMemberList() {
        return mbrList;
    }

    public final long getMasterId() {
        return masterId;
    }

    public final int getRange() {
        return range;
    }

    public final int getValidRange() {
        return validRange;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -