22 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 */
32
33
34 #ifndef JAVAVIRTUALMACHINE_H
35 #define JAVAVIRTUALMACHINE_H
36
37
38 #include "jni.h"
39 #include "Platform.h"
40
41
42 class JavaVirtualMachine {
43 public:
44 JavaVirtualMachine();
45 ~JavaVirtualMachine(void);
46
47 bool StartJVM();
48 };
49
50 bool RunVM();
51
52 #endif //JAVAVIRTUALMACHINE_H
|
22 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 */
32
33
34 #ifndef JAVAVIRTUALMACHINE_H
35 #define JAVAVIRTUALMACHINE_H
36
37
38 #include "jni.h"
39 #include "Platform.h"
40
41
42 enum JvmLaunchType {
43 USER_APP_LAUNCH,
44 SINGLE_INSTANCE_NOTIFICATION_LAUNCH,
45 JVM_LAUNCH_TYPES_NUM
46 };
47
48 struct JavaOptionItem {
49 TString name;
50 TString value;
51 void* extraInfo;
52 };
53
54 class JavaOptions {
55 private:
56 std::list<JavaOptionItem> FItems;
57 JavaVMOption* FOptions;
58
59 public:
60 JavaOptions();
61 ~JavaOptions();
62
63 void AppendValue(const TString Key, TString Value, void* Extra);
64 void AppendValue(const TString Key, TString Value);
65 void AppendValue(const TString Key);
66 void AppendValues(OrderedMap<TString, TString> Values);
67 void ReplaceValue(const TString Key, TString Value);
68 std::list<TString> ToList();
69 size_t GetCount();
70 };
71
72 // Private typedef for function pointer casting
73 #define LAUNCH_FUNC "JLI_Launch"
74
75 typedef int (JNICALL *JVM_CREATE)(int argc, char ** argv,
76 int jargc, const char** jargv,
77 int appclassc, const char** appclassv,
78 const char* fullversion,
79 const char* dotversion,
80 const char* pname,
81 const char* lname,
82 jboolean javaargs,
83 jboolean cpwildcard,
84 jboolean javaw,
85 jint ergo);
86
87 class JavaLibrary : public Library {
88 JVM_CREATE FCreateProc;
89 JavaLibrary(const TString &FileName);
90 public:
91 JavaLibrary();
92 bool JavaVMCreate(size_t argc, char *argv[]);
93 };
94
95 class JavaVirtualMachine {
96 private:
97 JavaLibrary javaLibrary;
98
99 void configureLibrary();
100 bool launchVM(JavaOptions& options, std::list<TString>& vmargs, bool addSiProcessId);
101 public:
102 JavaVirtualMachine();
103 ~JavaVirtualMachine(void);
104
105 bool StartJVM();
106 bool NotifySingleInstance();
107 };
108
109 bool RunVM(JvmLaunchType type);
110
111 #endif //JAVAVIRTUALMACHINE_H
|