예제 #1
0
파일: Jvm.cs 프로젝트: mmmika/gridgain
        /// <summary>
        /// Gets the JVM options.
        /// </summary>
        private static JvmOption[] GetJvmOptions(IList <string> options)
        {
            var opt = new JvmOption[options.Count];

            for (var i = 0; i < options.Count; i++)
            {
                opt[i].optionString = Marshal.StringToHGlobalAnsi(options[i]);
            }

            return(opt);
        }
예제 #2
0
파일: Jvm.cs 프로젝트: rahulf444/ignite
        /// <summary>
        /// Gets the JVM pointer.
        /// </summary>
        private static IntPtr GetJvmPtr(IList <string> options)
        {
            IntPtr jvm;
            int    existingJvmCount;

            // Use existing JVM if present.
            var res = JvmDll.Instance.GetCreatedJvms(out jvm, 1, out existingJvmCount);

            if (res != JniResult.Success)
            {
                throw new IgniteException("JNI_GetCreatedJavaVMs failed: " + res);
            }

            if (existingJvmCount > 0)
            {
                return(jvm);
            }

            var args = new JvmInitArgs
            {
                version = JNI_VERSION_1_6
            };

            if (options != null && options.Count > 0)
            {
                args.nOptions = options.Count;
                var opt = new JvmOption[options.Count];

                for (int i = 0; i < options.Count; i++)
                {
                    opt[i].optionString = Marshal.StringToHGlobalAnsi(options[i]);
                }

                fixed(JvmOption *a = &opt[0])
                {
                    args.options = a;
                }
            }

            IntPtr env;

            res = JvmDll.Instance.CreateJvm(out jvm, out env, &args);
            if (res != JniResult.Success)
            {
                throw new IgniteException("JNI_CreateJavaVM failed: " + res);
            }

            return(jvm);
        }