blob: 7c4b8c835424f31fb2807478ab2d25cc07e28a4b [file] [log] [blame]
/*
* Copyright (c) 2010-2013, 2016, 2017, 2020 Eike Stepper (Loehne, 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
* Simon McDuff - maintenance
*/
package org.eclipse.emf.cdo.common.protocol;
import org.eclipse.emf.cdo.common.branch.CDOBranch;
import org.eclipse.emf.cdo.common.branch.CDOBranchPoint;
import org.eclipse.emf.cdo.common.branch.CDOBranchVersion;
import org.eclipse.emf.cdo.common.commit.CDOChangeSetData;
import org.eclipse.emf.cdo.common.commit.CDOCommitData;
import org.eclipse.emf.cdo.common.commit.CDOCommitInfo;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDProvider;
import org.eclipse.emf.cdo.common.id.CDOIDReference;
import org.eclipse.emf.cdo.common.lock.CDOLockChangeInfo;
import org.eclipse.emf.cdo.common.lock.CDOLockOwner;
import org.eclipse.emf.cdo.common.lock.CDOLockState;
import org.eclipse.emf.cdo.common.lock.IDurableLockingManager.LockArea;
import org.eclipse.emf.cdo.common.model.CDOClassifierRef;
import org.eclipse.emf.cdo.common.model.CDOPackageInfo;
import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
import org.eclipse.emf.cdo.common.model.CDOType;
import org.eclipse.emf.cdo.common.revision.CDOIDAndBranch;
import org.eclipse.emf.cdo.common.revision.CDOIDAndVersion;
import org.eclipse.emf.cdo.common.revision.CDOList;
import org.eclipse.emf.cdo.common.revision.CDORevisable;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.CDORevisionKey;
import org.eclipse.emf.cdo.common.revision.delta.CDOFeatureDelta;
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
import org.eclipse.emf.cdo.common.security.CDOPermissionProvider;
import org.eclipse.emf.cdo.spi.common.revision.CDORevisionUnchunker;
import org.eclipse.net4j.util.concurrent.IRWLockManager.LockType;
import org.eclipse.net4j.util.io.ExtendedDataOutput;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EClassifier;
import org.eclipse.emf.ecore.EStructuralFeature;
import java.io.IOException;
import java.util.Set;
/**
* Provides I/O methods for writing various CDO data types and concepts to streams.
*
* @author Eike Stepper
* @since 3.0
* @noextend This interface is not intended to be extended by clients.
* @noimplement This interface is not intended to be implemented by clients.
*/
public interface CDODataOutput extends ExtendedDataOutput
{
/**
* @since 4.6
*/
public void writeXInt(int v) throws IOException;
/**
* @since 4.6
*/
public void writeXLong(long v) throws IOException;
public CDOPackageRegistry getPackageRegistry();
public CDOIDProvider getIDProvider();
/**
* @since 4.1
*/
public CDOPermissionProvider getPermissionProvider();
/**
* @since 4.3
*/
public CDORevisionUnchunker getRevisionUnchunker();
// /////////////////////////////////////////////////////////////////////////////////////////////////
public void writeCDOPackageUnit(CDOPackageUnit packageUnit, boolean withPackages) throws IOException;
public void writeCDOPackageUnits(CDOPackageUnit... packageUnit) throws IOException;
public void writeCDOPackageUnitType(CDOPackageUnit.Type type) throws IOException;
public void writeCDOPackageInfo(CDOPackageInfo packageInfo) throws IOException;
public void writeCDOClassifierRef(CDOClassifierRef eClassifierRef) throws IOException;
public void writeCDOClassifierRef(EClassifier eClassifier) throws IOException;
public void writeCDOPackageURI(String uri) throws IOException;
public void writeCDOType(CDOType cdoType) throws IOException;
// /////////////////////////////////////////////////////////////////////////////////////////////////
public void writeCDOBranch(CDOBranch branch) throws IOException;
public void writeCDOBranchPoint(CDOBranchPoint branchPoint) throws IOException;
public void writeCDOBranchVersion(CDOBranchVersion branchVersion) throws IOException;
public void writeCDOChangeSetData(CDOChangeSetData changeSetData) throws IOException;
public void writeCDOCommitData(CDOCommitData commitData) throws IOException;
public void writeCDOCommitInfo(CDOCommitInfo commitInfo) throws IOException;
// /////////////////////////////////////////////////////////////////////////////////////////////////
public void writeCDOID(CDOID id) throws IOException;
/**
* @since 4.0
*/
public void writeCDOIDReference(CDOIDReference idReference) throws IOException;
/**
* @since 4.0
*/
public void writeCDOIDAndVersion(CDOIDAndVersion idAndVersion) throws IOException;
/**
* @since 4.0
*/
public void writeCDOIDAndBranch(CDOIDAndBranch idAndBranch) throws IOException;
// /////////////////////////////////////////////////////////////////////////////////////////////////
public void writeCDORevisionKey(CDORevisionKey revisionKey) throws IOException;
public void writeCDORevision(CDORevision revision, int referenceChunk) throws IOException;
/**
* @since 4.1
*/
public void writeCDORevision(CDORevision revision, int referenceChunk, CDOBranchPoint securityContext) throws IOException;
/**
* @since 4.0
*/
public void writeCDORevisable(CDORevisable revisable) throws IOException;
public void writeCDOList(EClass owner, EStructuralFeature feature, CDOList list, int referenceChunk) throws IOException;
public void writeCDOFeatureValue(EStructuralFeature feature, Object value) throws IOException;
public void writeCDORevisionDelta(CDORevisionDelta revisionDelta) throws IOException;
public void writeCDOFeatureDelta(EClass owner, CDOFeatureDelta featureDelta) throws IOException;
/**
* Write either a CDORevision or a primitive value.
*/
public void writeCDORevisionOrPrimitive(Object value) throws IOException;
/**
* Write either a CDORevision, a primitive value or a EClass.
*/
public void writeCDORevisionOrPrimitiveOrClassifier(Object value) throws IOException;
// /////////////////////////////////////////////////////////////////////////////////////////////////
public void writeCDOLockType(LockType lockType) throws IOException;
/**
* @since 4.1
*/
public void writeCDOLockChangeInfo(CDOLockChangeInfo lockChangeInfo) throws IOException;
/**
* @since 4.12
*/
public void writeCDOLockChangeInfo(CDOLockChangeInfo lockChangeInfo, Set<CDOID> filter) throws IOException;
/**
* @since 4.1
*/
public void writeCDOLockState(CDOLockState lockState) throws IOException;
/**
* @since 4.1
*/
public void writeCDOLockOwner(CDOLockOwner lockOwner) throws IOException;
/**
* @since 4.1
*/
public void writeCDOLockArea(LockArea lockArea) throws IOException;
}