-package fi.vtt.simantics.procore.internal;\r
-\r
-import org.simantics.db.MonitorContext;\r
-import org.simantics.db.MonitorHandler;\r
-import org.simantics.db.SessionVariables;\r
-import org.simantics.db.service.SessionMonitorSupport;\r
-\r
-public class SessionMonitorSupportImpl implements SessionMonitorSupport {\r
- \r
- final private SessionImplSocket session;\r
- \r
- SessionMonitorSupportImpl(SessionImplSocket session) {\r
- this.session = session;\r
- }\r
- \r
- @Override\r
- public synchronized MonitorContext registerMonitor(MonitorHandler h) {\r
- assert h != null;\r
-\r
- MonitorContext ctx = new MonitorContext() {\r
- @Override\r
- public int getInteger(String key) {\r
- if (SessionVariables.QUEUED_READS.equals(key)) {\r
- return session.state.getReadCount();\r
- } else if (SessionVariables.QUEUED_WRITES.equals(key)) {\r
- return session.state.getWriteCount();\r
- }\r
- return -1;\r
- }\r
-\r
- @Override\r
- public String getString(String key) {\r
- return null;\r
- }\r
- };\r
- session.monitorContexts.map(ctx, h);\r
-\r
- MonitorHandler[] newHandlers = new MonitorHandler[session.monitorHandlers.length + 1];\r
- System.arraycopy(session.monitorHandlers, 0, newHandlers, 0, session.monitorHandlers.length);\r
- newHandlers[session.monitorHandlers.length] = h;\r
- session.monitorHandlers = newHandlers;\r
-\r
- return ctx;\r
- }\r
-\r
- @Override\r
- public synchronized void unregisterMonitor(MonitorContext ctx) {\r
- MonitorHandler h = session.monitorContexts.getRight(ctx);\r
- if (h == null)\r
- return;\r
- int i = 0;\r
- for (i = 0; i < session.monitorHandlers.length; i++) {\r
- if (h.equals(session.monitorHandlers))\r
- break;\r
- }\r
- if (i < session.monitorHandlers.length) {\r
- MonitorHandler[] newHandlers = new MonitorHandler[session.monitorHandlers.length - 1];\r
- System.arraycopy(session.monitorHandlers, 0, newHandlers, 0, i);\r
- System.arraycopy(session.monitorHandlers, i + 1, newHandlers, i, session.monitorHandlers.length - i - 1);\r
- }\r
- }\r
- \r
-}\r
+package fi.vtt.simantics.procore.internal;
+
+import org.simantics.db.MonitorContext;
+import org.simantics.db.MonitorHandler;
+import org.simantics.db.SessionVariables;
+import org.simantics.db.service.SessionMonitorSupport;
+
+public class SessionMonitorSupportImpl implements SessionMonitorSupport {
+
+ final private SessionImplSocket session;
+
+ SessionMonitorSupportImpl(SessionImplSocket session) {
+ this.session = session;
+ }
+
+ @Override
+ public synchronized MonitorContext registerMonitor(MonitorHandler h) {
+ assert h != null;
+
+ MonitorContext ctx = new MonitorContext() {
+ @Override
+ public int getInteger(String key) {
+ if (SessionVariables.QUEUED_READS.equals(key)) {
+ return session.state.getReadCount();
+ } else if (SessionVariables.QUEUED_WRITES.equals(key)) {
+ return session.state.getWriteCount();
+ }
+ return -1;
+ }
+
+ @Override
+ public String getString(String key) {
+ return null;
+ }
+ };
+ session.monitorContexts.map(ctx, h);
+
+ MonitorHandler[] newHandlers = new MonitorHandler[session.monitorHandlers.length + 1];
+ System.arraycopy(session.monitorHandlers, 0, newHandlers, 0, session.monitorHandlers.length);
+ newHandlers[session.monitorHandlers.length] = h;
+ session.monitorHandlers = newHandlers;
+
+ return ctx;
+ }
+
+ @Override
+ public synchronized void unregisterMonitor(MonitorContext ctx) {
+ MonitorHandler h = session.monitorContexts.getRight(ctx);
+ if (h == null)
+ return;
+ int i = 0;
+ for (i = 0; i < session.monitorHandlers.length; i++) {
+ if (h.equals(session.monitorHandlers[i]))
+ break;
+ }
+ if (i < session.monitorHandlers.length) {
+ MonitorHandler[] newHandlers = new MonitorHandler[session.monitorHandlers.length - 1];
+ System.arraycopy(session.monitorHandlers, 0, newHandlers, 0, i);
+ System.arraycopy(session.monitorHandlers, i + 1, newHandlers, i, session.monitorHandlers.length - i - 1);
+ }
+ }
+
+}