📄 jdwptransport.h
字号:
/* * @(#)jdwpTransport.h 1.7 03/12/19 * * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. *//* * Java Debug Wire Protocol Transport Service Provider Interface. */#ifndef JDWPTRANSPORT_H#define JDWPTRANSPORT_H#include "jni.h"enum { JDWPTRANSPORT_VERSION_1_0 = 0x00010000};#ifdef __cplusplusextern "C" {#endifstruct jdwpTransportNativeInterface_;struct _jdwpTransportEnv;#ifdef __cplusplustypedef _jdwpTransportEnv jdwpTransportEnv;#elsetypedef const struct jdwpTransportNativeInterface_ *jdwpTransportEnv;#endif /* __cplusplus *//* * Errors. Universal errors with JVMTI/JVMDI equivalents keep the * values the same. */typedef enum { JDWPTRANSPORT_ERROR_NONE = 0, JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENT = 103, JDWPTRANSPORT_ERROR_OUT_OF_MEMORY = 110, JDWPTRANSPORT_ERROR_INTERNAL = 113, JDWPTRANSPORT_ERROR_ILLEGAL_STATE = 201, JDWPTRANSPORT_ERROR_IO_ERROR = 202, JDWPTRANSPORT_ERROR_TIMEOUT = 203, JDWPTRANSPORT_ERROR_MSG_NOT_AVAILABLE = 204} jdwpTransportError; /* * Structure to define capabilities */typedef struct { unsigned int can_timeout_attach :1; unsigned int can_timeout_accept :1; unsigned int can_timeout_handshake :1; unsigned int reserved3 :1; unsigned int reserved4 :1; unsigned int reserved5 :1; unsigned int reserved6 :1; unsigned int reserved7 :1; unsigned int reserved8 :1; unsigned int reserved9 :1; unsigned int reserved10 :1; unsigned int reserved11 :1; unsigned int reserved12 :1; unsigned int reserved13 :1; unsigned int reserved14 :1; unsigned int reserved15 :1;} JDWPTransportCapabilities;/* * Structures to define packet layout. * * See: http://java.sun.com/j2se/1.5/docs/guide/jpda/jdwp-spec.html */enum { JDWPTRANSPORT_FLAGS_NONE = 0x0, JDWPTRANSPORT_FLAGS_REPLY = 0x80};typedef struct { jint len; jint id; jbyte flags; jbyte cmdSet; jbyte cmd; jbyte *data;} jdwpCmdPacket;typedef struct { jint len; jint id; jbyte flags; jshort errorCode; jbyte *data;} jdwpReplyPacket;typedef struct { union { jdwpCmdPacket cmd; jdwpReplyPacket reply; } type;} jdwpPacket;/* * JDWP functions called by the transport. */typedef struct jdwpTransportCallback { void *(*alloc)(jint numBytes); /* Call this for all allocations */ void (*free)(void *buffer); /* Call this for all deallocations */} jdwpTransportCallback;typedef jint (JNICALL *jdwpTransport_OnLoad_t)(JavaVM *jvm, jdwpTransportCallback *callback, jint version, jdwpTransportEnv** env);/* Function Interface */struct jdwpTransportNativeInterface_ { /* 1 : RESERVED */ void *reserved1; /* 2 : Get Capabilities */ jdwpTransportError (JNICALL *GetCapabilities)(jdwpTransportEnv* env, JDWPTransportCapabilities *capabilities_ptr); /* 3 : Attach */ jdwpTransportError (JNICALL *Attach)(jdwpTransportEnv* env, const char* address, jlong attach_timeout, jlong handshake_timeout); /* 4: StartListening */ jdwpTransportError (JNICALL *StartListening)(jdwpTransportEnv* env, const char* address, char** actual_address); /* 5: StopListening */ jdwpTransportError (JNICALL *StopListening)(jdwpTransportEnv* env); /* 6: Accept */ jdwpTransportError (JNICALL *Accept)(jdwpTransportEnv* env, jlong accept_timeout, jlong handshake_timeout); /* 7: IsOpen */ jboolean (JNICALL *IsOpen)(jdwpTransportEnv* env); /* 8: Close */ jdwpTransportError (JNICALL *Close)(jdwpTransportEnv* env); /* 9: ReadPacket */ jdwpTransportError (JNICALL *ReadPacket)(jdwpTransportEnv* env, jdwpPacket *pkt); /* 10: Write Packet */ jdwpTransportError (JNICALL *WritePacket)(jdwpTransportEnv* env, const jdwpPacket* pkt); /* 11: GetLastError */ jdwpTransportError (JNICALL *GetLastError)(jdwpTransportEnv* env, char** error);};/* * Use inlined functions so that C++ code can use syntax such as * env->Attach("mymachine:5000", 10*1000, 0); * * rather than using C's :- * * (*env)->Attach(env, "mymachine:5000", 10*1000, 0); */struct _jdwpTransportEnv { const struct jdwpTransportNativeInterface_ *functions;#ifdef __cplusplus jdwpTransportError GetCapabilities(JDWPTransportCapabilities *capabilities_ptr) { return functions->GetCapabilities(this, capabilities_ptr); } jdwpTransportError Attach(const char* address, jlong attach_timeout, jlong handshake_timeout) { return functions->Attach(this, address, attach_timeout, handshake_timeout); } jdwpTransportError StartListening(const char* address, char** actual_address) { return functions->StartListening(this, address, actual_address); } jdwpTransportError StopListening(void) { return functions->StopListening(this); } jdwpTransportError Accept(jlong accept_timeout, jlong handshake_timeout) { return functions->Accept(this, accept_timeout, handshake_timeout); } jboolean IsOpen(void) { return functions->IsOpen(this); } jdwpTransportError Close(void) { return functions->Close(this); } jdwpTransportError ReadPacket(jdwpPacket *pkt) { return functions->ReadPacket(this, pkt); } jdwpTransportError WritePacket(const jdwpPacket* pkt) { return functions->WritePacket(this, pkt); } jdwpTransportError GetLastError(char** error) { return functions->GetLastError(this, error); }#endif /* __cplusplus */};#ifdef __cplusplus} /* extern "C" */#endif /* __cplusplus */#endif /* JDWPTRANSPORT_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -