]> gerrit.simantics Code Review - simantics/r.git/blobdiff - org.simantics.r.scl/src/org/simantics/r/scl/RSessionManager.java
Fixed org.simantics.r trunk to compile after the changes done in #6287.
[simantics/r.git] / org.simantics.r.scl / src / org / simantics / r / scl / RSessionManager.java
index 8f1a92dc20c2fb8cb12f4269e02a2c4a58fcc9b7..86c6f9676f36714af117893480045d5aa9948d5c 100644 (file)
@@ -16,11 +16,15 @@ import java.util.concurrent.ConcurrentHashMap;
 \r
 import org.rosuda.REngine.Rserve.RConnection;\r
 import org.rosuda.REngine.Rserve.RserveException;\r
+import org.simantics.db.layer0.variable.NodeSupport;\r
 import org.simantics.scl.runtime.function.Function;\r
 \r
 public class RSessionManager {\r
     static ConcurrentHashMap<String, RSession> CONNECTIONS =\r
             new ConcurrentHashMap<String, RSession>(); \r
+\r
+    static ConcurrentHashMap<String, NodeSupport<String>> SUPPORTS =\r
+            new ConcurrentHashMap<String, NodeSupport<String>>(); \r
     \r
     public static RSession getSession(String id) {\r
         // CONNECTIONS is ConcurrentHashMap so no synchronization is needed here\r
@@ -65,4 +69,16 @@ public class RSessionManager {
             return managedConnection;\r
         }\r
     }\r
+    \r
+    public static NodeSupport<String> getOrCreateNodeSupport(String id) {\r
+        synchronized(SUPPORTS) {\r
+            NodeSupport<String> result = SUPPORTS.get(id);\r
+            if(result == null) {\r
+                RSession session = getSession(id);\r
+                result = new NodeSupport<String>(session.getNodeManager());\r
+                SUPPORTS.put(id, result);\r
+            }\r
+            return result;\r
+        }\r
+    }\r
 }\r