/// <summary> /// Create JVM. /// </summary> /// <param name="cfg">Configuration.</param> /// <param name="cbs">Callbacks.</param> /// <returns>Context.</returns> internal static void CreateJvmContext(IgniteConfiguration cfg, UnmanagedCallbacks cbs) { lock (SyncRoot) { // 1. Warn about possible configuration inconsistency. JvmConfiguration jvmCfg = JvmConfig(cfg); if (!cfg.SuppressWarnings && _jvmCfg != null) { if (!_jvmCfg.Equals(jvmCfg)) { Console.WriteLine("Attempting to start Ignite node with different Java " + "configuration; current Java configuration will be ignored (consider " + "starting node in separate process) [oldConfig=" + _jvmCfg + ", newConfig=" + jvmCfg + ']'); } } // 2. Create unmanaged pointer. void *ctx = CreateJvm(cfg, cbs); cbs.SetContext(ctx); // 3. If this is the first JVM created, preserve it. if (_ctx == null) { _ctx = ctx; _jvmCfg = jvmCfg; } } }
public override bool Equals(object obj) { JvmConfiguration other = obj as JvmConfiguration; if (other == null) { return(false); } if (!string.Equals(Home, other.Home, StringComparison.OrdinalIgnoreCase)) { return(false); } if (!string.Equals(Classpath, other.Classpath, StringComparison.OrdinalIgnoreCase)) { return(false); } if (!string.Equals(Dll, other.Dll, StringComparison.OrdinalIgnoreCase)) { return(false); } return((Options == null && other.Options == null) || (Options != null && other.Options != null && Options.Count == other.Options.Count && !Options.Except(other.Options).Any())); }
/// <summary> /// Create JVM. /// </summary> /// <param name="cfg">Configuration.</param> /// <param name="log">Logger</param> /// <returns>Callback context.</returns> internal static UnmanagedCallbacks CreateJvmContext(IgniteConfiguration cfg, ILogger log) { lock (SyncRoot) { // 1. Warn about possible configuration inconsistency. JvmConfiguration jvmCfg = JvmConfig(cfg); if (!cfg.SuppressWarnings && _jvmCfg != null) { if (!_jvmCfg.Equals(jvmCfg)) { log.Warn("Attempting to start Ignite node with different Java " + "configuration; current Java configuration will be ignored (consider " + "starting node in separate process) [oldConfig=" + _jvmCfg + ", newConfig=" + jvmCfg + ']'); } } // 2. Create unmanaged pointer. var jvm = CreateJvm(cfg, log); if (cfg.RedirectJavaConsoleOutput) { jvm.EnableJavaConsoleWriter(); } var cbs = new UnmanagedCallbacks(log, jvm); jvm.RegisterCallbacks(cbs); // 3. If this is the first JVM created, preserve configuration. if (_jvmCfg == null) { _jvmCfg = jvmCfg; } return(cbs); } }
/// <summary> /// Create JVM. /// </summary> /// <param name="cfg">Configuration.</param> /// <param name="cbs">Callbacks.</param> /// <returns>Context.</returns> internal static void CreateJvmContext(IgniteConfiguration cfg, UnmanagedCallbacks cbs) { lock (SyncRoot) { // 1. Warn about possible configuration inconsistency. JvmConfiguration jvmCfg = JvmConfig(cfg); if (!cfg.SuppressWarnings && _jvmCfg != null) { if (!_jvmCfg.Equals(jvmCfg)) { Console.WriteLine("Attempting to start Ignite node with different Java " + "configuration; current Java configuration will be ignored (consider " + "starting node in separate process) [oldConfig=" + _jvmCfg + ", newConfig=" + jvmCfg + ']'); } } // 2. Create unmanaged pointer. void* ctx = CreateJvm(cfg, cbs); cbs.SetContext(ctx); // 3. If this is the first JVM created, preserve it. if (_ctx == null) { _ctx = ctx; _jvmCfg = jvmCfg; } } }