ij-16.png   inspectorJ -- JavaTM Profiler
sf project site browse source checkout source
SourceForge.net Logo



src/inspectorj/jdwp/jdwpconstants.h

Go to the documentation of this file.
00001 /***************************************************************************
00002 *   inspectorJ - java profiler                                            *
00003 *   Copyright (C) 2006 by James May
00004 *                                                                         *
00005 *   This program is free software; you can redistribute it and/or modify  *
00006 *   it under the terms of the GNU General Public License as published by  *
00007 *   the Free Software Foundation; either version 2 of the License, or     *
00008 *   (at your option) any later version.                                   *
00009 *                                                                         *
00010 *   This program is distributed in the hope that it will be useful,       *
00011 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00012 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
00013 *   GNU General Public License for more details.                          *
00014 *                                                                         *
00015 *   You should have received a copy of the GNU General Public License     *
00016 *   along with this program; if not, write to the                         *
00017 *   Free Software Foundation, Inc.,                                       *
00018 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
00019  ***************************************************************************/
00020 
00027 #ifndef JDWP_CONSTANTS_H_INCLUDED
00028 #define JDWP_CONSTANTS_H_INCLUDED
00029 
00030 #include <QString>
00031         
00032 namespace inspectorj {        
00033 namespace jdwp {        
00034                 
00035 // Protocol Constants
00036     
00038 const char* const JDWP_HANDSHAKE = "JDWP-Handshake";
00039 
00041 const int JDWP_HANDSHAKE_LENGTH = 14;
00042 
00044 const int JDWP_HEADER_LENGTH = 11;
00045 
00046 // ID Fields to hold at most 64 bit IDs.        
00047       
00049 struct FieldID
00050 {
00052     qint64 value;
00053 };
00054 
00056 struct ObjectID
00057 {
00059     qint64 value;
00060 };
00061 
00063 struct MethodID
00064 {
00066     qint64 value;
00067 };
00068 
00070 struct ReferenceTypeID
00071 {
00073     qint64 value;
00074 };
00075 
00077 struct FrameID
00078 {
00080     qint64 value;
00081 };
00082 
00083 enum 
00084 {
00085     ERR_NONE = 0, 
00086     ERR_INVALID_THREAD = 10, 
00087     ERR_INVALID_THREAD_GROUP = 11, 
00088     ERR_INVALID_PRIORITY = 12, 
00089     ERR_THREAD_NOT_SUSPENDED = 13, 
00090     ERR_THREAD_SUSPENDED = 14, 
00091     ERR_INVALID_OBJECT = 20, 
00092     ERR_INVALID_CLASS = 21, 
00093     ERR_CLASS_NOT_PREPARED = 22, 
00094     ERR_INVALID_METHODID = 23, 
00095     ERR_INVALID_LOCATION = 24, 
00096     ERR_INVALID_FIELDID = 25, 
00097     ERR_INVALID_FRAMEID = 30, 
00098     ERR_NO_MORE_FRAMES = 31, 
00099     ERR_OPAQUE_FRAME = 32, 
00100     ERR_NOT_CURRENT_FRAME = 33, 
00101     ERR_TYPE_MISMATCH = 34, 
00102     ERR_INVALID_SLOT = 35, 
00103     ERR_DUPLICATE = 40, 
00104     ERR_NOT_FOUND = 41, 
00105     ERR_INVALID_MONITOR = 50, 
00106     ERR_NOT_MONITOR_OWNER = 51, 
00107     ERR_INTERRUPT = 52, 
00108     ERR_INVALID_CLASS_FORMAT = 60, 
00109     ERR_CIRCULAR_CLASS_DEFINITION = 61, 
00110     ERR_FAILS_VERIFICATION = 62, 
00111     ERR_ADD_METHOD_NOT_IMPLEMENTED = 63, 
00112     ERR_SCHEMA_CHANGE_NOT_IMPLEMENTED = 64, 
00113     ERR_INVALID_TYPESTATE = 65, 
00114     ERR_HIERARCHY_CHANGE_NOT_IMPLEMENTED = 66, 
00115     ERR_DELETE_METHOD_NOT_IMPLEMENTED = 67, 
00116     ERR_UNSUPPORTED_VERSION = 68, 
00117     ERR_NAMES_DONT_MATCH = 69, 
00118     ERR_CLASS_MODIFIERS_CHANGE_NOT_IMPLEMENTED = 70, 
00119     ERR_METHOD_MODIFIERS_CHANGE_NOT_IMPLEMENTED = 71, 
00120     ERR_NOT_IMPLEMENTED = 99, 
00121     ERR_NULL_POINTER = 100, 
00122     ERR_ABSENT_INFORMATION = 101, 
00123     ERR_INVALID_EVENT_TYPE = 102, 
00124     ERR_ILLEGAL_ARGUMENT = 103, 
00125     ERR_OUT_OF_MEMORY = 110, 
00126     ERR_ACCESS_DENIED = 111, 
00127     ERR_VM_DEAD = 112, 
00128     ERR_INTERNAL = 113, 
00129     ERR_UNATTACHED_THREAD = 115, 
00130     ERR_INVALID_TAG = 500, 
00131     ERR_ALREADY_INVOKING = 502, 
00132     ERR_INVALID_INDEX = 503, 
00133     ERR_INVALID_LENGTH = 504, 
00134     ERR_INVALID_STRING = 506, 
00135     ERR_INVALID_CLASS_LOADER = 507, 
00136     ERR_INVALID_ARRAY = 508, 
00137     ERR_TRANSPORT_LOAD = 509, 
00138     ERR_TRANSPORT_INIT = 510, 
00139     ERR_NATIVE_METHOD = 511, 
00140     ERR_INVALID_COUNT = 512 
00141 };
00142 
00143 
00149 void getJDWPError(int errCode, QString &s);
00150 
00152 typedef enum
00153 {
00154     EVENT_SINGLE_STEP = 1,
00155     EVENT_BREAKPOINT = 2,
00156     EVENT_FRAME_POP = 3,
00157     EVENT_EXCEPTION = 4,
00158     EVENT_USER_DEFINED = 5,
00159     EVENT_THREAD_START = 6,
00160     EVENT_THREAD_END = 7,
00161     EVENT_CLASS_PREPARE = 8,
00162     EVENT_CLASS_UNLOAD = 9,
00163     EVENT_CLASS_LOAD = 10,
00164     EVENT_FIELD_ACCESS = 20,
00165     EVENT_FIELD_MODIFICATION = 21,
00166     EVENT_EXCEPTION_CATCH = 30,
00167     EVENT_METHOD_ENTRY = 40,
00168     EVENT_METHOD_EXIT = 41,
00169     EVENT_VM_INIT = 90,
00170     EVENT_VM_DEATH = 99
00171 } eventKindConstants;
00172 
00174 typedef enum
00175 {
00176     THREAD_STATUS_ZOMBIE = 0, 
00177     THREAD_STATUS_RUNNING = 1,
00178     THREAD_STATUS_SLEEPING = 2,
00179     THREAD_STATUS_MONITOR = 3,
00180     THREAD_STATUS_WAIT = 4
00181 } threadStatusConstants;
00182 
00184 typedef enum
00185 {
00186     SUSPEND_STATUS_SUSPENDED = 0x1
00187 } suspendStatusConstants;
00188 
00190 typedef enum
00191 {
00192     CLASS_STATUS_VERIFIED = 1,
00193     CLASS_STATUS_PREPARED = 2,
00194     CLASS_STATUS_INITIALIZED = 4,
00195     CLASS_STATUS_ERROR = 8
00196 } classStatusConstants;
00197 
00199 typedef enum
00200 {
00201     TAG_TYPE_CLASS = 1,      
00202     TAG_TYPE_INTERFACE = 2,  
00203     TAG_TYPE_ARRAY = 3       
00204 } typeTagConstants;
00205 
00207 typedef enum
00208 {
00209     TAG_ARRAY  =  91,  
00210     TAG_BYTE   =  66,  
00211     TAG_CHAR   =  67,  
00212     TAG_OBJECT =  76,  
00213     TAG_FLOAT  =  70,  
00214     TAG_DOUBLE =  68,  
00215     TAG_INT    =  73,  
00216     TAG_LONG   =  74,  
00217     TAG_SHORT  =  83,  
00218     TAG_VOID   =  86,  
00219     TAG_BOOLEAN = 90,  
00220     TAG_STRING  = 115, 
00221     TAG_THREAD  = 116, 
00222     TAG_THREAD_GROUP  = 103, 
00223     TAG_CLASS_LOADER  = 108, 
00224     TAG_CLASS_OBJECT  = 99   
00225 } tagConstants;
00226 
00228 typedef enum
00229 {
00230     STEP_INTO = 0,   
00231     STEP_OVER = 1,   
00232     STEP_OUT = 2     
00233 } stepDepthConstants;
00234 
00236 typedef enum
00237 {
00238     STEP_SIZE_MIN = 0,   
00239     STEP_SIZE_LINE = 1   
00240 } stepSizeConstants;
00241 
00243 typedef enum
00244 {
00245     SUSPEND_POLICY_NONE = 0,           
00246     SUSPEND_POLICY_EVENT_THREAD = 1,   
00247     SUSPEND_POLICY_ALL = 2             
00248 } suspendPolicyConstants;
00249 
00251 typedef enum
00252 {
00253     INVOKE_SINGLE_THREADED = 0x01,    
00254     INVOKE_NONVIRTUAL      = 0x02    
00255 } invokeOptionsConstants;
00256 
00258 typedef enum {
00259     VM_COMMAND_SET = 1,
00260     REF_TYPE_COMMAND_SET = 2,
00261     CLASS_TYPE_COMMAND_SET = 3,
00262     ARRAY_TYPE_COMMAND_SET = 4,
00263     IF_COMMAND_SET = 5,
00264     METHOD_COMMAND_SET = 6,
00265     OBJECT_REF_COMMAND_SET = 9,
00266     STRING_REF_COMMAND_SET = 10,
00267     THREAD_REF_COMMAND_SET = 11,
00268     THREAD_GROUP_REF_COMMAND_SET = 12,
00269     ARRAY_REF_COMMAND_SET = 13,
00270     CLASS_LDR_REF_COMMAND_SET = 14,
00271     EVENT_REQUEST_COMMAND_SET = 15,
00272     STACK_FRAME_COMMAND_SET = 16,
00273     CLASS_OBJECT_REF_COMMAND_SET = 17,
00274     EVENT_COMMAND_SET = 64,
00275     INSPECTORJ_COMMAND_SET = -1,
00276     BYTECODE_COMMAND_SET = 99
00277 } jdwpCommandSet;
00278 
00280 typedef enum {
00281     VM_CMD_VERSION = 1,
00282     VM_CMD_CLASSES_BY_SIGNATURE = 2,
00283     VM_CMD_ALL_CLASSES = 3,
00284     VM_CMD_ALL_THREADS = 4,
00285     VM_CMD_TOP_LEVEL_THREAD_GROUPS = 5,
00286     VM_CMD_DISPOSE = 6,
00287     VM_CMD_ID_SIZES = 7,
00288     VM_CMD_SUSPEND = 8,
00289     VM_CMD_RESUME = 9,
00290     VM_CMD_EXIT = 10,
00291     VM_CMD_CREATE_STRING = 11,
00292     VM_CMD_CAPABILITIES = 12,
00293     VM_CMD_CLASSPATHS = 13,
00294     VM_CMD_DISPOSE_OBJECTS = 14,
00295     VM_CMD_HOLD_EVENTS = 15,
00296     VM_CMD_RELEASE_EVENTS = 16,
00297     VM_CMD_CAPABILITIES_NEW = 17,
00298     VM_CMD_REDEFINE_CLASSES = 18,
00299     VM_CMD_SET_DEFAULT_STRATUM = 19,
00300     VM_CMD_ALL_CLASSES_WITH_GENERIC = 20
00301 } virtualMachineCmd;
00302 
00304 typedef enum {
00305     REF_TYPE_CMD_SIGNATURE = 1,
00306     REF_TYPE_CMD_CLASS_LOADER = 2,
00307     REF_TYPE_CMD_MODIFIERS = 3,
00308     REF_TYPE_CMD_FIELDS = 4,
00309     REF_TYPE_CMD_METHODS = 5,
00310     REF_TYPE_CMD_GET_VALUES = 6,
00311     REF_TYPE_CMD_SOURCE_FILE = 7,
00312     REF_TYPE_CMD_NESTED_TYPES = 8,
00313     REF_TYPE_CMD_STATUS = 9,
00314     REF_TYPE_CMD_INTERFACES = 10,
00315     REF_TYPE_CMD_CLASS_OBJECT = 11,
00316     REF_TYPE_CMD_SOURCE_DEBUG_EXTENSION = 12,
00317     REF_TYPE_CMD_SIGNATURE_WITH_GENERIC = 13,
00318     REF_TYPE_CMD_FIELDS_WITH_GENERIC = 14,
00319     REF_TYPE_CMD_METHODS_WITH_GENERIC = 15
00320 } referenceTypeCmd;
00321 
00323 typedef enum {
00324     BC_TYPE_CMD_DISASSEMBLE = 1,
00325 } byteCodeCmd;
00326 
00328 typedef enum {
00329     CLASS_TYPE_CMD_SUPER_CLASS = 1,
00330     CLASS_TYPE_CMD_SET_VALUES = 2,
00331     CLASS_TYPE_CMD_INVOKE_METHOD = 3,
00332     CLASS_TYPE_CMD_NEW_INSTANCE = 4
00333 } classTypeCmd;
00334 
00336 typedef enum {
00337     ARRAY_TYPE_CMD_NEW_INSTANCE = 1
00338 } arrayTypeCmd;
00339 
00341 typedef enum {
00342 
00343 } interfaceCmd;
00344 
00346 typedef enum {
00347     METHOD_CMD_LINE_TABLE = 1,
00348     METHOD_CMD_VARIABLE_TABLE = 2,
00349     METHOD_CMD_BYTECODES = 3,
00350     METHOD_CMD_IS_OBSOLETE = 4,
00351     METHOD_CMD_VARIABLE_TABLE_WITH_GENERIC = 5
00352 } methodCmd;
00353 
00355 typedef enum {
00356     OBJECT_REF_CMD_REFERENCE_TYPE = 1,
00357     OBJECT_REF_CMD_GET_VALUES = 2,
00358     OBJECT_REF_CMD_SET_VALUES = 3,
00359     OBJECT_REF_CMD_MONITOBJECT_REF_INFO = 5,
00360     OBJECT_REF_CMD_INVOKE_METHOD = 6,
00361     OBJECT_REF_CMD_DISABLE_COLLECTION = 7,
00362     OBJECT_REF_CMD_ENABLE_COLLECTION = 8,
00363     OBJECT_REF_CMD_IS_COLLECTED = 9
00364 } objectReferenceCmd;
00365 
00367 typedef enum {
00368     STRING_REF_CMD_VALUE = 1
00369 } stringReferenceCmd;
00370 
00372 typedef enum {
00373     THREAD_REFCMD_NAME = 1,
00374     THREAD_REFCMD_SUSPEND = 2,
00375     THREAD_REFCMD_RESUME = 3,
00376     THREAD_REFCMD_STATUS = 4,
00377     THREAD_REFCMD_THREAD_GROUP = 5,
00378     THREAD_REFCMD_FRAMES = 6,
00379     THREAD_REFCMD_FRAME_COUNT = 7,
00380     THREAD_REFCMD_OWNED_MONITORS = 8,
00381     THREAD_REFCMD_CURRENT_CONTENDED_MONITOR = 9,
00382     THREAD_REFCMD_STOP = 10,
00383     THREAD_REFCMD_INTERRUPT = 11,
00384     THREAD_REFCMD_SUSPEND_COUNT = 12
00385 } threadReferenceCmd;
00386 
00388 typedef enum {
00389     THREAD_GROUP_REFCMD_NAME = 1,
00390     THREAD_GROUP_REFCMD_PARENT = 2,
00391     THREAD_GROUP_REFCMD_CHILDREN = 3
00392 } threadGroupReferenceCmd;
00393 
00395 typedef enum {
00396     ARRAY_REF_CMD_LENGTH = 1,
00397     ARRAY_REF_CMD_GET_VALUES = 2,
00398     ARRAY_REF_CMD_SET_VALUES = 3
00399 } arrayReferenceCmd;
00400 
00402 typedef enum {
00403     CLASS_LDR_REF_CMD_VISIBLE_CLASSES = 1
00404 } classLoaderReferenceCmd;
00405 
00407 typedef enum {
00408     EVENT_REQUEST_CMD_SET = 1,
00409     EVENT_REQUEST_CMD_CLEAR = 2,
00410     EVENT_REQUEST_CMD_CLEAR_ALL_BREAKPOINTS = 3
00411 } eventRequestCmd;
00412 
00414 typedef enum {
00415     STACK_FRAME_CMD_GET_VALUES = 1,
00416     STACK_FRAME_CMD_SET_VALUES = 2,
00417     STACK_FRAME_CMD_THIS_OBJECT = 3,
00418     STACK_FRAME_CMD_POP_FRAMES = 4
00419 } stackFrameCmd;
00420 
00422 typedef enum {
00423     CLASS_OBJECT_REF_CMD_REFLECTED_TYPE = 1
00424 } classObjectReferenceCmd;
00425 
00427 typedef enum {
00428     EVENT_CMD_COMPOSITE = 100
00429 } eventCmd;
00430 
00432 typedef enum {
00433     IJ_DISCONNECT = 1,
00434     IJ_EXIT = 2
00435 } inspectorjCmd;
00436 
00437 } // end namespace jdwp
00438 } // end namespace inspectorj
00439 
00440 #endif //JDWP_CONSTANTS_H_INCLUDED
00441 

Generated on Sun Aug 19 17:07:53 2007 for inspectorJ by  doxygen 1.5.1