connectivity/com.nokia.tcf/native/TCFNative/TCFClient/jdk1.5.0_10/include/jdwpTransport.h
changeset 60 9d2210c8eed2
equal deleted inserted replaced
59:c892c53c664e 60:9d2210c8eed2
       
     1 /*
       
     2  * @(#)jdwpTransport.h	1.7 03/12/19
       
     3  *
       
     4  * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
       
     5  * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
       
     6  */
       
     7 
       
     8 /*
       
     9  * Java Debug Wire Protocol Transport Service Provider Interface.
       
    10  */
       
    11 
       
    12 #ifndef JDWPTRANSPORT_H
       
    13 #define JDWPTRANSPORT_H
       
    14 
       
    15 #include "jni.h"
       
    16 
       
    17 enum {
       
    18     JDWPTRANSPORT_VERSION_1_0 = 0x00010000
       
    19 };
       
    20 
       
    21 #ifdef __cplusplus
       
    22 extern "C" {
       
    23 #endif
       
    24 
       
    25 struct jdwpTransportNativeInterface_;
       
    26 
       
    27 struct _jdwpTransportEnv;
       
    28 
       
    29 #ifdef __cplusplus
       
    30 typedef _jdwpTransportEnv jdwpTransportEnv;
       
    31 #else
       
    32 typedef const struct jdwpTransportNativeInterface_ *jdwpTransportEnv;
       
    33 #endif /* __cplusplus */
       
    34 
       
    35 /*
       
    36  * Errors. Universal errors with JVMTI/JVMDI equivalents keep the
       
    37  * values the same.
       
    38  */
       
    39 typedef enum {
       
    40     JDWPTRANSPORT_ERROR_NONE = 0,
       
    41     JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENT = 103,
       
    42     JDWPTRANSPORT_ERROR_OUT_OF_MEMORY = 110,
       
    43     JDWPTRANSPORT_ERROR_INTERNAL = 113,
       
    44     JDWPTRANSPORT_ERROR_ILLEGAL_STATE = 201,
       
    45     JDWPTRANSPORT_ERROR_IO_ERROR = 202,
       
    46     JDWPTRANSPORT_ERROR_TIMEOUT = 203,
       
    47     JDWPTRANSPORT_ERROR_MSG_NOT_AVAILABLE = 204
       
    48 } jdwpTransportError;
       
    49     
       
    50 
       
    51 /*
       
    52  * Structure to define capabilities
       
    53  */
       
    54 typedef struct {
       
    55     unsigned int can_timeout_attach     :1;
       
    56     unsigned int can_timeout_accept     :1;
       
    57     unsigned int can_timeout_handshake  :1;
       
    58     unsigned int reserved3              :1;
       
    59     unsigned int reserved4              :1;
       
    60     unsigned int reserved5              :1;
       
    61     unsigned int reserved6              :1;
       
    62     unsigned int reserved7              :1;
       
    63     unsigned int reserved8              :1;
       
    64     unsigned int reserved9              :1;
       
    65     unsigned int reserved10             :1;
       
    66     unsigned int reserved11             :1;
       
    67     unsigned int reserved12             :1;
       
    68     unsigned int reserved13             :1;
       
    69     unsigned int reserved14		:1;
       
    70     unsigned int reserved15		:1;
       
    71 } JDWPTransportCapabilities;
       
    72 
       
    73 
       
    74 /*
       
    75  * Structures to define packet layout.
       
    76  * 
       
    77  * See: http://java.sun.com/j2se/1.5/docs/guide/jpda/jdwp-spec.html
       
    78  */
       
    79 
       
    80 enum {
       
    81     JDWPTRANSPORT_FLAGS_NONE	 = 0x0,
       
    82     JDWPTRANSPORT_FLAGS_REPLY	 = 0x80
       
    83 };
       
    84 
       
    85 typedef struct {
       
    86     jint len; 
       
    87     jint id;
       
    88     jbyte flags;
       
    89     jbyte cmdSet;
       
    90     jbyte cmd;
       
    91     jbyte *data;
       
    92 } jdwpCmdPacket;
       
    93 
       
    94 typedef struct {
       
    95     jint len;
       
    96     jint id;
       
    97     jbyte flags;
       
    98     jshort errorCode;
       
    99     jbyte *data;
       
   100 } jdwpReplyPacket;
       
   101 
       
   102 typedef struct {
       
   103     union {
       
   104         jdwpCmdPacket cmd;
       
   105         jdwpReplyPacket reply;
       
   106     } type;
       
   107 } jdwpPacket;
       
   108 
       
   109 /*
       
   110  * JDWP functions called by the transport.
       
   111  */
       
   112 typedef struct jdwpTransportCallback {
       
   113     void *(*alloc)(jint numBytes);   /* Call this for all allocations */
       
   114     void (*free)(void *buffer);      /* Call this for all deallocations */
       
   115 } jdwpTransportCallback;
       
   116 
       
   117 typedef jint (JNICALL *jdwpTransport_OnLoad_t)(JavaVM *jvm,
       
   118 					       jdwpTransportCallback *callback,
       
   119 					       jint version,
       
   120                                       	       jdwpTransportEnv** env);
       
   121 
       
   122 
       
   123 
       
   124 /* Function Interface */
       
   125 
       
   126 struct jdwpTransportNativeInterface_ {
       
   127     /*  1 :  RESERVED */
       
   128     void *reserved1;
       
   129 
       
   130     /*	2 : Get Capabilities */
       
   131     jdwpTransportError (JNICALL *GetCapabilities)(jdwpTransportEnv* env,
       
   132 	 JDWPTransportCapabilities *capabilities_ptr);
       
   133 
       
   134     /*  3 : Attach */
       
   135     jdwpTransportError (JNICALL *Attach)(jdwpTransportEnv* env,
       
   136 	const char* address,
       
   137 	jlong attach_timeout,
       
   138 	jlong handshake_timeout);
       
   139 
       
   140     /*  4: StartListening */
       
   141     jdwpTransportError (JNICALL *StartListening)(jdwpTransportEnv* env,
       
   142 	const char* address, 
       
   143 	char** actual_address);
       
   144 
       
   145     /*  5: StopListening */
       
   146     jdwpTransportError (JNICALL *StopListening)(jdwpTransportEnv* env);
       
   147 
       
   148     /*  6: Accept */
       
   149     jdwpTransportError (JNICALL *Accept)(jdwpTransportEnv* env,
       
   150 	jlong accept_timeout, 
       
   151 	jlong handshake_timeout);
       
   152 
       
   153     /*  7: IsOpen */
       
   154     jboolean (JNICALL *IsOpen)(jdwpTransportEnv* env);
       
   155 
       
   156     /*  8: Close */
       
   157     jdwpTransportError (JNICALL *Close)(jdwpTransportEnv* env);
       
   158 
       
   159     /*  9: ReadPacket */
       
   160     jdwpTransportError (JNICALL *ReadPacket)(jdwpTransportEnv* env,
       
   161 	jdwpPacket *pkt);
       
   162 
       
   163     /*  10: Write Packet */
       
   164     jdwpTransportError (JNICALL *WritePacket)(jdwpTransportEnv* env,
       
   165 	const jdwpPacket* pkt);
       
   166 
       
   167     /*  11:  GetLastError */
       
   168     jdwpTransportError (JNICALL *GetLastError)(jdwpTransportEnv* env,
       
   169 	char** error);
       
   170 
       
   171 };
       
   172 
       
   173 
       
   174 /*
       
   175  * Use inlined functions so that C++ code can use syntax such as
       
   176  *	env->Attach("mymachine:5000", 10*1000, 0);
       
   177  *
       
   178  * rather than using C's :-
       
   179  *
       
   180  *	(*env)->Attach(env, "mymachine:5000", 10*1000, 0);
       
   181  */
       
   182 struct _jdwpTransportEnv {
       
   183     const struct jdwpTransportNativeInterface_ *functions;
       
   184 #ifdef __cplusplus
       
   185 
       
   186     jdwpTransportError GetCapabilities(JDWPTransportCapabilities *capabilities_ptr) {
       
   187 	return functions->GetCapabilities(this, capabilities_ptr);
       
   188     }
       
   189 
       
   190     jdwpTransportError Attach(const char* address, jlong attach_timeout,
       
   191         	jlong handshake_timeout) {
       
   192 	return functions->Attach(this, address, attach_timeout, handshake_timeout);
       
   193     }
       
   194 
       
   195     jdwpTransportError StartListening(const char* address,
       
   196         	char** actual_address) {
       
   197 	return functions->StartListening(this, address, actual_address);
       
   198     }
       
   199 
       
   200     jdwpTransportError StopListening(void) {
       
   201 	return functions->StopListening(this);
       
   202     }
       
   203 
       
   204     jdwpTransportError Accept(jlong accept_timeout, jlong handshake_timeout) {
       
   205 	return functions->Accept(this, accept_timeout, handshake_timeout);
       
   206     }
       
   207 
       
   208     jboolean IsOpen(void) {
       
   209         return functions->IsOpen(this);
       
   210     }
       
   211 
       
   212     jdwpTransportError Close(void) {
       
   213         return functions->Close(this);
       
   214     }
       
   215 
       
   216     jdwpTransportError ReadPacket(jdwpPacket *pkt) {
       
   217 	return functions->ReadPacket(this, pkt);
       
   218     }
       
   219 
       
   220     jdwpTransportError WritePacket(const jdwpPacket* pkt) {
       
   221 	return functions->WritePacket(this, pkt);
       
   222     }
       
   223 
       
   224     jdwpTransportError GetLastError(char** error) {
       
   225 	return functions->GetLastError(this, error);
       
   226     }
       
   227 
       
   228 
       
   229 #endif /* __cplusplus */
       
   230 };
       
   231 
       
   232 #ifdef __cplusplus
       
   233 } /* extern "C" */
       
   234 #endif /* __cplusplus */
       
   235 
       
   236 #endif /* JDWPTRANSPORT_H */
       
   237