Skip to content

Describe JDWP messages. #56

@michalgr

Description

@michalgr

Implement a set of python modules containing objects describing layout of JDWP messages.

An example of such description could look like this:

Version = Command(
    name="version",
    id=1,
    out=None,
    reply=Struct([
        Field("description", types.String),
        Field("jdwp major", types.Int),
        Field("jdwp minor", types.Int),
        Field("vm version", types.String),
        Field("vm name", types.String),
    ]),
)

ClassesBySignature = Command(
    name="classes by signature",
    id=2,
    out=Struct([
        Field("signature", types.String),
    ]),
    reply=Struct([
      ...
    ]),
)

...

VirtualMachine = CommandSet(
    name="VirtualMachine",
    id=1,
    commands=[
      Version,
      ClassesBySignature,
    ],
)

The schema should allow us to express common data types (see table at the bottom of this page), compound structures, arrays (see ClassesBySignature command) and tagged unions (see Composite Command). Schema and each command set should be defined in a separate module. Such JDWP description should support pattern matching as a major tool to analyze shape of structs.

Having such description will allow us to write codegen tools generating JDWP data structures and parsers/serializers for different programming languages.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions