Merge remote-tracking branch 'origin/2.1' into 2.1

Conflicts:
	src/main/java/net/openhft/chronicle/map/ReplicatedChronicleMap.java
	src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java
This commit is contained in:
Rob Austin
2015-12-14 11:21:53 +00:00
3 changed files with 14 additions and 32 deletions
@@ -52,7 +52,7 @@ public abstract class BasicCopyingMetaBytesInterop<E, W> implements MetaBytesInt
@Override
public boolean startsWith(W writer, Bytes bytes, E e) {
return bytes.startsWith(buffer.buffer);
return BytesBytesInterop.INSTANCE.startsWith(bytes, buffer.buffer);
}
@Override
@@ -929,12 +929,12 @@ final class ReplicatedChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? supe
throw defaultValueOrPrepareBytesShouldBeSpecified();
}
final long size = metaElemWriter.size(elemWriter, elem);
final long elemSize = metaElemWriter.size(elemWriter, elem);
putValue(pos, entry, valueSizePos,
entryEndAddr, isDeleted,
segmentState,
metaElemWriter, elemWriter, elem, size,
metaElemWriter, elemWriter, elem, elemSize,
hashLookup, sizeOfEverythingBeforeValue);
pos = segmentState.pos;
@@ -943,6 +943,7 @@ final class ReplicatedChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? supe
entry.position(valueSizePos);
long valueSize = readValueSize(entry);
assert valueSize == elemSize;
long valuePos = entry.position();
RV v = readValue.readValue(copies, entry, usingValue, valueSize);
@@ -1154,9 +1155,9 @@ final class ReplicatedChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? supe
}
// put callbacks
boolean hasValueChanged = updateResult != UpdateResult.UNCHANGED;
onPutMaybeRemote(segmentState.pos, false);
if (bytesEventListener != null) {
boolean hasValueChanged = updateResult != UpdateResult.UNCHANGED;
bytesEventListener.onPut(
entry, 0L, metaDataBytes, valueSizePos, false, false,
hasValueChanged,
@@ -1164,7 +1165,6 @@ final class ReplicatedChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? supe
timeStamp, replacedTimestamp);
}
if (eventListener != null) {
boolean hasValueChanged = updateResult != UpdateResult.UNCHANGED;
eventListener.onPut(toKey.toInstance(copies, key, keySize),
toValue.toInstance(copies, value, valueSize), null, false,
isDeleted, hasValueChanged, identifier, replacedIdentifier,
@@ -1207,7 +1207,8 @@ final class ReplicatedChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? supe
long replacedTimestamp = 0;
bytesEventListener.onPut(entry, 0L, metaDataBytes,
segmentState.valueSizePos, true, false, true, identifier, replacedIdentifier, timeStamp, replacedTimestamp);
segmentState.valueSizePos, true, false, true, identifier,
replacedIdentifier, timeStamp, replacedTimestamp);
}
if (eventListener != null) {
byte replacedIdentifier = 0;
@@ -1335,7 +1336,8 @@ final class ReplicatedChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? supe
byte replacedIdentifier = 0;
long replacedTimestamp = 0;
bytesEventListener.onPut(entry, 0L, metaDataBytes,
segmentState.valueSizePos, true, remote, true, identifier, replacedIdentifier, timestamp,
segmentState.valueSizePos, true, remote, true, identifier,
replacedIdentifier, timestamp,
replacedTimestamp);
}
if (eventListener != null) {
@@ -2199,8 +2199,6 @@ class VanillaChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? super KI>,
} else {
long valueAddr = entry.positionAddr();
long entryEndAddr = valueAddr + prevValueSize;
hasValueChanged = prevValueSize != valueSize ||
!metaValueInterop.startsWith(valueInterop, entry, value);
// putValue may relocate entry and change offset
putValue(pos, entry, valueSizePos, entryEndAddr, false, segmentState,
@@ -2211,6 +2209,7 @@ class VanillaChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? super KI>,
}
// put callbacks
boolean hasValueChanged = updateResult != UpdateResult.UNCHANGED;
onPutMaybeRemote(segmentState.pos, false);
if (bytesEventListener != null)
bytesEventListener.onPut(entry, 0L, metaDataBytes, valueSizePos, false,
@@ -2219,7 +2218,6 @@ class VanillaChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? super KI>,
segmentState.timestamp, 0
);
if (eventListener != null) {
eventListener.onPut(toKey.toInstance(copies, key, keySize),
toValue.toInstance(copies, value, valueSize), null, false,
false, hasValueChanged,
@@ -2323,29 +2321,19 @@ class VanillaChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? super KI>,
}
}
// key is not found
VBI valueInterop = getValueInterops.getValueInterop(copies);
MVBI metaValueInterop =
getValueInterops.getMetaValueInterop(copies, valueInterop, value);
long valueSize = putEntry(segmentState, metaKeyInterop, keyInterop, key, keySize,
metaValueInterop, valueInterop, value, entry, false);
boolean hasValueChanged = false;
if (eventListener != null || bytesEventListener != null) {
// todo roman to check this
hasValueChanged =
!metaValueInterop.startsWith(valueInterop, entry, value);
}
// put callbacks
onPut(this, segmentState.pos);
if (bytesEventListener != null)
bytesEventListener.onPut(entry, 0L, metaDataBytes,
segmentState.valueSizePos, true, false, hasValueChanged,
segmentState.valueSizePos, true, false, true,
segmentState.identifier, (byte) 0, segmentState.timestamp, 0);
if (eventListener != null)
eventListener.onPut(toKey.toInstance(copies, key, keySize),
@@ -2411,10 +2399,7 @@ class VanillaChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? super KI>,
// put callbacks
onPutMaybeRemote(segmentState.pos, remote);
if (bytesEventListener != null)
bytesEventListener.onPut(entry, 0L, metaDataBytes, valueSizePos, false, remote,
hasValueChanged,
segmentState.identifier, replacedIdentifier,
segmentState.timestamp, replacedTimestamp);
bytesEventListener.onPut(entry, 0L, metaDataBytes, valueSizePos, false, remote, hasValueChanged);
if (eventListener != null) {
eventListener.onPut(toKey.toInstance(copies, key, keySize),
toValue.toInstance(copies, value, valueSize), prevValueInstance, remote,
@@ -2660,9 +2645,7 @@ class VanillaChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? super KI>,
// remove callbacks
onRemoveMaybeRemote(pos, remote);
if (bytesEventListener != null)
bytesEventListener.onRemove(entry, 0L, metaDataBytes, valueSizePos, remote,
segmentState.identifier, replacedIdentifier,
segmentState.timestamp, replacedTimestamp);
bytesEventListener.onRemove(entry, 0L, metaDataBytes, valueSizePos, remote);
if (eventListener != null) {
V removedValueForEventListener =
toValue.toInstance(copies, removedValue, valueSize);
@@ -2817,10 +2800,7 @@ class VanillaChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? super KI>,
onPut(this, segmentState.pos);
if (bytesEventListener != null) {
long keyPos = metaDataBytes;
bytesEventListener.onPut(entry, 0L, keyPos, segmentState.valueSizePos, true,
false, hasValueChanged,
segmentState.identifier, replacedIdentifier,
segmentState.timestamp, replacedTimestamp);
bytesEventListener.onPut(entry, 0L, keyPos, segmentState.valueSizePos, true, false, hasValueChanged);
}
if (eventListener != null)
eventListener.onPut(toKey.toInstance(copies, key, keySize),