You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2015/06/09 14:45:09 UTC
[3/4] incubator-ignite git commit: # Minor changes to interop logic.
# Minor changes to interop logic.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/9bc3f79e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/9bc3f79e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/9bc3f79e
Branch: refs/heads/ignite-gg-10326
Commit: 9bc3f79e930669172dd2d957653f8aaa136ccb3a
Parents: c232631
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Jun 9 12:08:51 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Jun 9 12:08:51 2015 +0300
----------------------------------------------------------------------
.../internal/interop/InteropIgnition.java | 52 +++++++++++++++++++-
.../internal/interop/InteropProcessor.java | 8 +++
2 files changed, 58 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9bc3f79e/modules/core/src/main/java/org/apache/ignite/internal/interop/InteropIgnition.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/interop/InteropIgnition.java b/modules/core/src/main/java/org/apache/ignite/internal/interop/InteropIgnition.java
index 3ccd361..d8cc276 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/interop/InteropIgnition.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/interop/InteropIgnition.java
@@ -35,6 +35,9 @@ import java.util.*;
*/
@SuppressWarnings("UnusedDeclaration")
public class InteropIgnition {
+ /** Map with active instances. */
+ private static final HashMap<String, InteropProcessor> instances = new HashMap<>();
+
/**
* Start Ignite node in interop mode.
*
@@ -44,8 +47,8 @@ public class InteropIgnition {
* @param envPtr Environment pointer.
* @return Ignite instance.
*/
- public static InteropProcessor start(@Nullable String springCfgPath, @Nullable String gridName, int factoryId,
- long envPtr) {
+ public static synchronized InteropProcessor start(@Nullable String springCfgPath, @Nullable String gridName,
+ int factoryId, long envPtr) {
IgniteConfiguration cfg = configuration(springCfgPath);
if (gridName != null)
@@ -57,10 +60,55 @@ public class InteropIgnition {
trackFinalization(proc);
+ InteropProcessor old = instances.put(gridName, proc);
+
+ assert old == null;
+
return proc;
}
/**
+ * Get instance by environment pointer.
+ *
+ * @param gridName Grid name.
+ * @return Instance or {@code null} if it doesn't exists (never started or stopped).
+ */
+ @Nullable public static synchronized InteropProcessor instance(@Nullable String gridName) {
+ return instances.get(gridName);
+ }
+
+ /**
+ * Stop single instance.
+ *
+ * @param gridName Grid name,
+ * @param cancel Cancel flag.
+ * @return {@code True} if instance was found and stopped.
+ */
+ public static synchronized boolean stop(@Nullable String gridName, boolean cancel) {
+ if (Ignition.stop(gridName, cancel)) {
+ InteropProcessor old = instances.remove(gridName);
+
+ assert old != null;
+
+ return true;
+ }
+ else
+ return false;
+ }
+
+ /**
+ * Stop all instances.
+ *
+ * @param cancel Cancel flag.
+ */
+ public static synchronized void stopAll(boolean cancel) {
+ for (InteropProcessor proc : instances.values())
+ Ignition.stop(proc.ignite().name(), cancel);
+
+ instances.clear();
+ }
+
+ /**
* Create configuration.
*
* @param springCfgPath Path to Spring XML.
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9bc3f79e/modules/core/src/main/java/org/apache/ignite/internal/interop/InteropProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/interop/InteropProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/interop/InteropProcessor.java
index aa4f877..325a464 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/interop/InteropProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/interop/InteropProcessor.java
@@ -17,6 +17,7 @@
package org.apache.ignite.internal.interop;
+import org.apache.ignite.*;
import org.jetbrains.annotations.*;
/**
@@ -24,6 +25,13 @@ import org.jetbrains.annotations.*;
*/
public interface InteropProcessor {
/**
+ * Get owning Ignite instance.
+ *
+ * @return Ignite instance.
+ */
+ public Ignite ignite();
+
+ /**
* Get stop runnable to perform cleanup when interop is not longer used.
* <p/>
* <b>NOTE!</b> This runnable is called when current instance of interop processor is eligible for garbage