/* This code is part of Freenet. It is distributed under the GNU General * Public License, version 2 (or at your option any later version). See * http://www.gnu.org/ for further details of the GPL. */ package freenet.node; class MessageFragment { final boolean shortMessage; final boolean isFragmented; final boolean firstFragment; final int messageID; final int fragmentLength; final int messageLength; final int fragmentOffset; final byte[] fragmentData; final MessageWrapper wrapper; public MessageFragment(boolean shortMessage, boolean isFragmented, boolean firstFragment, int messageID, int fragmentLength, int messageLength, int fragmentOffset, byte[] fragmentData, MessageWrapper wrapper) { this.shortMessage = shortMessage; this.isFragmented = isFragmented; this.firstFragment = firstFragment; this.messageID = messageID; this.fragmentLength = fragmentLength; this.messageLength = messageLength; this.fragmentOffset = fragmentOffset; this.fragmentData = fragmentData; this.wrapper = wrapper; } public int length() { return 2 //Message id + flags + (shortMessage ? 1 : 2) //Fragment length + (isFragmented ? (shortMessage ? 1 : 2) : 0) //Fragment offset or message length + fragmentData.length; } @Override public String toString() { return "Fragment from message " + messageID + ": offset " + fragmentOffset + ", data length " + fragmentData.length; } }