Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes15kdownloads
jdwpTransport.h277 linesDownload Raw Back to include
1/*2 * Copyright (c) 2003, 2022, Oracle and/or its affiliates. All rights reserved.3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.4 *5 * This code is free software; you can redistribute it and/or modify it6 * under the terms of the GNU General Public License version 2 only, as7 * published by the Free Software Foundation.  Oracle designates this8 * particular file as subject to the "Classpath" exception as provided9 * by Oracle in the LICENSE file that accompanied this code.10 *11 * This code is distributed in the hope that it will be useful, but WITHOUT12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or13 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License14 * version 2 for more details (a copy is included in the LICENSE file that15 * accompanied this code).16 *17 * You should have received a copy of the GNU General Public License version18 * 2 along with this work; if not, write to the Free Software Foundation,19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.20 *21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA22 * or visit www.oracle.com if you need additional information or have any23 * questions.24 */25 26/*27 * Java Debug Wire Protocol Transport Service Provider Interface.28 */29 30#ifndef JDWPTRANSPORT_H31#define JDWPTRANSPORT_H32 33#include "jni.h"34 35enum {36    JDWPTRANSPORT_VERSION_1_0 = 0x00010000,37    JDWPTRANSPORT_VERSION_1_1 = 0x0001000138};39 40#ifdef __cplusplus41extern "C" {42#endif43 44struct jdwpTransportNativeInterface_;45 46struct _jdwpTransportEnv;47 48#ifdef __cplusplus49typedef _jdwpTransportEnv jdwpTransportEnv;50#else51typedef const struct jdwpTransportNativeInterface_ *jdwpTransportEnv;52#endif /* __cplusplus */53 54/*55 * Errors. Universal errors with JVMTI/JVMDI equivalents keep the56 * values the same.57 */58typedef enum {59    JDWPTRANSPORT_ERROR_NONE = 0,60    JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENT = 103,61    JDWPTRANSPORT_ERROR_OUT_OF_MEMORY = 110,62    JDWPTRANSPORT_ERROR_INTERNAL = 113,63    JDWPTRANSPORT_ERROR_ILLEGAL_STATE = 201,64    JDWPTRANSPORT_ERROR_IO_ERROR = 202,65    JDWPTRANSPORT_ERROR_TIMEOUT = 203,66    JDWPTRANSPORT_ERROR_MSG_NOT_AVAILABLE = 20467} jdwpTransportError;68 69 70/*71 * Structure to define capabilities72 */73typedef struct {74    unsigned int can_timeout_attach     :1;75    unsigned int can_timeout_accept     :1;76    unsigned int can_timeout_handshake  :1;77    unsigned int reserved3              :1;78    unsigned int reserved4              :1;79    unsigned int reserved5              :1;80    unsigned int reserved6              :1;81    unsigned int reserved7              :1;82    unsigned int reserved8              :1;83    unsigned int reserved9              :1;84    unsigned int reserved10             :1;85    unsigned int reserved11             :1;86    unsigned int reserved12             :1;87    unsigned int reserved13             :1;88    unsigned int reserved14             :1;89    unsigned int reserved15             :1;90} JDWPTransportCapabilities;91 92 93/*94 * Structures to define packet layout.95 *96 * See: http://java.sun.com/j2se/1.5/docs/guide/jpda/jdwp-spec.html97 */98 99#define JDWP_HEADER_SIZE 11100 101enum {102    /*103     * If additional flags are added that apply to jdwpCmdPacket,104     * then debugLoop.c: reader() will need to be updated to105     * accept more than JDWPTRANSPORT_FLAGS_NONE.106     */107    JDWPTRANSPORT_FLAGS_NONE     = 0x0,108    JDWPTRANSPORT_FLAGS_REPLY    = 0x80109};110 111typedef struct {112    jint len;113    jint id;114    jbyte flags;115    jbyte cmdSet;116    jbyte cmd;117    jbyte *data;118} jdwpCmdPacket;119 120typedef struct {121    jint len;122    jint id;123    jbyte flags;124    jshort errorCode;125    jbyte *data;126} jdwpReplyPacket;127 128typedef struct {129    union {130        jdwpCmdPacket cmd;131        jdwpReplyPacket reply;132    } type;133} jdwpPacket;134 135/*136 * JDWP functions called by the transport.137 */138typedef struct jdwpTransportCallback {139    void *(*alloc)(jint numBytes);   /* Call this for all allocations */140    void (*free)(void *buffer);      /* Call this for all deallocations */141} jdwpTransportCallback;142 143typedef jint (JNICALL *jdwpTransport_OnLoad_t)(JavaVM *jvm,144                                               jdwpTransportCallback *callback,145                                               jint version,146                                               jdwpTransportEnv** env);147 148/*149 * JDWP transport configuration from the agent.150 */151typedef struct jdwpTransportConfiguration {152    /* Field added in JDWPTRANSPORT_VERSION_1_1: */153    const char* allowed_peers;       /* Peers allowed for connection */154} jdwpTransportConfiguration;155 156 157/* Function Interface */158 159struct jdwpTransportNativeInterface_ {160    /*  1 :  RESERVED */161    void *reserved1;162 163    /*  2 : Get Capabilities */164    jdwpTransportError (JNICALL *GetCapabilities)(jdwpTransportEnv* env,165         JDWPTransportCapabilities *capabilities_ptr);166 167    /*  3 : Attach */168    jdwpTransportError (JNICALL *Attach)(jdwpTransportEnv* env,169        const char* address,170        jlong attach_timeout,171        jlong handshake_timeout);172 173    /*  4: StartListening */174    jdwpTransportError (JNICALL *StartListening)(jdwpTransportEnv* env,175        const char* address,176        char** actual_address);177 178    /*  5: StopListening */179    jdwpTransportError (JNICALL *StopListening)(jdwpTransportEnv* env);180 181    /*  6: Accept */182    jdwpTransportError (JNICALL *Accept)(jdwpTransportEnv* env,183        jlong accept_timeout,184        jlong handshake_timeout);185 186    /*  7: IsOpen */187    jboolean (JNICALL *IsOpen)(jdwpTransportEnv* env);188 189    /*  8: Close */190    jdwpTransportError (JNICALL *Close)(jdwpTransportEnv* env);191 192    /*  9: ReadPacket */193    jdwpTransportError (JNICALL *ReadPacket)(jdwpTransportEnv* env,194        jdwpPacket *pkt);195 196    /*  10: Write Packet */197    jdwpTransportError (JNICALL *WritePacket)(jdwpTransportEnv* env,198        const jdwpPacket* pkt);199 200    /*  11:  GetLastError */201    jdwpTransportError (JNICALL *GetLastError)(jdwpTransportEnv* env,202        char** error);203 204    /*  12: SetTransportConfiguration added in JDWPTRANSPORT_VERSION_1_1 */205    jdwpTransportError (JNICALL *SetTransportConfiguration)(jdwpTransportEnv* env,206        jdwpTransportConfiguration *config);207};208 209 210/*211 * Use inlined functions so that C++ code can use syntax such as212 *      env->Attach("mymachine:5000", 10*1000, 0);213 *214 * rather than using C's :-215 *216 *      (*env)->Attach(env, "mymachine:5000", 10*1000, 0);217 */218struct _jdwpTransportEnv {219    const struct jdwpTransportNativeInterface_ *functions;220#ifdef __cplusplus221 222    jdwpTransportError GetCapabilities(JDWPTransportCapabilities *capabilities_ptr) {223        return functions->GetCapabilities(this, capabilities_ptr);224    }225 226    jdwpTransportError Attach(const char* address, jlong attach_timeout,227                jlong handshake_timeout) {228        return functions->Attach(this, address, attach_timeout, handshake_timeout);229    }230 231    jdwpTransportError StartListening(const char* address,232                char** actual_address) {233        return functions->StartListening(this, address, actual_address);234    }235 236    jdwpTransportError StopListening(void) {237        return functions->StopListening(this);238    }239 240    jdwpTransportError Accept(jlong accept_timeout, jlong handshake_timeout) {241        return functions->Accept(this, accept_timeout, handshake_timeout);242    }243 244    jboolean IsOpen(void) {245        return functions->IsOpen(this);246    }247 248    jdwpTransportError Close(void) {249        return functions->Close(this);250    }251 252    jdwpTransportError ReadPacket(jdwpPacket *pkt) {253        return functions->ReadPacket(this, pkt);254    }255 256    jdwpTransportError WritePacket(const jdwpPacket* pkt) {257        return functions->WritePacket(this, pkt);258    }259 260    jdwpTransportError GetLastError(char** error) {261        return functions->GetLastError(this, error);262    }263 264    /*  SetTransportConfiguration added in JDWPTRANSPORT_VERSION_1_1 */265    jdwpTransportError SetTransportConfiguration(jdwpTransportConfiguration *config) {266        return functions->SetTransportConfiguration(this, config);267    }268 269#endif /* __cplusplus */270};271 272#ifdef __cplusplus273} /* extern "C" */274#endif /* __cplusplus */275 276#endif /* JDWPTRANSPORT_H */277 
codekingpro/portable-devtools · Team Ai