亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? message.java

?? pastry 協議在peersim下的仿真環境。測試無誤。在eclipse下打開源文件夾為工程即可使用和做仿真實驗。
?? JAVA
字號:
package peersim.pastry;

import java.math.*;

/**
 *
 * Message class provide all functionalities to magage the various messages, principally LOOKUP
 * messages (messages from application level sender destinated to another application level).<br>
 *
 * Types Of messages:<br>
 * (application messages)<BR>
 * - MSG_LOOKUP: indicates that the body Object containes information to application level of the
 * recipient<BR>
 * <br>
 * (service internal protocol messages)<br>
 * - MSG_JOINREQUEST: message containing a join request of a node, the message is passed between
 * many pastry nodes accorting to the protocol<br>
 * - MSG_JOINREPLY: according to protocol, the body transport information related to a join reply message <br>
 * - MSG_LSPROBEREQUEST:according to protocol, the body transport information related to a probe request message  <br>
 * - MSG_LSPROBEREPLY: not used in the current implementation<br>
 * - MSG_SERVICEPOLL: internal message used to provide cyclic cleaning service of dead nodes<br>
 *
 * The body for message types MSG_JOINREQUEST and MSG_JOINREPLY if defined by the class
 * Message.BodyJoinRequestReply<br>
 * <p>Title: MSPASTRY</p>
 *
 * <p>Description: MsPastry implementation for PeerSim</p>
 *
 * <p>Copyright: Copyright (c) 2007</p>
 *
 * <p>Company: The Pastry Group</p>
 *
 * @author Elisa Bisoffi, Manuel Cortella
 * @version 1.0
 */
//______________________________________________________________________________________
public class Message {

    //______________________________________________________________________________________
    public static class BodyJoinRequestReply {
        //Routing table of the joiner, that is built step-by step, from the other nodes
        RoutingTable rt;

        /**
         * Use joiner only in case of a JoinRequest
         */
        java.math.BigInteger joiner;

        /**
         * Use leafset only in case of a JoinReply
         */
        LeafSet ls;

        /**
         * Creates an empty Body For a message of type MSG_JOINREQUEST or type MSG_JOINREPLY
         */
        public BodyJoinRequestReply() {
            rt = null;
            joiner = null;
            ls = null;
        }
    }

    //______________________________________________________________________________________

    /**
     * internal generator for unique ISs
     */
    private static long ID_GENERATOR = 0;

    /**
     * Tha trace vector has this limit size
     */
    public static final int MAX_TRACK = 20;

    /**
     * Message Type
     */
    public static final int MSG_LOOKUP         = 0;

    /**
     * Message Type
     */
    public static final int MSG_JOINREQUEST    = 1;

    /**
     * Message Type
     */
    public static final int MSG_JOINREPLY      = 2;

    /**
     * Message Type
     */
    public static final int MSG_LSPROBEREQUEST = 3;

    /**
     * Message Type
     */
    public static final int MSG_LSPROBEREPLY   = 4;

    /**
     * Internal Message: polling cleaner
     */
    public static final int MSG_SERVICEPOLL   = 5;

    /**
     * Identify the type of this message
     */
    public int messageType = MSG_LOOKUP;



    //______________________________________________________________________________________________
    /**
     * This Object contains the body of the message, no matter what it contains
     */
    public Object body = null;

    /**
     * ID of the message. this is automatically generated univocally, and should not change
     */
    public long id;

    /**
     * Recipient address of the message
     */
    public BigInteger dest;

    /**
     * Source address of the message: has to be filled ad application level
     */
    public BigInteger src;


    /**
     * Available to conunt the number of hops the message did.
     */
    protected int nrHops = 0;

    /**
     * current size of the tracks vector
     */
    protected int trackSize = 0;

    /**
     * Available to contains the path of the message
     */
    protected BigInteger[] tracks = null;

    /**
     * Available to contains the timestamp of the (creation date of the) message
     */
    protected long timestamp = 0;

    //______________________________________________________________________________________________
    /**
     * Creates a lookup message with the specified body
     *
     * @param body Object body to assign (shallow copy)
     */
    public Message(Object body) {
        this(MSG_LOOKUP,body);
    }

    //______________________________________________________________________________________________
    /**
     * Creates an empty message by using default values (message type = MSG_LOOKUP
     * and <code>new String("")</code> value for the body of the message)
     */
    public Message() {
        this(MSG_LOOKUP,"");
    }

    //______________________________________________________________________________________________
    /**
     * Creates an empty message by using default values (message messageType = MSG_LOOKUP and null
     * value for the body of the message)
     *
     * @param messageType int type of the message
     * @param body Object body to assign (shallow copy)
     */
    public Message(int messageType, Object body) {
        this.id = (ID_GENERATOR++);
        this.tracks = new BigInteger[MAX_TRACK];
        this.messageType = messageType;
        this.body = body;
    }


    //______________________________________________________________________________________________
    /**
     * Encapsulates the creation of a join request
     * @param body Object
     * @return Message
     */
    public static final Message makeJoinRequest(Object body) {
        return new Message(MSG_JOINREQUEST, body);
    }

    //______________________________________________________________________________________________
    /**
     * Encapsulates the creation of a join request
     * @param body Object
     * @return Message
     */
    public static final Message makeLookUp(Object body) {
        return new Message(MSG_LOOKUP, body);
    }

    //______________________________________________________________________________________________
    /**
     * returns a ";" separated list of the tracks vector
     * @param header boolean if true, even an initial information header is printed
     * @return String
     */
    public String traceToString(boolean header) {
      if (header) {
          String s = "";
          for (int i = 0; i<trackSize;i++) {
              s = s + RoutingTable.truncateNodeId(tracks[i]) + ";";
          }
          return s + " (" + nrHops+ " hops)";
      }
      return traceToString(true);
  }

  //______________________________________________________________________________________________
  /**
   * returns a ";" separated list of the tracks vector
   * @return String
   */
  public String traceToString() {
       if (trackSize == 0)
            return "Track of message [" + id + "]: <EMPTY>";
       String s = "";
       for (int i = 0; i<trackSize;i++) {
           s = s + RoutingTable.truncateNodeId(tracks[i]) + ";";
       }
       return "Track of message [" + id + "]: " + s + " (" + nrHops+ " hops)";
   }


   //______________________________________________________________________________________________
   public String toString() {
      String s = "[ID="+id+"][DEST=" + dest + "]";
      return s + "[Type=" + messageTypetoString() + "] BODY=(...)";
   }
   //______________________________________________________________________________________________
   public Message copy() {
       Message dolly = new Message();
       dolly.messageType = this.messageType;
       dolly.dest = this.dest;
       dolly.body = this.body; // deep cloning?
       // track, hops NOT copied

       return dolly;

   }

   //______________________________________________________________________________________________
   public String messageTypetoString() {
       switch (messageType) {
       case MSG_LOOKUP: return "MSG_LOOKUP";
       case MSG_JOINREQUEST: return "MSG_JOINREQUEST";
       case MSG_JOINREPLY: return "MSG_JOINREPLY";
       case MSG_LSPROBEREQUEST: return "MSG_LSPROBEREQUEST";
       case MSG_LSPROBEREPLY: return "MSG_LSPROBEREPLY";
       case MSG_SERVICEPOLL: return "MSG_SERVICEPOLL";
       default : return ""+messageType;
       }
   }
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合色综合88| 91美女蜜桃在线| 日韩一区二区中文字幕| 全部av―极品视觉盛宴亚洲| 在线91免费看| 久久99精品国产91久久来源| 国产视频一区在线观看| 99在线热播精品免费| 洋洋av久久久久久久一区| 欧美乱妇20p| 久久99国产精品尤物| 中文在线免费一区三区高中清不卡| 成人在线视频首页| 亚洲伊人色欲综合网| 日韩女优毛片在线| www.亚洲人| 天堂精品中文字幕在线| 日韩美女视频在线| 不卡av在线网| 日韩国产一二三区| 欧美高清在线视频| 欧美探花视频资源| 国产在线麻豆精品观看| 亚洲免费观看高清在线观看| 欧美精品在线一区二区| 国产高清亚洲一区| 亚洲成人午夜电影| 欧美激情在线一区二区三区| 欧美性受xxxx| 国产成+人+日韩+欧美+亚洲| 亚洲一区影音先锋| 国产肉丝袜一区二区| 欧美性色欧美a在线播放| 国产精品一区二区你懂的| 亚洲综合在线免费观看| 久久亚洲私人国产精品va媚药| 色综合久久综合中文综合网| 国内外精品视频| 亚洲mv在线观看| 国产精品美女久久久久aⅴ | 久久综合九色综合97_久久久| av电影在线观看完整版一区二区| 日韩成人dvd| 一片黄亚洲嫩模| 国产欧美一区二区三区网站| 69久久99精品久久久久婷婷 | 欧美日韩一区二区在线观看视频| 极品少妇xxxx精品少妇偷拍| 亚洲午夜羞羞片| 1区2区3区国产精品| 欧美精品一区二| 欧美电影在线免费观看| 日本乱人伦aⅴ精品| 成人久久久精品乱码一区二区三区| 日韩高清一区二区| 亚洲午夜三级在线| 亚洲视频网在线直播| 国产日韩综合av| 亚洲精品一区二区三区精华液 | av一区二区三区在线| 国产精品一区二区在线观看不卡| 麻豆精品在线视频| 日本中文一区二区三区| 亚洲国产成人av| 一级做a爱片久久| 亚洲欧美另类图片小说| 国产精品美女久久久久久久久| 精品美女在线观看| 色菇凉天天综合网| 国产精品一品视频| 久久久久久久久伊人| 欧美成人官网二区| 日韩美女一区二区三区四区| 在线不卡a资源高清| 欧美三级视频在线观看| 欧美视频精品在线| 在线视频亚洲一区| 精品视频一区二区不卡| 欧美色国产精品| 欧美日韩精品一区二区| 欧美视频中文字幕| 制服丝袜亚洲网站| 欧美本精品男人aⅴ天堂| www精品美女久久久tv| www激情久久| 国产精品久久久久久妇女6080 | 在线成人av网站| 欧美日本乱大交xxxxx| 6080亚洲精品一区二区| 884aa四虎影成人精品一区| 91精品国产91久久久久久最新毛片| 欧美另类videos死尸| 欧美一区二区三区视频免费| 精品国产伦一区二区三区观看体验| 日韩欧美精品在线视频| 精品少妇一区二区三区免费观看 | 午夜精品影院在线观看| 蜜桃视频一区二区三区| 国产a区久久久| 色婷婷亚洲一区二区三区| 欧美久久久影院| 精品美女被调教视频大全网站| 国产亚洲欧洲997久久综合| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 免费在线观看不卡| 国产成人精品亚洲日本在线桃色| av在线播放不卡| 欧美另类z0zxhd电影| 26uuu亚洲| 亚洲情趣在线观看| 美日韩一区二区三区| 成人午夜私人影院| 欧美日韩精品一区视频| 久久亚洲春色中文字幕久久久| 一区在线播放视频| 偷拍日韩校园综合在线| 国产成a人无v码亚洲福利| 欧美日韩一区二区三区在线| 欧美成人激情免费网| 亚洲免费成人av| 极品美女销魂一区二区三区免费| 91理论电影在线观看| 精品久久久久久久久久久久包黑料 | 久久久国产精品麻豆| 亚洲风情在线资源站| 国产黑丝在线一区二区三区| 欧美午夜理伦三级在线观看| 久久久99精品免费观看不卡| 亚洲综合一区二区三区| 国产永久精品大片wwwapp| 欧美在线视频日韩| 国产色综合久久| 奇米888四色在线精品| 97久久精品人人澡人人爽| 26uuuu精品一区二区| 亚洲国产成人av| 99国产精品视频免费观看| 精品国产伦一区二区三区免费| 亚洲国产精品一区二区久久 | 亚洲视频在线观看一区| 国产乱子伦视频一区二区三区| 67194成人在线观看| 一级精品视频在线观看宜春院| 国产aⅴ综合色| 欧美mv日韩mv| 另类调教123区| 日韩一区二区三区四区| 亚洲成人三级小说| 色婷婷国产精品久久包臀| 国产精品久久久久久久久动漫| 国产精品自产自拍| 日韩一区二区电影在线| 亚洲国产成人精品视频| 色狠狠一区二区三区香蕉| 国产精品你懂的| 成人听书哪个软件好| 久久久天堂av| 国产一区二区美女| 欧美大片日本大片免费观看| 日韩中文字幕一区二区三区| 在线观看国产一区二区| 一区二区三区精品在线| 日本精品裸体写真集在线观看| 中文字幕在线不卡视频| 成人免费视频视频| 亚洲欧洲99久久| 91香蕉视频黄| 一区二区三区四区国产精品| 91搞黄在线观看| 亚洲一区在线观看视频| 欧美日韩一区久久| 亚洲国产日韩a在线播放性色| 日韩视频国产视频| 蜜乳av一区二区三区| 久久午夜老司机| 国产成人免费视| 国产精品久久久久久福利一牛影视 | 久久蜜臀精品av| 懂色av中文一区二区三区| 中文字幕欧美一区| 欧美视频一区二区| 日韩精品久久理论片| 亚洲精品在线电影| 成人国产精品视频| 亚洲精品视频观看| 在线电影一区二区三区| 极品销魂美女一区二区三区| 国产蜜臀av在线一区二区三区| www.色综合.com| 亚洲一区二区不卡免费| 欧美日本乱大交xxxxx| 国产自产v一区二区三区c| 国产精品午夜免费| 欧美性色aⅴ视频一区日韩精品| 日韩1区2区3区| 国产精品美女视频| 欧美日本乱大交xxxxx| 国产一区二区视频在线播放| 中文字幕中文字幕在线一区 | 色综合久久久久久久久久久|