/// <summary> /// Write the modifier to the writer of a packet. /// In this method the kind byte is written override to write additional data. /// </summary> internal override void WriteTo(JdwpPacket.DataReaderWriter writer) { base.WriteTo(writer); threadId.WriteTo(writer); writer.SetInt((int)stepSize); writer.SetInt((int)stepDepth); }
/// <summary> /// Write this location into the given packet writer. /// </summary> public void WriteTo(JdwpPacket.DataReaderWriter writer) { writer.SetByte((byte)GetType(Class)); Class.WriteTo(writer); Method.WriteTo(writer); writer.SetULong(Index); }
/// <summary> /// Write the modifier to the writer of a packet. /// In this method the kind byte is written override to write additional data. /// </summary> internal override void WriteTo(JdwpPacket.DataReaderWriter writer) { base.WriteTo(writer); exceptionClassId.WriteTo(writer); writer.SetBoolean(caught); writer.SetBoolean(uncaught); }
/// <summary> /// Write this ID into the given packet writer. /// </summary> public void WriteTo(JdwpPacket.DataReaderWriter readerWriter) { switch (idSize) { case 4: readerWriter.SetInt((int)id); break; case 8: readerWriter.SetLong(id); break; default: throw new ArgumentException("Unsupported ID size " + idSize); } }
/// <summary> /// Read an value. /// </summary> protected Id(JdwpPacket.DataReaderWriter readerWriter, int idSize) { this.idSize = idSize; switch (idSize) { case 4: id = readerWriter.GetInt(); break; case 8: id = readerWriter.GetLong(); break; default: throw new ArgumentException("Unsupported ID size " + idSize); } }
/// <summary> /// Read an untagged value. /// </summary> private static object ReadUntaggedValue(JdwpPacket.DataReaderWriter readerWriter, Jdwp.Tag tag) { switch (tag) { case Jdwp.Tag.Array: case Jdwp.Tag.Object: case Jdwp.Tag.String: case Jdwp.Tag.Thread: case Jdwp.Tag.ThreadGroup: case Jdwp.Tag.ClassLoader: case Jdwp.Tag.ClassObject: return(new ObjectId(readerWriter)); case Jdwp.Tag.Byte: return(readerWriter.GetByte()); case Jdwp.Tag.Char: return((char)readerWriter.GetInt16()); case Jdwp.Tag.Float: return(readerWriter.GetFloat()); case Jdwp.Tag.Double: return(readerWriter.GetDouble()); case Jdwp.Tag.Int: return(readerWriter.GetInt()); case Jdwp.Tag.Long: return(readerWriter.GetLong()); case Jdwp.Tag.Short: return(readerWriter.GetInt16()); case Jdwp.Tag.Void: return(null); case Jdwp.Tag.Boolean: return(readerWriter.GetBoolean()); default: throw new ArgumentException("Unknown tag " + (int)tag); } }
/// <summary> /// Read an untagged value. /// </summary> private static void WriteValue(JdwpPacket.DataReaderWriter data, Jdwp.Tag tag, object obj) { switch (tag) { //case Jdwp.Tag.Array: //case Jdwp.Tag.Object: //case Jdwp.Tag.String: //case Jdwp.Tag.Thread: //case Jdwp.Tag.ThreadGroup: //case Jdwp.Tag.ClassLoader: //case Jdwp.Tag.ClassObject: // return new ObjectId(readerWriter); case Jdwp.Tag.Byte: data.SetByte((byte)obj); break; case Jdwp.Tag.Short: case Jdwp.Tag.Char: data.SetInt16((int)obj); break; //case Jdwp.Tag.Float: // readerWriter.GetFloat(); //? // break; //case Jdwp.Tag.Double: // return readerWriter.SetDouble(); //? case Jdwp.Tag.Int: data.SetInt((int)obj); break; case Jdwp.Tag.Long: data.SetLong((long)obj); break; case Jdwp.Tag.Boolean: data.SetBoolean((bool)obj); break; default: throw new ArgumentException("unsupported tag " + tag); } }
/// <summary> /// Read a (byte) TypeTag followed by a reference type id. /// </summary> internal static ReferenceTypeId Read(JdwpPacket.DataReaderWriter reader) { var tag = (Jdwp.TypeTag)reader.GetByte(); switch (tag) { case 0: var dummy = new ClassId(reader); return(new ClassId(reader.IdSizeInfo)); case Jdwp.TypeTag.Class: return(new ClassId(reader)); case Jdwp.TypeTag.Interface: return(new InterfaceId(reader)); case Jdwp.TypeTag.Array: return(new ArrayTypeId(reader)); default: throw new ArgumentException("Unknown type tag " + (int)tag); } }
/// <summary> /// Read an value. /// </summary> public FieldId(JdwpPacket.DataReaderWriter readerWriter) : base(readerWriter, readerWriter.IdSizeInfo.FieldIdSize) { }
/// <summary> /// Read an value. /// </summary> public ArrayTypeId(JdwpPacket.DataReaderWriter readerWriter) : base(readerWriter) { }
/// <summary> /// Read an value. /// </summary> public MethodId(JdwpPacket.DataReaderWriter readerWriter) : base(readerWriter, readerWriter.IdSizeInfo.MethodIdSize) { }
/// <summary> /// Read an value. /// </summary> public Location(JdwpPacket.DataReaderWriter readerWriter) { Class = ReferenceTypeId.Read(readerWriter); Method = new MethodId(readerWriter); Index = readerWriter.GetULong(); }
/// <summary> /// Read an value. /// </summary> public InterfaceId(JdwpPacket.DataReaderWriter readerWriter) : base(readerWriter) { }
/// <summary> /// Read an untagged value. /// </summary> public Value(JdwpPacket.DataReaderWriter readerWriter, Jdwp.Tag tag) { Tag = tag; ValueObject = ReadUntaggedValue(readerWriter, tag); }
/// <summary> /// Read an value. /// </summary> public TaggedObjectId(JdwpPacket.DataReaderWriter readerWriter) { Tag = (Jdwp.Tag)readerWriter.GetByte(); Object = new ObjectId(readerWriter); }
/// <summary> /// Write the modifier to the writer of a packet. /// In this method the kind byte is written override to write additional data. /// </summary> internal override void WriteTo(JdwpPacket.DataReaderWriter writer) { base.WriteTo(writer); classId.WriteTo(writer); fieldId.WriteTo(writer); }
/// <summary> /// Read an value. /// </summary> public ThreadId(JdwpPacket.DataReaderWriter readerWriter, int size) : base(readerWriter, size) { }
/// <summary> /// Write the modifier to the writer of a packet. /// In this method the kind byte is written override to write additional data. /// </summary> internal override void WriteTo(JdwpPacket.DataReaderWriter writer) { base.WriteTo(writer); writer.SetInt(count); }
/// <summary> /// Read an value. /// </summary> protected ReferenceTypeId(JdwpPacket.DataReaderWriter readerWriter) : base(readerWriter, readerWriter.IdSizeInfo.ReferenceTypeIdSize) { }
/// <summary> /// Read an value. /// </summary> protected ObjectId(JdwpPacket.DataReaderWriter readerWriter, int size) : base(readerWriter, size) { }
/// <summary> /// Read an value. /// </summary> protected ObjectId(JdwpPacket.DataReaderWriter readerWriter) : base(readerWriter, readerWriter.IdSizeInfo.ObjectIdSize) { }
/// <summary> /// writes slot and value. /// </summary> /// <param name="data"></param> public void Write(JdwpPacket.DataReaderWriter data) { data.SetInt(Slot); WriteValue(data); }
/// <summary> /// Write the modifier to the writer of a packet. /// In this method the kind byte is written override to write additional data. /// </summary> internal override void WriteTo(JdwpPacket.DataReaderWriter writer) { base.WriteTo(writer); instanceId.WriteTo(writer); }
/// <summary> /// Read an value. /// </summary> public ThreadGroupId(JdwpPacket.DataReaderWriter readerWriter) : base(readerWriter) { }
/// <summary> /// Read a tagged value. /// </summary> public Value(JdwpPacket.DataReaderWriter readerWriter) { Tag = (Jdwp.Tag)readerWriter.GetByte(); ValueObject = ReadUntaggedValue(readerWriter, Tag); }
/// <summary> /// Read an value. /// </summary> public FrameId(JdwpPacket.DataReaderWriter readerWriter, IdSizeInfo sizeInfo) : base(readerWriter, sizeInfo.FrameIdSize) { }
/// <summary> /// Write the modifier to the writer of a packet. /// In this method the kind byte is written override to write additional data. /// </summary> internal virtual void WriteTo(JdwpPacket.DataReaderWriter writer) { writer.SetByte((byte)kind); }
/// <summary> /// Read an value. /// </summary> public ClassId(JdwpPacket.DataReaderWriter readerWriter) : base(readerWriter) { }
/// <summary> /// Write this location into the given packet writer. /// </summary> public void WriteTo(JdwpPacket.DataReaderWriter writer) { writer.SetByte((byte)Tag); Object.WriteTo(writer); }
/// <summary> /// writes only the value, without the slot. /// </summary> /// <param name="data"></param> public void WriteValue(JdwpPacket.DataReaderWriter data) { data.SetByte((byte)Tag); WriteValue(data, Tag, Value); }