/* * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ package com.sun.max.jdwp.data; /** * This class represents a JDWP reply packet. It is always associated with the incoming packet for which this packet is a reply. */ public final class ReplyPacket<IncomingData_Type extends IncomingData, OutgoingData_Type extends OutgoingData> { private IncomingPacket<IncomingData_Type, OutgoingData_Type> incomingPacket; private short errorCode; private OutgoingData_Type data; public ReplyPacket(IncomingPacket<IncomingData_Type, OutgoingData_Type> incomingPacket, short errorCode) { this.incomingPacket = incomingPacket; this.errorCode = errorCode; } public ReplyPacket(IncomingPacket<IncomingData_Type, OutgoingData_Type> incomingPacket, OutgoingData_Type data) { this.incomingPacket = incomingPacket; this.data = data; } /** * Flags of the packet, a reply packet always has the same constant flags. * @return 0x80 according to the JDWP definition of the flags for a reply packet */ public byte getFlags() { return (byte) 0x80; } /** * The outgoing data to be sent in reply or null, if it is an error packet. * @return the outgoing data */ public OutgoingData_Type getData() { return data; } public int getId() { return incomingPacket.getId(); } /** * The error code of the packet, if this is an error reply packet, or zero otherwise. * @return the error code */ public short getErrorCode() { return errorCode; } public IncomingPacket<IncomingData_Type, OutgoingData_Type> getOriginalPacket() { return incomingPacket; } @Override public String toString() { final StringBuilder sb = new StringBuilder(); sb.append("ReplyPacket(" + getId() + ")[flags=" + getFlags() + ", error=" + getErrorCode() + ", data=" + getData() + "]"); return sb.toString(); } }