package org.torrent.internal.protocol.message; import java.nio.ByteBuffer; import org.torrent.internal.util.Validator; public class RawMessage implements BittorrentMessage { private final ByteBuffer buffer; private final int id; public RawMessage(ByteBuffer buffer) { Validator.notNull(buffer, "Buffer is null!"); this.buffer = buffer; if (buffer.remaining() > 4) { this.id = buffer.get(4) & 0xFF; } else { id = -1; } } @Override public void accept(BTMessageVisitor visitor) { visitor.visitRawMessage(this); } public ByteBuffer getBuffer() { return buffer.duplicate(); } /** * Returns the message id which was parsed. * * @return -1 or an ID number which might represent an unknown message type */ public int getId() { return id; } @Override public String toString() { return "Unidentified message: id = " + id + ", content-length = " + buffer.remaining(); } }