blob: 28864f8dbcaedb86a9cfb9a00682baf8e2590cbc [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.ignite.internal.processors.cache.mvcc;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.KeyCacheObject;
import org.apache.ignite.internal.processors.cache.version.GridCacheRawVersionedEntry;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.jetbrains.annotations.Nullable;
/**
* Holder for the enlisted entries data.
*/
public class MvccTxEntry {
/** */
private KeyCacheObject key;
/** */
private CacheObject val;
/** */
private int cacheId;
/** */
private GridCacheVersion ver;
/** */
private CacheObject oldVal;
/** */
private boolean primary;
/** */
private AffinityTopologyVersion topVer;
/** */
private MvccVersion mvccVer;
/** */
private long ttl;
/** */
private long expireTime;
/** */
private long updCntr;
/**
* @param key Key.
* @param val New value.
* @param ttl Time to live.
* @param expireTime Expire time.
* @param ver Tx grig cache version.
* @param oldVal Old value.
* @param primary {@code True} if this is a primary node.
* @param topVer Topology version.
* @param mvccVer Mvcc version.
* @param cacheId Cache id.
*/
public MvccTxEntry(KeyCacheObject key,
@Nullable CacheObject val,
long ttl,
long expireTime,
GridCacheVersion ver,
CacheObject oldVal,
boolean primary,
AffinityTopologyVersion topVer,
MvccVersion mvccVer,
int cacheId) {
assert key != null;
assert mvccVer != null;
this.key = key;
this.val = val;
this.ttl = ttl;
this.expireTime = expireTime;
this.ver = ver;
this.oldVal = oldVal;
this.primary = primary;
this.topVer = topVer;
this.mvccVer = mvccVer;
this.cacheId = cacheId;
}
/**
* @return Versioned entry (for DR).
*/
public GridCacheRawVersionedEntry versionedEntry() {
return new GridCacheRawVersionedEntry(key, val, ttl, expireTime, ver);
}
/**
* @return Key.
*/
public KeyCacheObject key() {
return key;
}
/**
* @return Value.
*/
public CacheObject value() {
return val;
}
/**
* @return Time to live.
*/
public long ttl() {
return ttl;
}
/**
* @return Expire time.
*/
public long expireTime() {
return expireTime;
}
/**
* @return Version.
*/
public GridCacheVersion version() {
return ver;
}
/**
* @return Old value.
*/
public CacheObject oldValue() {
return oldVal;
}
/**
* @param oldVal Old value.
*/
public void oldValue(CacheObject oldVal) {
this.oldVal = oldVal;
}
/**
* @return {@code True} if this entry is created on a primary node.
*/
public boolean isPrimary() {
return primary;
}
/**
* @return Topology version.
*/
public AffinityTopologyVersion topologyVersion() {
return topVer;
}
/**
* @return Mvcc version.
*/
public MvccVersion mvccVersion() {
return mvccVer;
}
/**
* @return Cache id.
*/
public int cacheId() {
return cacheId;
}
/**
* @return Update counter.
*/
public long updateCounter() {
return updCntr;
}
/**
* @param updCntr Update counter.
*/
public void updateCounter(long updCntr) {
this.updCntr = updCntr;
}
/** {@inheritDoc} */
@Override public String toString() {
return S.toString(MvccTxEntry.class, this);
}
}