Mercurial > repos > rliterman > csp2
comparison CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/include/jdwpTransport.h @ 69:33d812a61356
planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author | jpayne |
---|---|
date | Tue, 18 Mar 2025 17:55:14 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
67:0e9998148a16 | 69:33d812a61356 |
---|---|
1 /* | |
2 * Copyright (c) 2003, 2017, 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 it | |
6 * under the terms of the GNU General Public License version 2 only, as | |
7 * published by the Free Software Foundation. Oracle designates this | |
8 * particular file as subject to the "Classpath" exception as provided | |
9 * 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 WITHOUT | |
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
14 * version 2 for more details (a copy is included in the LICENSE file that | |
15 * accompanied this code). | |
16 * | |
17 * You should have received a copy of the GNU General Public License version | |
18 * 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 USA | |
22 * or visit www.oracle.com if you need additional information or have any | |
23 * questions. | |
24 */ | |
25 | |
26 /* | |
27 * Java Debug Wire Protocol Transport Service Provider Interface. | |
28 */ | |
29 | |
30 #ifndef JDWPTRANSPORT_H | |
31 #define JDWPTRANSPORT_H | |
32 | |
33 #include "jni.h" | |
34 | |
35 enum { | |
36 JDWPTRANSPORT_VERSION_1_0 = 0x00010000, | |
37 JDWPTRANSPORT_VERSION_1_1 = 0x00010001 | |
38 }; | |
39 | |
40 #ifdef __cplusplus | |
41 extern "C" { | |
42 #endif | |
43 | |
44 struct jdwpTransportNativeInterface_; | |
45 | |
46 struct _jdwpTransportEnv; | |
47 | |
48 #ifdef __cplusplus | |
49 typedef _jdwpTransportEnv jdwpTransportEnv; | |
50 #else | |
51 typedef const struct jdwpTransportNativeInterface_ *jdwpTransportEnv; | |
52 #endif /* __cplusplus */ | |
53 | |
54 /* | |
55 * Errors. Universal errors with JVMTI/JVMDI equivalents keep the | |
56 * values the same. | |
57 */ | |
58 typedef 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 = 204 | |
67 } jdwpTransportError; | |
68 | |
69 | |
70 /* | |
71 * Structure to define capabilities | |
72 */ | |
73 typedef 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.html | |
97 */ | |
98 | |
99 #define JDWP_HEADER_SIZE 11 | |
100 | |
101 enum { | |
102 /* | |
103 * If additional flags are added that apply to jdwpCmdPacket, | |
104 * then debugLoop.c: reader() will need to be updated to | |
105 * accept more than JDWPTRANSPORT_FLAGS_NONE. | |
106 */ | |
107 JDWPTRANSPORT_FLAGS_NONE = 0x0, | |
108 JDWPTRANSPORT_FLAGS_REPLY = 0x80 | |
109 }; | |
110 | |
111 typedef struct { | |
112 jint len; | |
113 jint id; | |
114 jbyte flags; | |
115 jbyte cmdSet; | |
116 jbyte cmd; | |
117 jbyte *data; | |
118 } jdwpCmdPacket; | |
119 | |
120 typedef struct { | |
121 jint len; | |
122 jint id; | |
123 jbyte flags; | |
124 jshort errorCode; | |
125 jbyte *data; | |
126 } jdwpReplyPacket; | |
127 | |
128 typedef struct { | |
129 union { | |
130 jdwpCmdPacket cmd; | |
131 jdwpReplyPacket reply; | |
132 } type; | |
133 } jdwpPacket; | |
134 | |
135 /* | |
136 * JDWP functions called by the transport. | |
137 */ | |
138 typedef 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 | |
143 typedef 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 */ | |
151 typedef 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 | |
159 struct 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 as | |
212 * 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 */ | |
218 struct _jdwpTransportEnv { | |
219 const struct jdwpTransportNativeInterface_ *functions; | |
220 #ifdef __cplusplus | |
221 | |
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(jdwpTransportEnv* env, | |
266 return functions->SetTransportConfiguration(this, config); | |
267 } | |
268 | |
269 #endif /* __cplusplus */ | |
270 }; | |
271 | |
272 #ifdef __cplusplus | |
273 } /* extern "C" */ | |
274 #endif /* __cplusplus */ | |
275 | |
276 #endif /* JDWPTRANSPORT_H */ |