From 07333660d0fdb02b56b020d098f39749789646c0 Mon Sep 17 00:00:00 2001 From: leventov Date: Wed, 28 Jan 2015 11:43:50 +0700 Subject: [PATCH] HCOLL-286 HCOLL-292 added replicationEvent flag to event callbacks --- .../chronicle/map/BytesMapEventListener.java | 6 +++-- .../chronicle/map/MapEventListener.java | 18 +++++++------- .../chronicle/map/ReplicatedChronicleMap.java | 8 +++---- .../map/ReplicationHubFindByName.java | 4 ++-- .../chronicle/map/VanillaChronicleMap.java | 24 +++++++++---------- .../chronicle/map/CHMMetaDataTest.java | 4 ++-- ...tListenerWithTCPSocketReplicationTest.java | 4 ++-- 7 files changed, 35 insertions(+), 33 deletions(-) diff --git a/src/main/java/net/openhft/chronicle/map/BytesMapEventListener.java b/src/main/java/net/openhft/chronicle/map/BytesMapEventListener.java index 745221023..4fac85ad7 100644 --- a/src/main/java/net/openhft/chronicle/map/BytesMapEventListener.java +++ b/src/main/java/net/openhft/chronicle/map/BytesMapEventListener.java @@ -44,11 +44,13 @@ public abstract class BytesMapEventListener implements Serializable { // do nothing } - public void onPut(Bytes entry, long metaDataPos, long keyPos, long valuePos, boolean added) { + public void onPut(Bytes entry, long metaDataPos, long keyPos, long valuePos, boolean added, + boolean replicationEvent) { // do nothing } - public void onRemove(Bytes entry, long metaDataPos, long keyPos, long valuePos) { + public void onRemove(Bytes entry, long metaDataPos, long keyPos, long valuePos, + boolean replicationEvent) { // do nothing } } diff --git a/src/main/java/net/openhft/chronicle/map/MapEventListener.java b/src/main/java/net/openhft/chronicle/map/MapEventListener.java index 8535d1b29..bccf3eec0 100644 --- a/src/main/java/net/openhft/chronicle/map/MapEventListener.java +++ b/src/main/java/net/openhft/chronicle/map/MapEventListener.java @@ -81,12 +81,12 @@ public abstract class MapEventListener implements Serializable { } @Override - public void onPut(Object key, Object value, Object replacedValue) { + public void onPut(Object key, Object value, Object replacedValue, boolean replicationEvent) { LOGGER.info("{} put {} => {}", prefix, key, value); } @Override - public void onRemove(Object key, Object value) { + public void onRemove(Object key, Object value, boolean replicationEvent) { LOGGER.info("{} remove {} was {}", prefix, key, value); } } @@ -112,24 +112,24 @@ public abstract class MapEventListener implements Serializable { * as well. * *

This method is called when put is already happened. - * - * @param key the key the given value is put for + * @param key the key the given value is put for * @param newValue the value which is now associated with the given key * @param replacedValue the value which was replaced by {@code newValue}, {@code null} if the - * key was absent in the map before current {@code ChronicleMap} + * key was absent in the map before current {@code ChronicleMap} + * @param replicationEvent */ - public void onPut(K key, V newValue, @Nullable V replacedValue) { + public void onPut(K key, V newValue, @Nullable V replacedValue, boolean replicationEvent) { // do nothing } /** * This is called when an entry is removed. Misses, i. e. when {@code map.remove(key)} is * called, but key is already absent in the map, are not notified. - * - * @param key the key removed from the map + * @param key the key removed from the map * @param value the value which was associated with the given key + * @param replicationEvent */ - public void onRemove(K key, V value) { + public void onRemove(K key, V value, boolean replicationEvent) { // do nothing } } diff --git a/src/main/java/net/openhft/chronicle/map/ReplicatedChronicleMap.java b/src/main/java/net/openhft/chronicle/map/ReplicatedChronicleMap.java index aad7653a4..bb25b3406 100644 --- a/src/main/java/net/openhft/chronicle/map/ReplicatedChronicleMap.java +++ b/src/main/java/net/openhft/chronicle/map/ReplicatedChronicleMap.java @@ -766,11 +766,11 @@ final class ReplicatedChronicleMap implements FindByName { // creates a map based on the details that are sent to the map of builders @Override public void onPut(CharSequence key, MapInstanceBuilder value, - MapInstanceBuilder replacedValue) { - super.onPut(key, value, replacedValue); + MapInstanceBuilder replacedValue, boolean replicationEvent) { + super.onPut(key, value, replacedValue, replicationEvent); boolean added = replacedValue == null; if (!added || value == null) return; diff --git a/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java b/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java index 82ec86641..f765d04d8 100755 --- a/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java +++ b/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java @@ -1758,11 +1758,11 @@ class VanillaChronicleMap, onPut(this, segmentState.pos); if (bytesEventListener != null) { long keyPos = metaDataBytes; - bytesEventListener.onPut(entry, 0L, keyPos, segmentState.valueSizePos, true); + bytesEventListener.onPut(entry, 0L, keyPos, segmentState.valueSizePos, true, false); } if (eventListener != null) { eventListener.onPut(toKey.toInstance(copies, key, keySize), - toValue.toInstance(copies, v, valueSize), null); + toValue.toInstance(copies, v, valueSize), null, false); } return v; @@ -1866,10 +1866,10 @@ class VanillaChronicleMap, onPut(this, segmentState.pos); if (bytesEventListener != null) bytesEventListener.onPut(entry, 0L, metaDataBytes, - segmentState.valueSizePos, true); + segmentState.valueSizePos, true, false); if (eventListener != null) eventListener.onPut(toKey.toInstance(copies, key, keySize), - toValue.toInstance(copies, value, valueSize), null); + toValue.toInstance(copies, value, valueSize), null, false); return resultUnused ? null : readValue.readNull(); } @@ -1913,10 +1913,10 @@ class VanillaChronicleMap, // put callbacks onPutMaybeRemote(segmentState.pos, remote); if (bytesEventListener != null) - bytesEventListener.onPut(entry, 0L, metaDataBytes, valueSizePos, false); + bytesEventListener.onPut(entry, 0L, metaDataBytes, valueSizePos, false, remote); if (eventListener != null) { eventListener.onPut(toKey.toInstance(copies, key, keySize), - toValue.toInstance(copies, value, valueSize), prevValueInstance); + toValue.toInstance(copies, value, valueSize), prevValueInstance, remote); } return resultUnused ? null : prevValue; @@ -2153,12 +2153,12 @@ class VanillaChronicleMap, // remove callbacks onRemoveMaybeRemote(pos, remote); if (bytesEventListener != null) - bytesEventListener.onRemove(entry, 0L, metaDataBytes, valueSizePos); + bytesEventListener.onRemove(entry, 0L, metaDataBytes, valueSizePos, remote); if (eventListener != null) { V removedValueForEventListener = toValue.toInstance(copies, removedValue, valueSize); eventListener.onRemove(toKey.toInstance(copies, key, keySize), - removedValueForEventListener); + removedValueForEventListener, remote); } return booleanResult ? Boolean.TRUE : removedValue; @@ -2292,12 +2292,12 @@ class VanillaChronicleMap, onPut(this, segmentState.pos); if (bytesEventListener != null) { long keyPos = metaDataBytes; - bytesEventListener.onPut(entry, 0L, keyPos, segmentState.valueSizePos, true); + bytesEventListener.onPut(entry, 0L, keyPos, segmentState.valueSizePos, true, false); } if (eventListener != null) eventListener.onPut(toKey.toInstance(copies, key, keySize), toValue.toInstance(copies, newValue, newValueSize), - toValue.toInstance(copies, prevValue, valueSize)); + toValue.toInstance(copies, prevValue, valueSize), false); return expectedValue == null ? prevValue : Boolean.TRUE; } @@ -2590,9 +2590,9 @@ class VanillaChronicleMap, // remove callbacks onRemove(segment, pos); if (bytesEventListener != null) - bytesEventListener.onRemove(entry, 0L, metaDataBytes, valueSizePos); + bytesEventListener.onRemove(entry, 0L, metaDataBytes, valueSizePos, false); if (eventListener != null) - eventListener.onRemove(returnedEntry.getKey(), returnedEntry.getValue()); + eventListener.onRemove(returnedEntry.getKey(), returnedEntry.getValue(), false); } } diff --git a/src/test/java/net/openhft/chronicle/map/CHMMetaDataTest.java b/src/test/java/net/openhft/chronicle/map/CHMMetaDataTest.java index d4e787013..99081f6bc 100644 --- a/src/test/java/net/openhft/chronicle/map/CHMMetaDataTest.java +++ b/src/test/java/net/openhft/chronicle/map/CHMMetaDataTest.java @@ -76,14 +76,14 @@ public class CHMMetaDataTest { } @Override - public void onPut(Bytes entry, long metaDataPos, long keyPos, long valuePos, boolean added) { + public void onPut(Bytes entry, long metaDataPos, long keyPos, long valuePos, boolean added, boolean replicationEvent) { if (added) assertEquals(0, entry.readLong(metaDataPos)); entry.writeLong(metaDataPos, timeStamps.incrementAndGet()); } @Override - public void onRemove(Bytes entry, long metaDataPos, long keyPos, long valuePos) { + public void onRemove(Bytes entry, long metaDataPos, long keyPos, long valuePos, boolean replicationEvent) { System.out.println("Removed entry with ts of " + entry.readLong(metaDataPos));; } } diff --git a/src/test/java/net/openhft/chronicle/map/EventListenerWithTCPSocketReplicationTest.java b/src/test/java/net/openhft/chronicle/map/EventListenerWithTCPSocketReplicationTest.java index f1ead09b4..312626b60 100644 --- a/src/test/java/net/openhft/chronicle/map/EventListenerWithTCPSocketReplicationTest.java +++ b/src/test/java/net/openhft/chronicle/map/EventListenerWithTCPSocketReplicationTest.java @@ -55,7 +55,7 @@ public class EventListenerWithTCPSocketReplicationTest { private static final long serialVersionUID = 1L; @Override - public void onPut(Integer key, CharSequence value, CharSequence replacedValue) { + public void onPut(Integer key, CharSequence value, CharSequence replacedValue, boolean replicationEvent) { putWasCalled.getAndSet(true); keyRef.set(key); valueRef.set(value); @@ -63,7 +63,7 @@ public class EventListenerWithTCPSocketReplicationTest { } @Override - public void onRemove(Integer key, CharSequence value) { + public void onRemove(Integer key, CharSequence value, boolean replicationEvent) { wasRemoved.set(true); valueRemoved.set(value); }