Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2010-04-19 08:30:59 +0000
committerEike Stepper2010-04-19 08:30:59 +0000
commitf3a7fe2a8ba03d08c083f48e451ca50aba0d8180 (patch)
treea88c633f80cca178d27adfe1d7b8c5b86c2d23c6 /plugins
parentcc336965101b9f2bfa2a8f710d6c9ab3a8355a93 (diff)
downloadcdo-f3a7fe2a8ba03d08c083f48e451ca50aba0d8180.tar.gz
cdo-f3a7fe2a8ba03d08c083f48e451ca50aba0d8180.tar.xz
cdo-f3a7fe2a8ba03d08c083f48e451ca50aba0d8180.zip
[256936] Support for Offline Mode
https://bugs.eclipse.org/bugs/show_bug.cgi?id=256936
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/protocol/CDOProtocolConstants.java9
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/CDORawReplicationContext.java24
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/CDOReplicationContext.java6
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/CDOReplicationInfo.java23
-rw-r--r--plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientProtocol.java7
-rw-r--r--plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/ReplicateRepositoryRawRequest.java60
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/mapping/IMappingStrategy.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreAccessor.java23
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractHorizontalMappingStrategy.java17
-rw-r--r--plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreAccessor.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CDOServerProtocol.java3
-rw-r--r--plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/ReplicateRepositoryRawIndication.java48
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java12
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/embedded/EmbeddedClientSessionProtocol.java7
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/mem/MEMStoreAccessor.java6
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/RepositorySynchronizer.java30
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/SynchronizableRepository.java20
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStoreAccessor.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/InternalRepository.java6
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/InternalSynchronizableRepository.java7
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java18
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/CDOSessionProtocol.java9
22 files changed, 314 insertions, 33 deletions
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/protocol/CDOProtocolConstants.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/protocol/CDOProtocolConstants.java
index 4c7c7ca330..1b3ded8a76 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/protocol/CDOProtocolConstants.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/protocol/CDOProtocolConstants.java
@@ -182,12 +182,17 @@ public interface CDOProtocolConstants
/**
* @since 3.0
*/
- public static final short SIGNAL_LOAD_CHANGE_SETS = 42;
+ public static final short SIGNAL_REPLICATE_REPOSITORY_RAW = 42;
/**
* @since 3.0
*/
- public static final short SIGNAL_LOAD_MERGE_DATA = 43;
+ public static final short SIGNAL_LOAD_CHANGE_SETS = 43;
+
+ /**
+ * @since 3.0
+ */
+ public static final short SIGNAL_LOAD_MERGE_DATA = 44;
// //////////////////////////////////////////////////////////////////////
// Session Refresh
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/CDORawReplicationContext.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/CDORawReplicationContext.java
new file mode 100644
index 0000000000..f7e35e4555
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/CDORawReplicationContext.java
@@ -0,0 +1,24 @@
+/**
+ * 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:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.spi.common;
+
+import org.eclipse.emf.cdo.common.protocol.CDODataInput;
+
+import java.io.IOException;
+
+/**
+ * @author Eike Stepper
+ * @since 3.0
+ */
+public interface CDORawReplicationContext extends CDOReplicationInfo
+{
+ public void replicateRaw(CDODataInput in) throws IOException;
+}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/CDOReplicationContext.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/CDOReplicationContext.java
index 3ab7a8e14d..f5cdf25b3a 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/CDOReplicationContext.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/CDOReplicationContext.java
@@ -17,11 +17,7 @@ import org.eclipse.emf.cdo.common.commit.CDOCommitInfoHandler;
* @author Eike Stepper
* @since 3.0
*/
-public interface CDOReplicationContext extends CDOBranchHandler, CDOCommitInfoHandler
+public interface CDOReplicationContext extends CDOReplicationInfo, CDOBranchHandler, CDOCommitInfoHandler
{
- public int getLastReplicatedBranchID();
-
- public long getLastReplicatedCommitTime();
-
public boolean isSqueezeCommitInfos();
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/CDOReplicationInfo.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/CDOReplicationInfo.java
new file mode 100644
index 0000000000..3b92f11473
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/CDOReplicationInfo.java
@@ -0,0 +1,23 @@
+/**
+ * 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:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.spi.common;
+
+
+/**
+ * @author Eike Stepper
+ * @since 3.0
+ */
+public interface CDOReplicationInfo
+{
+ public int getLastReplicatedBranchID();
+
+ public long getLastReplicatedCommitTime();
+}
diff --git a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientProtocol.java b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientProtocol.java
index fb1429d138..2cdd3bf17f 100644
--- a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientProtocol.java
+++ b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientProtocol.java
@@ -29,7 +29,9 @@ import org.eclipse.emf.cdo.internal.net4j.bundle.OM;
import org.eclipse.emf.cdo.session.CDOSession;
import org.eclipse.emf.cdo.session.remote.CDORemoteSession;
import org.eclipse.emf.cdo.session.remote.CDORemoteSessionMessage;
+import org.eclipse.emf.cdo.spi.common.CDORawReplicationContext;
import org.eclipse.emf.cdo.spi.common.CDOReplicationContext;
+import org.eclipse.emf.cdo.spi.common.CDOReplicationInfo;
import org.eclipse.emf.cdo.spi.common.commit.CDORevisionAvailabilityInfo;
import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
@@ -304,6 +306,11 @@ public class CDOClientProtocol extends SignalProtocol<CDOSession> implements CDO
send(new ReplicateRepositoryRequest(this, context));
}
+ public CDOReplicationInfo replicateRepositoryRaw(CDORawReplicationContext context)
+ {
+ return send(new ReplicateRepositoryRawRequest(this, context));
+ }
+
public CDOChangeSetData[] loadChangeSets(CDOBranchPointRange... ranges)
{
return send(new LoadChangeSetsRequest(this, ranges));
diff --git a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/ReplicateRepositoryRawRequest.java b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/ReplicateRepositoryRawRequest.java
new file mode 100644
index 0000000000..2c41035f9b
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/ReplicateRepositoryRawRequest.java
@@ -0,0 +1,60 @@
+/***************************************************************************
+ * 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:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.emf.cdo.internal.net4j.protocol;
+
+import org.eclipse.emf.cdo.common.protocol.CDODataInput;
+import org.eclipse.emf.cdo.common.protocol.CDODataOutput;
+import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
+import org.eclipse.emf.cdo.spi.common.CDORawReplicationContext;
+import org.eclipse.emf.cdo.spi.common.CDOReplicationInfo;
+
+import java.io.IOException;
+
+/**
+ * @author Eike Stepper
+ */
+public class ReplicateRepositoryRawRequest extends CDOClientRequest<CDOReplicationInfo>
+{
+ private CDORawReplicationContext context;
+
+ public ReplicateRepositoryRawRequest(CDOClientProtocol protocol, CDORawReplicationContext context)
+ {
+ super(protocol, CDOProtocolConstants.SIGNAL_REPLICATE_REPOSITORY_RAW);
+ this.context = context;
+ }
+
+ @Override
+ protected void requesting(CDODataOutput out) throws IOException
+ {
+ out.writeInt(context.getLastReplicatedBranchID());
+ out.writeLong(context.getLastReplicatedCommitTime());
+ }
+
+ @Override
+ protected CDOReplicationInfo confirming(CDODataInput in) throws IOException
+ {
+ context.replicateRaw(in);
+ final int lastBranchID = in.readInt();
+ final long lastCommitTime = in.readLong();
+ return new CDOReplicationInfo()
+ {
+ public int getLastReplicatedBranchID()
+ {
+ return lastBranchID;
+ }
+
+ public long getLastReplicatedCommitTime()
+ {
+ return lastCommitTime;
+ }
+ };
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/mapping/IMappingStrategy.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/mapping/IMappingStrategy.java
index fc94e17d2f..26610822de 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/mapping/IMappingStrategy.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/mapping/IMappingStrategy.java
@@ -274,8 +274,8 @@ public interface IMappingStrategy
/**
* @since 3.0
*/
- public void rawExport(IDBStoreAccessor accessor, CDODataOutput out, long startTime, long endTime)
- throws IOException;
+ public void rawExport(IDBStoreAccessor accessor, CDODataOutput out, int lastReplicatedBranchID, int lastBranchID,
+ long lastReplicatedCommitTime, long lastCommitTime) throws IOException;
/**
* @since 3.0
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreAccessor.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreAccessor.java
index 584c09be10..8f5b2c1f15 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreAccessor.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreAccessor.java
@@ -44,6 +44,7 @@ import org.eclipse.emf.cdo.server.db.mapping.IClassMappingAuditSupport;
import org.eclipse.emf.cdo.server.db.mapping.IClassMappingDeltaSupport;
import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
import org.eclipse.emf.cdo.server.internal.db.bundle.OM;
+import org.eclipse.emf.cdo.spi.common.CDOReplicationInfo;
import org.eclipse.emf.cdo.spi.common.branch.InternalCDOBranch;
import org.eclipse.emf.cdo.spi.common.branch.InternalCDOBranchManager;
import org.eclipse.emf.cdo.spi.common.commit.CDOChangeSetSegment;
@@ -815,10 +816,28 @@ public class DBStoreAccessor extends LongIDStoreAccessor implements IDBStoreAcce
mappingStrategy.handleRevisions(this, eClass, branch, timeStamp, new DBRevisionHandler(handler));
}
- public void rawExport(CDODataOutput out, long startTime, long endTime) throws IOException
+ public CDOReplicationInfo rawExport(CDODataOutput out, int lastReplicatedBranchID, long lastReplicatedCommitTime)
+ throws IOException
{
+ final int lastBranchID = getStore().getLastBranchID();
+ final long lastCommitTime = getStore().getLastCommitTime();
+
IMappingStrategy mappingStrategy = getStore().getMappingStrategy();
- mappingStrategy.rawExport(this, out, startTime, endTime);
+ mappingStrategy
+ .rawExport(this, out, lastReplicatedBranchID, lastBranchID, lastReplicatedCommitTime, lastCommitTime);
+
+ return new CDOReplicationInfo()
+ {
+ public int getLastReplicatedBranchID()
+ {
+ return lastBranchID;
+ }
+
+ public long getLastReplicatedCommitTime()
+ {
+ return lastCommitTime;
+ }
+ };
}
public void rawImport(CDODataInput in) throws IOException
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractHorizontalMappingStrategy.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractHorizontalMappingStrategy.java
index b251839d7e..36ac6a8ac6 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractHorizontalMappingStrategy.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractHorizontalMappingStrategy.java
@@ -105,16 +105,18 @@ public abstract class AbstractHorizontalMappingStrategy extends AbstractMappingS
}
}
- public void rawExport(IDBStoreAccessor accessor, CDODataOutput out, long startTime, long endTime) throws IOException
+ public void rawExport(IDBStoreAccessor accessor, CDODataOutput out, int lastReplicatedBranchID, int lastBranchID,
+ long lastReplicatedCommitTime, long lastCommitTime) throws IOException
{
StringBuilder builder = new StringBuilder();
builder.append(" WHERE "); //$NON-NLS-1$
+ builder.append(lastReplicatedCommitTime);
+ builder.append("<"); //$NON-NLS-1$
builder.append(CDODBSchema.ATTRIBUTES_CREATED);
- builder.append("<=? AND ("); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
- builder.append("=0 OR "); //$NON-NLS-1$
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
- builder.append(">=?))"); //$NON-NLS-1$
+ builder.append(" AND "); //$NON-NLS-1$
+ builder.append(CDODBSchema.ATTRIBUTES_CREATED);
+ builder.append("<="); //$NON-NLS-1$
+ builder.append(lastCommitTime);
String attrSuffix = builder.toString();
Connection connection = accessor.getConnection();
@@ -169,8 +171,7 @@ public abstract class AbstractHorizontalMappingStrategy extends AbstractMappingS
}
}
- protected void rawImportList(CDODataInput in, Connection connection, IListMapping listMapping)
- throws IOException
+ protected void rawImportList(CDODataInput in, Connection connection, IListMapping listMapping) throws IOException
{
for (IDBTable table : listMapping.getDBTables())
{
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreAccessor.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreAccessor.java
index 7fc42eb492..d6923cd9a3 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreAccessor.java
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreAccessor.java
@@ -33,6 +33,7 @@ import org.eclipse.emf.cdo.server.ITransaction;
import org.eclipse.emf.cdo.server.hibernate.IHibernateStoreAccessor;
import org.eclipse.emf.cdo.server.internal.hibernate.bundle.OM;
import org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.PersistableListHolder;
+import org.eclipse.emf.cdo.spi.common.CDOReplicationInfo;
import org.eclipse.emf.cdo.spi.common.commit.CDOChangeSetSegment;
import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit;
import org.eclipse.emf.cdo.spi.common.revision.DetachedCDORevision;
@@ -695,7 +696,8 @@ public class HibernateStoreAccessor extends StoreAccessor implements IHibernateS
throw new UnsupportedOperationException();
}
- public void rawExport(CDODataOutput out, long startTime, long endTime) throws IOException
+ public CDOReplicationInfo rawExport(CDODataOutput out, int lastReplicatedBranchID, long lastReplicatedCommitTime)
+ throws IOException
{
throw new UnsupportedOperationException();
}
diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CDOServerProtocol.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CDOServerProtocol.java
index 6e5b6e6202..7669b0131b 100644
--- a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CDOServerProtocol.java
+++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CDOServerProtocol.java
@@ -266,6 +266,9 @@ public class CDOServerProtocol extends SignalProtocol<InternalSession> implement
case CDOProtocolConstants.SIGNAL_REPLICATE_REPOSITORY:
return new ReplicateRepositoryIndication(this);
+ case CDOProtocolConstants.SIGNAL_REPLICATE_REPOSITORY_RAW:
+ return new ReplicateRepositoryRawIndication(this);
+
case CDOProtocolConstants.SIGNAL_LOAD_CHANGE_SETS:
return new LoadChangeSetsIndication(this);
diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/ReplicateRepositoryRawIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/ReplicateRepositoryRawIndication.java
new file mode 100644
index 0000000000..f3c9af28c0
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/ReplicateRepositoryRawIndication.java
@@ -0,0 +1,48 @@
+/**
+ * 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:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.server.internal.net4j.protocol;
+
+import org.eclipse.emf.cdo.common.protocol.CDODataInput;
+import org.eclipse.emf.cdo.common.protocol.CDODataOutput;
+import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
+import org.eclipse.emf.cdo.spi.common.CDOReplicationInfo;
+
+import java.io.IOException;
+
+/**
+ * @author Eike Stepper
+ */
+public class ReplicateRepositoryRawIndication extends CDOReadIndication
+{
+ private int lastReplicatedBranchID;
+
+ private long lastReplicatedCommitTime;
+
+ public ReplicateRepositoryRawIndication(CDOServerProtocol protocol)
+ {
+ super(protocol, CDOProtocolConstants.SIGNAL_REPLICATE_REPOSITORY_RAW);
+ }
+
+ @Override
+ protected void indicating(CDODataInput in) throws IOException
+ {
+ lastReplicatedBranchID = in.readInt();
+ lastReplicatedCommitTime = in.readLong();
+ }
+
+ @Override
+ protected void responding(CDODataOutput out) throws IOException
+ {
+ CDOReplicationInfo info = getRepository().replicateRaw(out, lastReplicatedBranchID, lastReplicatedCommitTime);
+ out.writeInt(info.getLastReplicatedBranchID());
+ out.writeLong(info.getLastReplicatedCommitTime());
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java
index 9e01bddfd9..a00a33a640 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java
@@ -31,6 +31,7 @@ import org.eclipse.emf.cdo.common.id.CDOIDUtil;
import org.eclipse.emf.cdo.common.model.CDOModelUtil;
import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
import org.eclipse.emf.cdo.common.model.EMFUtil;
+import org.eclipse.emf.cdo.common.protocol.CDODataOutput;
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.CDORevisionKey;
@@ -54,6 +55,7 @@ import org.eclipse.emf.cdo.server.IStoreChunkReader.Chunk;
import org.eclipse.emf.cdo.server.ITransaction;
import org.eclipse.emf.cdo.server.StoreThreadLocal;
import org.eclipse.emf.cdo.spi.common.CDOReplicationContext;
+import org.eclipse.emf.cdo.spi.common.CDOReplicationInfo;
import org.eclipse.emf.cdo.spi.common.branch.CDOBranchUtil;
import org.eclipse.emf.cdo.spi.common.branch.InternalCDOBranch;
import org.eclipse.emf.cdo.spi.common.branch.InternalCDOBranchManager;
@@ -96,6 +98,7 @@ import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.EcorePackage;
+import java.io.IOException;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
@@ -248,7 +251,7 @@ public class Repository extends Container<Object> implements InternalRepository
protected void changingState(State oldState, State newState)
{
- this.state = newState;
+ state = newState;
fireEvent(new RepositoryStateChangedEvent(this, oldState, newState));
if (sessionManager != null)
@@ -1004,6 +1007,13 @@ public class Repository extends Container<Object> implements InternalRepository
}
}
+ public CDOReplicationInfo replicateRaw(CDODataOutput out, int lastReplicatedBranchID, long lastReplicatedCommitTime)
+ throws IOException
+ {
+ IStoreAccessor accessor = StoreThreadLocal.getAccessor();
+ return accessor.rawExport(out, lastReplicatedBranchID, lastReplicatedCommitTime);
+ }
+
public void replicate(CDOReplicationContext context)
{
int startID = context.getLastReplicatedBranchID() + 1;
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/embedded/EmbeddedClientSessionProtocol.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/embedded/EmbeddedClientSessionProtocol.java
index c3199edf5d..b0eb99ab63 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/embedded/EmbeddedClientSessionProtocol.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/embedded/EmbeddedClientSessionProtocol.java
@@ -31,7 +31,9 @@ import org.eclipse.emf.cdo.common.util.CDOQueryQueue;
import org.eclipse.emf.cdo.server.StoreThreadLocal;
import org.eclipse.emf.cdo.session.remote.CDORemoteSession;
import org.eclipse.emf.cdo.session.remote.CDORemoteSessionMessage;
+import org.eclipse.emf.cdo.spi.common.CDORawReplicationContext;
import org.eclipse.emf.cdo.spi.common.CDOReplicationContext;
+import org.eclipse.emf.cdo.spi.common.CDOReplicationInfo;
import org.eclipse.emf.cdo.spi.common.commit.CDORevisionAvailabilityInfo;
import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
@@ -423,6 +425,11 @@ public class EmbeddedClientSessionProtocol extends Lifecycle implements CDOSessi
throw new UnsupportedOperationException();
}
+ public CDOReplicationInfo replicateRepositoryRaw(CDORawReplicationContext context)
+ {
+ throw new UnsupportedOperationException();
+ }
+
public CDOChangeSetData[] loadChangeSets(CDOBranchPointRange... ranges)
{
throw new UnsupportedOperationException();
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/mem/MEMStoreAccessor.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/mem/MEMStoreAccessor.java
index 27b1ec220e..fbd7a1e242 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/mem/MEMStoreAccessor.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/mem/MEMStoreAccessor.java
@@ -27,6 +27,7 @@ import org.eclipse.emf.cdo.server.IQueryContext;
import org.eclipse.emf.cdo.server.IQueryHandler;
import org.eclipse.emf.cdo.server.ISession;
import org.eclipse.emf.cdo.server.ITransaction;
+import org.eclipse.emf.cdo.spi.common.CDOReplicationInfo;
import org.eclipse.emf.cdo.spi.common.commit.CDOChangeSetSegment;
import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
@@ -334,9 +335,10 @@ public class MEMStoreAccessor extends LongIDStoreAccessor
return null;
}
- public void rawExport(CDODataOutput out, long startTime, long endTime) throws IOException
+ public CDOReplicationInfo rawExport(CDODataOutput out, int lastReplicatedBranchID, long lastReplicatedCommitTime)
+ throws IOException
{
- // TODO: implement MEMStoreAccessor.rawExport(out, startTime, endTime)
+ // TODO: implement MEMStoreAccessor.rawExport(out, lastReplicatedBranchID, lastReplicatedCommitTime)
throw new UnsupportedOperationException();
}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/RepositorySynchronizer.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/RepositorySynchronizer.java
index ece52abff2..f7969209fa 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/RepositorySynchronizer.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/RepositorySynchronizer.java
@@ -21,6 +21,7 @@ import org.eclipse.emf.cdo.internal.server.bundle.OM;
import org.eclipse.emf.cdo.session.CDOSessionConfiguration;
import org.eclipse.emf.cdo.session.CDOSessionConfigurationFactory;
import org.eclipse.emf.cdo.session.CDOSessionInvalidationEvent;
+import org.eclipse.emf.cdo.spi.common.CDOReplicationInfo;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevisionCache;
import org.eclipse.emf.cdo.spi.server.InternalRepositorySynchronizer;
import org.eclipse.emf.cdo.spi.server.InternalSynchronizableRepository;
@@ -50,7 +51,7 @@ public class RepositorySynchronizer extends QueueRunner implements InternalRepos
private static final Integer CONNECT_PRIORITY = 0;
- private static final Integer SYNC_PRIORITY = 1;
+ private static final Integer REPLICATE_PRIORITY = 1;
private static final Integer BRANCH_PRIORITY = 2;
@@ -68,6 +69,8 @@ public class RepositorySynchronizer extends QueueRunner implements InternalRepos
private CDOSessionConfigurationFactory remoteSessionConfigurationFactory;
+ private boolean rawReplication;
+
private boolean squeezeCommitInfos;
public RepositorySynchronizer()
@@ -111,6 +114,17 @@ public class RepositorySynchronizer extends QueueRunner implements InternalRepos
return remoteSession;
}
+ protected boolean isRawReplication()
+ {
+ return rawReplication;
+ }
+
+ protected void setRawReplication(boolean rawReplication)
+ {
+ checkInactive();
+ this.rawReplication = rawReplication;
+ }
+
public boolean isSqueezeCommitInfos()
{
return squeezeCommitInfos;
@@ -118,6 +132,7 @@ public class RepositorySynchronizer extends QueueRunner implements InternalRepos
public void setSqueezeCommitInfos(boolean squeezeCommitInfos)
{
+ checkInactive();
this.squeezeCommitInfos = squeezeCommitInfos;
}
@@ -372,7 +387,16 @@ public class RepositorySynchronizer extends QueueRunner implements InternalRepos
localRepository.setState(CDOCommonRepository.State.SYNCING);
CDOSessionProtocol sessionProtocol = remoteSession.getSessionProtocol();
- sessionProtocol.replicateRepository(localRepository);
+ if (isRawReplication())
+ {
+ CDOReplicationInfo result = sessionProtocol.replicateRepositoryRaw(localRepository);
+ localRepository.setLastReplicatedBranchID(result.getLastReplicatedBranchID());
+ localRepository.setLastReplicatedCommitTime(result.getLastReplicatedCommitTime());
+ }
+ else
+ {
+ sessionProtocol.replicateRepository(localRepository);
+ }
localRepository.setState(CDOCommonRepository.State.ONLINE);
OM.LOG.info("Synchronized with master.");
@@ -381,7 +405,7 @@ public class RepositorySynchronizer extends QueueRunner implements InternalRepos
@Override
protected Integer getPriority()
{
- return SYNC_PRIORITY;
+ return REPLICATE_PRIORITY;
}
}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/SynchronizableRepository.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/SynchronizableRepository.java
index 41db1a9fe8..d7bc8581bf 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/SynchronizableRepository.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/SynchronizableRepository.java
@@ -14,6 +14,7 @@ import org.eclipse.emf.cdo.common.CDOCommonRepository;
import org.eclipse.emf.cdo.common.branch.CDOBranch;
import org.eclipse.emf.cdo.common.branch.CDOBranchPoint;
import org.eclipse.emf.cdo.common.commit.CDOCommitInfo;
+import org.eclipse.emf.cdo.common.protocol.CDODataInput;
import org.eclipse.emf.cdo.internal.server.Repository;
import org.eclipse.emf.cdo.spi.common.branch.InternalCDOBranch;
import org.eclipse.emf.cdo.spi.common.branch.InternalCDOBranchManager;
@@ -26,6 +27,7 @@ import org.eclipse.emf.cdo.spi.server.InternalTransaction;
import org.eclipse.net4j.util.om.monitor.Monitor;
+import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
@@ -111,9 +113,12 @@ public abstract class SynchronizableRepository extends Repository.Default implem
return lastReplicatedBranchID;
}
- protected void setLastReplicatedBranchID(int lastReplicatedBranchID)
+ public void setLastReplicatedBranchID(int lastReplicatedBranchID)
{
- this.lastReplicatedBranchID = lastReplicatedBranchID;
+ if (this.lastReplicatedBranchID < lastReplicatedBranchID)
+ {
+ this.lastReplicatedBranchID = lastReplicatedBranchID;
+ }
}
public long getLastReplicatedCommitTime()
@@ -121,9 +126,12 @@ public abstract class SynchronizableRepository extends Repository.Default implem
return lastReplicatedCommitTime;
}
- protected void setLastReplicatedCommitTime(long lastReplicatedCommitTime)
+ public void setLastReplicatedCommitTime(long lastReplicatedCommitTime)
{
- this.lastReplicatedCommitTime = lastReplicatedCommitTime;
+ if (this.lastReplicatedCommitTime < lastReplicatedCommitTime)
+ {
+ this.lastReplicatedCommitTime = lastReplicatedCommitTime;
+ }
}
public boolean isSqueezeCommitInfos()
@@ -183,6 +191,10 @@ public abstract class SynchronizableRepository extends Repository.Default implem
}
}
+ public void replicateRaw(CDODataInput in) throws IOException
+ {
+ }
+
@Override
public abstract InternalCommitContext createCommitContext(InternalTransaction transaction);
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStoreAccessor.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStoreAccessor.java
index 88aa707ddd..78eb0aa037 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStoreAccessor.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStoreAccessor.java
@@ -20,6 +20,7 @@ import org.eclipse.emf.cdo.common.protocol.CDODataOutput;
import org.eclipse.emf.cdo.common.revision.CDORevisionHandler;
import org.eclipse.emf.cdo.common.revision.cache.CDORevisionCacheAdder;
import org.eclipse.emf.cdo.common.util.CDOQueryInfo;
+import org.eclipse.emf.cdo.spi.common.CDOReplicationInfo;
import org.eclipse.emf.cdo.spi.common.branch.InternalCDOBranchManager.BranchLoader;
import org.eclipse.emf.cdo.spi.common.commit.CDOChangeSetSegment;
import org.eclipse.emf.cdo.spi.common.commit.InternalCDOCommitInfoManager.CommitInfoLoader;
@@ -194,7 +195,8 @@ public interface IStoreAccessor extends IQueryHandlerProvider, BranchLoader, Com
/**
* @since 3.0
*/
- public void rawExport(CDODataOutput out, long startTime, long endTime) throws IOException;
+ public CDOReplicationInfo rawExport(CDODataOutput out, int lastReplicatedBranchID, long lastReplicatedCommitTime)
+ throws IOException;
/**
* @since 3.0
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/InternalRepository.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/InternalRepository.java
index 4652b30497..34a69726ed 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/InternalRepository.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/InternalRepository.java
@@ -14,12 +14,14 @@ import org.eclipse.emf.cdo.common.branch.CDOBranch;
import org.eclipse.emf.cdo.common.branch.CDOBranchPoint;
import org.eclipse.emf.cdo.common.commit.CDOChangeSetData;
import org.eclipse.emf.cdo.common.id.CDOID;
+import org.eclipse.emf.cdo.common.protocol.CDODataOutput;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.server.IQueryHandlerProvider;
import org.eclipse.emf.cdo.server.IRepository;
import org.eclipse.emf.cdo.server.IStoreAccessor;
import org.eclipse.emf.cdo.server.ITransaction;
import org.eclipse.emf.cdo.spi.common.CDOReplicationContext;
+import org.eclipse.emf.cdo.spi.common.CDOReplicationInfo;
import org.eclipse.emf.cdo.spi.common.branch.InternalCDOBranchManager;
import org.eclipse.emf.cdo.spi.common.branch.InternalCDOBranchManager.BranchLoader;
import org.eclipse.emf.cdo.spi.common.commit.CDORevisionAvailabilityInfo;
@@ -35,6 +37,7 @@ import org.eclipse.net4j.util.om.monitor.OMMonitor;
import org.eclipse.emf.ecore.EStructuralFeature;
+import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -104,6 +107,9 @@ public interface InternalRepository extends IRepository, PackageLoader, BranchLo
public void replicate(CDOReplicationContext context);
+ public CDOReplicationInfo replicateRaw(CDODataOutput out, int lastReplicatedBranchID, long lastReplicatedCommitTime)
+ throws IOException;
+
public CDOChangeSetData getChangeSet(CDOBranchPoint startPoint, CDOBranchPoint endPoint);
public Set<CDOID> getMergeData(CDORevisionAvailabilityInfo ancestorInfo, CDORevisionAvailabilityInfo targetInfo,
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/InternalSynchronizableRepository.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/InternalSynchronizableRepository.java
index 77428cd269..51d2d3d24f 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/InternalSynchronizableRepository.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/InternalSynchronizableRepository.java
@@ -11,6 +11,7 @@
package org.eclipse.emf.cdo.spi.server;
import org.eclipse.emf.cdo.server.ISynchronizableRepository;
+import org.eclipse.emf.cdo.spi.common.CDORawReplicationContext;
import org.eclipse.emf.cdo.spi.common.CDOReplicationContext;
/**
@@ -18,7 +19,7 @@ import org.eclipse.emf.cdo.spi.common.CDOReplicationContext;
* @since 3.0
*/
public interface InternalSynchronizableRepository extends ISynchronizableRepository, InternalRepository,
- CDOReplicationContext
+ CDOReplicationContext, CDORawReplicationContext
{
public InternalRepositorySynchronizer getSynchronizer();
@@ -27,4 +28,8 @@ public interface InternalSynchronizableRepository extends ISynchronizableReposit
public InternalSession getReplicatorSession();
public boolean isSqueezeCommitInfos();
+
+ public void setLastReplicatedBranchID(int lastReplicatedBranchID);
+
+ public void setLastReplicatedCommitTime(long lastReplicatedCommitTime);
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java
index e0c420ba89..6b0f847fa1 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java
@@ -45,7 +45,9 @@ import org.eclipse.emf.cdo.session.CDOSession;
import org.eclipse.emf.cdo.session.CDOSessionInvalidationEvent;
import org.eclipse.emf.cdo.session.remote.CDORemoteSession;
import org.eclipse.emf.cdo.session.remote.CDORemoteSessionMessage;
+import org.eclipse.emf.cdo.spi.common.CDORawReplicationContext;
import org.eclipse.emf.cdo.spi.common.CDOReplicationContext;
+import org.eclipse.emf.cdo.spi.common.CDOReplicationInfo;
import org.eclipse.emf.cdo.spi.common.branch.InternalCDOBranch;
import org.eclipse.emf.cdo.spi.common.commit.CDORevisionAvailabilityInfo;
import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry;
@@ -1885,6 +1887,22 @@ public abstract class CDOSessionImpl extends Container<CDOView> implements Inter
}
}
+ public CDOReplicationInfo replicateRepositoryRaw(CDORawReplicationContext context)
+ {
+ int attempt = 0;
+ for (;;)
+ {
+ try
+ {
+ return delegate.replicateRepositoryRaw(context);
+ }
+ catch (Exception ex)
+ {
+ handleException(++attempt, ex);
+ }
+ }
+ }
+
public CDOChangeSetData[] loadChangeSets(CDOBranchPointRange... ranges)
{
int attempt = 0;
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/CDOSessionProtocol.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/CDOSessionProtocol.java
index e19c02bc3d..69815ab960 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/CDOSessionProtocol.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/CDOSessionProtocol.java
@@ -28,12 +28,14 @@ import org.eclipse.emf.cdo.common.revision.CDORevisionKey;
import org.eclipse.emf.cdo.common.util.CDOCommonUtil;
import org.eclipse.emf.cdo.session.remote.CDORemoteSession;
import org.eclipse.emf.cdo.session.remote.CDORemoteSessionMessage;
+import org.eclipse.emf.cdo.spi.common.CDORawReplicationContext;
import org.eclipse.emf.cdo.spi.common.CDOReplicationContext;
+import org.eclipse.emf.cdo.spi.common.CDOReplicationInfo;
import org.eclipse.emf.cdo.spi.common.branch.InternalCDOBranchManager.BranchLoader;
import org.eclipse.emf.cdo.spi.common.commit.CDORevisionAvailabilityInfo;
import org.eclipse.emf.cdo.spi.common.commit.InternalCDOCommitInfoManager.CommitInfoLoader;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit;
import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry.PackageLoader;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit;
import org.eclipse.emf.cdo.spi.common.revision.CDOIDMapper;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevisionManager.RevisionLoader;
@@ -183,6 +185,11 @@ public interface CDOSessionProtocol extends CDOProtocol, PackageLoader, BranchLo
/**
* @since 3.0
*/
+ public CDOReplicationInfo replicateRepositoryRaw(CDORawReplicationContext context);
+
+ /**
+ * @since 3.0
+ */
public CDOChangeSetData[] loadChangeSets(CDOBranchPointRange... ranges);
/**

Back to the top