Main Page | Modules | Class Hierarchy | Class List | Directories | File List | Class Members | Related Pages

xmog_jvm_loader.h

00001 /*
00002  * Copyright 1999-2006 by Codemesh, Inc.  ALL RIGHTS RESERVED.
00003  */
00004 
00005 #ifndef xmog_jvm_loader_inc
00006 #define xmog_jvm_loader_inc
00007 
00008 
00009 #include "xmog.h"
00010 #include "xmog_jvm.h"
00011 #include "xmog_jvm_options.h"
00012 #include "xmog_options.h"
00013 #include "xmog_remote_client_options.h"
00014 #include "xmog_remote_server_options.h"
00015 
00016 
00018 
00019 class xmog_jvm_loader_impl;
00020 
00022 
00023 
00227 
00324 class XMOG_DECLSPEC xmog_jvm_loader : public xmog_jvm_options,
00325                                       public xmog_options
00326                                       XMOG_REMOTE_CLIENT_OPTIONS_INH
00327                                       XMOG_REMOTE_SERVER_OPTIONS_INH
00328 {
00329 public:
00368     typedef void (XMOG_CALLING_CONVENTION *XMOG_CONFIG_HOOK)( void * pLoader, int when );
00369 
00402     static void                 setConfigFile( const char * filename,
00403                                                XMOGVERSION vers = NULL, 
00404                                                XMOGCONFIG conf = NULL, 
00405                                                XMOGVERSION reserved0 = NULL );
00406 
00425     static xmog_jvm_loader &    get_jvm_loader( bool bEnvOverrides = true, 
00426                                                 bool bDefaultJvm = true, 
00427                                                 xmog_trace_facility fac = TraceAll, 
00428                                                 xmog_trace_level trace_level = TraceErrors );
00429 
00459     static xmog_jvm_loader &    get_jvm_loader( const char * filename,
00460                                                 XMOGVERSION vers, 
00461                                                 XMOGCONFIG conf, 
00462                                                 XMOGVERSION reserved0 = NULL,
00463                                                 bool bEnvOverrides = true, 
00464                                                 bool bDefaultJvm = true, 
00465                                                 xmog_trace_facility fac = TraceAll, 
00466                                                 xmog_trace_level trace_level = TraceErrors );
00467 
00489     static xmog_jvm_loader &    get_jvm_loader( const char * filename, 
00490                                                 bool bEnvOverrides = true, 
00491                                                 bool bDefaultJvm = true, 
00492                                                 xmog_trace_facility fac = TraceAll, 
00493                                                 xmog_trace_level trace_level = TraceErrors );
00494 
00495 
00512     static xmog_jvm_loader &    get_jvm_loader( int argc, 
00513                                                 char * argv[], 
00514                                                 bool bEnvOverrides = true, 
00515                                                 bool bDefaultJvm = true, 
00516                                                 xmog_trace_facility fac = TraceAll, 
00517                                                 xmog_trace_level trace_level = TraceErrors );
00518 
00539     static xmog_jvm_loader &    get_jvm_loader( XMOGVERSION vers, 
00540                                                 XMOGCONFIG conf, 
00541                                                 XMOGVERSION reserved0 = NULL, 
00542                                                 bool bEnvOverrides = true, 
00543                                                 bool bDefaultJvm = true, 
00544                                                 xmog_trace_facility fac = TraceAll, 
00545                                                 xmog_trace_level trace_level = TraceErrors  );
00546 
00555     static xmog_jvm_loader *    get_jvm_loader_no_create();
00556 
00570     virtual xmog_jvm *          load( bool bAcceptPreloadedJvm = true );
00571 
00582     virtual xmog_jvm *          get_jvm();
00583 
00590     virtual void                set_jvm( xmog_jvm * jvm );
00591 
00598     jint                        getLoadResult( char ** pMsg = NULL );
00599     
00603     jint                        getLoadedJvms( xmog_jvm ** pJvms, jsize size, jsize * count );
00604 
00611     static const char *         getDefaultJvmPath();
00612 
00621     static bool                 isInShutdownMode();
00622 
00631     static void                 enterShutdownMode();
00632 
00638     virtual void                setJvmPath( const char * jvmPath );
00639 
00661     virtual void                read( const char * file, XMOGVERSION vers = NULL, XMOGCONFIG conf = NULL, XMOGVERSION reserved0 = NULL );
00662 
00680     static void                 addVersionConfig( const char * vers, const char * config );
00681 
00690     static void                 registerConfigurationHook( XMOG_CONFIG_HOOK configHook );
00691 
00695     static void                 atexit_call();
00696 
00700     bool                        getEnvironmentOverrides() const;
00701 
00702 
00703 protected:
00704 
00714     xmog_jvm_loader( bool bEnvOverrides, bool bDefaultJvm, xmog_trace_facility fac, xmog_trace_level );
00715 
00726     xmog_jvm_loader( const char * filename, bool bEnvOverrides, bool bDefaultJvm, xmog_trace_facility fac, xmog_trace_level );
00727 
00728 
00744     xmog_jvm_loader( const char * filename, XMOGVERSION vers, XMOGCONFIG conf, XMOGVERSION reserved0, bool bEnvOverrides, bool bDefaultJvm, xmog_trace_facility fac, xmog_trace_level );
00745 
00746 
00758     xmog_jvm_loader( int argc, char * argv[], bool bEnvOverrides, bool bDefaultJvm, xmog_trace_facility fac, xmog_trace_level );
00759 
00774     xmog_jvm_loader( XMOGVERSION vers, XMOGCONFIG conf, XMOGVERSION reserved0, bool bEnvOverrides, bool bDefaultJvm, xmog_trace_facility fac, xmog_trace_level  );
00775 
00776     virtual ~xmog_jvm_loader();
00777 
00781     xmog_jvm *                  usePreloadedJvm();
00782 
00789     xmog_jvm *                  loadInProcess( bool bAcceptPreloadedJvm );
00790 
00798     xmog_jvm *                  loadOutOfProcessClient( bool bAcceptPreloadedJvm );
00799 
00805     xmog_jvm *                  loadOutOfProcessServer( bool bAcceptPreloadedJvm );
00806 
00815     xmog_jvm *                  loadOutOfProcess( bool bAcceptPreloadedJvm, bool bServer = false );
00816 
00834     void                        consolidateVersionConfigs();
00835 
00844     void                        addExtensionDirectories();
00845 
00846 private:
00847 
00848     volatile xmog_jvm *         theJvm;
00849 
00850     volatile static bool        shutdownmode;
00851 
00852     static char *               fileName_;
00853 
00854     static XMOGVERSION          vers_;
00855 
00856     static XMOGCONFIG           conf_;
00857 
00858     static XMOGVERSION          reserved0_;
00859 
00860     xmog_jvm_loader_impl *      impl;
00861 
00862     jint                        loadResult;
00863 
00864     bool                        bEnvOverrides_;
00865 
00866     //
00867     // Suppress copy constructor because we only ever have one instance of
00868     // the loader and don't want to allow the user to inadvertently create
00869     // another one by accident.
00870     //
00871     xmog_jvm_loader( const xmog_jvm_loader & );
00872 
00873     //
00874     // See above.
00875     //
00876     xmog_jvm_loader &           operator = ( const xmog_jvm_loader & );
00877 };
00878 
00879                                       
00880 #endif /* xmog_jvm_loader_inc */

Generated on Wed May 31 14:01:19 2006 for Shared Codemesh Runtime Library API Reference by  doxygen 1.4.1