Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/RecoveringCDOSessionConfigurationImpl.java')
-rw-r--r--plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/RecoveringCDOSessionConfigurationImpl.java102
1 files changed, 102 insertions, 0 deletions
diff --git a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/RecoveringCDOSessionConfigurationImpl.java b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/RecoveringCDOSessionConfigurationImpl.java
new file mode 100644
index 0000000000..fbda8ef635
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/RecoveringCDOSessionConfigurationImpl.java
@@ -0,0 +1,102 @@
+/**
+ * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Caspar De Groot - initial API and implementation
+ */
+package org.eclipse.emf.cdo.internal.net4j;
+
+import org.eclipse.emf.cdo.net4j.RecoveringCDOSessionConfiguration;
+
+import org.eclipse.net4j.util.container.IManagedContainer;
+
+import org.eclipse.emf.spi.cdo.InternalCDOSession;
+
+/**
+ * @author Caspar De Groot
+ */
+public abstract class RecoveringCDOSessionConfigurationImpl extends CDONet4jSessionConfigurationImpl implements
+ RecoveringCDOSessionConfiguration
+{
+ private IManagedContainer container;
+
+ private boolean heartBeatEnabled;
+
+ private long heartBeatPeriod;
+
+ private long heartBeatTimeout;
+
+ private long connectorTimeout;
+
+ public RecoveringCDOSessionConfigurationImpl(IManagedContainer container)
+ {
+ this.container = container;
+ }
+
+ protected IManagedContainer getContainer()
+ {
+ return container;
+ }
+
+ public long getConnectorTimeout()
+ {
+ return connectorTimeout;
+ }
+
+ public void setConnectorTimeout(long timeout)
+ {
+ connectorTimeout = timeout;
+ }
+
+ public boolean isHeartBeatEnabled()
+ {
+ return heartBeatEnabled;
+ }
+
+ public void setHeartBeatEnabled(boolean enabled)
+ {
+ heartBeatEnabled = enabled;
+ }
+
+ public long getHeartBeatTimeout()
+ {
+ return heartBeatTimeout;
+ }
+
+ public void setHeartBeatTimeout(long timeout)
+ {
+ heartBeatTimeout = timeout;
+ }
+
+ public long getHeartBeatPeriod()
+ {
+ return heartBeatPeriod;
+ }
+
+ public void setHeartBeatPeriod(long period)
+ {
+ heartBeatPeriod = period;
+ }
+
+ @Override
+ protected void configureSession(InternalCDOSession session)
+ {
+ super.configureSession(session);
+
+ if (heartBeatEnabled && (heartBeatPeriod == 0 || heartBeatTimeout == 0))
+ {
+ throw new IllegalStateException("Cannot use a heartbeat with zero value set for period or timeout.");
+ }
+
+ RecoveringCDOSessionImpl sessionImpl = (RecoveringCDOSessionImpl)session;
+ sessionImpl.setContainer(getContainer());
+ sessionImpl.setUseHeartBeat(heartBeatEnabled);
+ sessionImpl.setHeartBeatPeriod(heartBeatPeriod);
+ sessionImpl.setHeartBeatTimeout(heartBeatTimeout);
+ sessionImpl.setConnectorTimeout(connectorTimeout);
+ }
+}

Back to the top