/// <summary> /// Creates the JVM if necessary. /// </summary> public static void EnsureJvmCreated() { if (Jvm.Get(true) == null) { var logger = new TestContextLogger(); JvmDll.Load(null, logger); IgniteManager.CreateJvm(GetTestConfiguration(), logger); } }
/// <summary> /// Constructor. /// </summary> /// <param name="log">Logger.</param> /// <param name="jvm"></param> public UnmanagedCallbacks(ILogger log, Jvm jvm) { Debug.Assert(log != null); Debug.Assert(jvm != null); _log = log; _jvm = jvm; InitHandlers(); }
/// <summary> /// Create JVM. /// </summary> /// <returns>JVM.</returns> private static Jvm CreateJvm(IgniteConfiguration cfg) { var cp = Classpath.CreateClasspath(cfg); var jvmOpts = GetMergedJvmOptions(cfg); jvmOpts.Add(cp); return(Jvm.GetOrCreate(jvmOpts)); }
/** */ private static unsafe void CallVoidMethod(string className, string methodName, string methodSig) { var env = Jvm.Get().AttachCurrentThread(); using (var cls = env.FindClass(className)) { var methodId = env.GetStaticMethodId(cls, methodName, methodSig); env.CallStaticVoidMethod(cls, methodId); } }
/** */ private static unsafe string CallStringMethod(string className, string methodName, string methodSig) { var env = Jvm.Get().AttachCurrentThread(); using (var cls = env.FindClass(className)) { var methodId = env.GetStaticMethodId(cls, methodName, methodSig); var res = env.CallStaticObjectMethod(cls, methodId); return(env.JStringToString(res.Target)); } }
internal static void Reallocate(long memPtr, int cap) { var jvm = Jvm.Get(); var methodId = jvm.MethodId; long *args = stackalloc long[4]; args[0] = memPtr; args[1] = cap; jvm.AttachCurrentThread().CallStaticVoidMethod(methodId.PlatformUtils, methodId.PlatformUtilsReallocate, args); }
internal static bool IgnitionStop(string gridName, bool cancel) { var env = Jvm.Get().AttachCurrentThread(); var methodId = env.Jvm.MethodId; using (var gridName1 = env.NewStringUtf(gridName)) { long *args = stackalloc long[2]; args[0] = gridName == null ? 0 : gridName1.Target.ToInt64(); args[1] = cancel ? 1 : 0; return(env.CallStaticBoolMethod(methodId.PlatformIgnition, methodId.PlatformIgnitionStop, args)); } }
/** */ private static unsafe void CallStringMethod(string className, string methodName, string methodSig, string arg) { var env = Jvm.Get().AttachCurrentThread(); using (var cls = env.FindClass(className)) { var methodId = env.GetStaticMethodId(cls, methodName, methodSig); using (var gridNameRef = env.NewStringUtf(arg)) { var args = stackalloc long[1]; args[0] = gridNameRef.Target.ToInt64(); env.CallStaticVoidMethod(cls, methodId, args); } } }
static void Main(string[] args) { // Location of the Java Virtual Machine string jvmPath = AppDomain.CurrentDomain.BaseDirectory + "jre\\bin\\server\\jvm.dll"; // Location of the hardware monitor editor JAR application string jarPath = AppDomain.CurrentDomain.BaseDirectory + "HardwareMonitorEditor.jar"; // Create JVM Jvm jvm = new Jvm(jvmPath, Jvm.JNI_VERSION_9, jarPath); // Create the native interface that handles communication to and from the JAR application NativeInterface native = new NativeInterface(jvm); native.RunClient(); }
/// <summary> /// Create JVM. /// </summary> /// <returns>JVM.</returns> private static Jvm CreateJvm(IgniteConfiguration cfg, ILogger log) { // Do not bother with classpath when JVM exists. var jvm = Jvm.Get(true); if (jvm != null) { return(jvm); } var cp = Classpath.CreateClasspath(cfg, log: log); var jvmOpts = GetMergedJvmOptions(cfg); jvmOpts.Add(cp); return(Jvm.GetOrCreate(jvmOpts)); }
/// <summary> /// Create JVM. /// </summary> /// <returns>JVM.</returns> internal static Jvm CreateJvm(IgniteConfiguration cfg, ILogger log) { // Do not bother with classpath when JVM exists. var jvm = Jvm.Get(true); if (jvm != null) { return(jvm); } var igniteHome = IgniteHome.Resolve(cfg.IgniteHome, log); var cp = Classpath.CreateClasspath(classPath: cfg.JvmClasspath, igniteHome: igniteHome, log: log); var jvmOpts = GetMergedJvmOptions(cfg, igniteHome); jvmOpts.Add(cp); return(Jvm.GetOrCreate(jvmOpts)); }
/// <summary> /// Starts a server node with a given version. /// </summary> /// <param name="groupId">Maven artifact group id.</param> /// <param name="version">Product version.</param> /// <returns>Disposable object to stop the server.</returns> public static IDisposable Start(string groupId, string version) { IgniteArgumentCheck.NotNullOrEmpty(version, "version"); var pomWrapper = ReplaceIgniteVersionInPomFile(groupId, version, Path.Combine(JavaServerSourcePath, "pom.xml")); EnsureJvmCreated(); var time = DateTime.Now; TestUtilsJni.StartProcess( file: Os.IsWindows ? "cmd.exe" : "/bin/bash", arg1: Os.IsWindows ? "/c" : "-c", arg2: string.Format("{0} {1}", MavenPath, MavenCommandExec), envVars: Jvm.IsJava9() ? "MAVEN_OPTS#" + string.Join(" ", Jvm.Java9Options) : string.Empty, workDir: JavaServerSourcePath, waitForOutput: "Ignite node started OK"); // Java can not end process tree on Windows - detect the process manually and use taskkill. var serverProc = Os.IsWindows ? System.Diagnostics.Process .GetProcesses() .Single(p => p.ProcessName == "java" && p.StartTime > time) : null; return(new DisposeAction(() => { if (serverProc != null) { serverProc.KillProcessTree(); } TestUtilsJni.DestroyProcess(); pomWrapper.Dispose(); })); }