00001
00002
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
00868
00869
00870
00871 xmog_jvm_loader( const xmog_jvm_loader & );
00872
00873
00874
00875
00876 xmog_jvm_loader & operator = ( const xmog_jvm_loader & );
00877 };
00878
00879
00880 #endif