Skip to content

Commit 59c0917

Browse files
Improve variable names. Add getOnHeapReadBuffer() to simplify get().
1 parent 6d2720c commit 59c0917

File tree

2 files changed

+25
-22
lines changed

2 files changed

+25
-22
lines changed

src/main/kotlin/com/target/nativememoryallocator/map/impl/NativeMemoryMapImpl.kt

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -35,43 +35,43 @@ internal class NativeMemoryMapImpl<KEY_TYPE : Any, VALUE_TYPE : Any>(
3535
override fun put(key: KEY_TYPE, value: VALUE_TYPE?): NativeMemoryMap.PutResult {
3636
var result: NativeMemoryMap.PutResult = NativeMemoryMap.PutResult.NO_CHANGE
3737

38-
cacheMap.compute(key) { _, currentNearCacheBuffer ->
38+
cacheMap.compute(key) { _, currentBuffer ->
3939

4040
if (value == null) {
4141
// free current buffer, deleting entry from map
42-
if (currentNearCacheBuffer != null) {
43-
nativeMemoryAllocator.freeNativeMemoryBuffer(currentNearCacheBuffer)
42+
if (currentBuffer != null) {
43+
nativeMemoryAllocator.freeNativeMemoryBuffer(currentBuffer)
4444
result = NativeMemoryMap.PutResult.FREED_CURRENT_BUFFER
4545
}
4646
null
47-
} else if (currentNearCacheBuffer == null) {
47+
} else if (currentBuffer == null) {
4848
// allocate a new buffer
4949
val newValueByteArray = valueSerializer.serializeToByteArray(value = value)
5050
val newCapacityBytes = newValueByteArray.size
5151

52-
val newNearCacheBuffer =
52+
val newBuffer =
5353
nativeMemoryAllocator.allocateNativeMemoryBuffer(capacityBytes = newCapacityBytes)
5454

55-
newNearCacheBuffer.copyFromArray(byteArray = newValueByteArray)
55+
newBuffer.copyFromArray(byteArray = newValueByteArray)
5656

5757
result = NativeMemoryMap.PutResult.ALLOCATED_NEW_BUFFER
5858

59-
newNearCacheBuffer
59+
newBuffer
6060
} else {
6161
// reuse existing buffer
6262
val newValueByteArray = valueSerializer.serializeToByteArray(value = value)
6363
val newCapacityBytes = newValueByteArray.size
6464

6565
nativeMemoryAllocator.resizeNativeMemoryBuffer(
66-
buffer = currentNearCacheBuffer,
66+
buffer = currentBuffer,
6767
newCapacityBytes = newCapacityBytes,
6868
)
6969

70-
currentNearCacheBuffer.copyFromArray(byteArray = newValueByteArray)
70+
currentBuffer.copyFromArray(byteArray = newValueByteArray)
7171

7272
result = NativeMemoryMap.PutResult.REUSED_EXISTING_BUFFER
7373

74-
currentNearCacheBuffer
74+
currentBuffer
7575
}
7676
}
7777

@@ -85,7 +85,7 @@ internal class NativeMemoryMapImpl<KEY_TYPE : Any, VALUE_TYPE : Any>(
8585
/**
8686
* Non-private for unit test only.
8787
*/
88-
val threadLocalHeapReadBuffer =
88+
val threadLocalOnHeapReadBuffer =
8989
if (useThreadLocalOnHeapReadBuffer) {
9090
ThreadLocal.withInitial {
9191
OnHeapMemoryBufferFactory.newOnHeapMemoryBuffer(
@@ -96,26 +96,29 @@ internal class NativeMemoryMapImpl<KEY_TYPE : Any, VALUE_TYPE : Any>(
9696
null
9797
}
9898

99+
private val getOnHeapReadBuffer: (currentBuffer: NativeMemoryBuffer) -> OnHeapMemoryBuffer =
100+
if (threadLocalOnHeapReadBuffer != null) {
101+
{ threadLocalOnHeapReadBuffer.get() }
102+
} else {
103+
{ currentBuffer -> OnHeapMemoryBufferFactory.newOnHeapMemoryBuffer(initialCapacityBytes = currentBuffer.capacityBytes) }
104+
}
105+
99106
override fun get(key: KEY_TYPE): VALUE_TYPE? {
100107
var onHeapReadBuffer: OnHeapMemoryBuffer? = null
101108

102-
cacheMap.computeIfPresent(key) { _, nearCacheBuffer ->
109+
cacheMap.computeIfPresent(key) { _, currentBuffer ->
103110

104111
onHeapReadBuffer =
105112
run {
106-
// copy nearCacheBuffer to readBuffer
107-
val readBuffer = if (threadLocalHeapReadBuffer != null) {
108-
threadLocalHeapReadBuffer.get()
109-
} else {
110-
OnHeapMemoryBufferFactory.newOnHeapMemoryBuffer(initialCapacityBytes = nearCacheBuffer.capacityBytes)
111-
}
113+
// copy currentBuffer to readBuffer
114+
val readBuffer = getOnHeapReadBuffer(currentBuffer)
112115

113-
nearCacheBuffer.copyToOnHeapMemoryBuffer(onHeapMemoryBuffer = readBuffer)
116+
currentBuffer.copyToOnHeapMemoryBuffer(onHeapMemoryBuffer = readBuffer)
114117

115118
readBuffer
116119
}
117120

118-
nearCacheBuffer
121+
currentBuffer
119122
}
120123

121124
return onHeapReadBuffer?.let {

src/test/kotlin/com/target/nativememoryallocator/map/impl/NativeMemoryMapImplSpec.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ class NativeMemoryMapImplSpec : Spek({
185185

186186
putResult = nativeMemoryMap.put(key = 1, value = putValue)
187187

188-
nativeMemoryMap.threadLocalHeapReadBuffer!!.set(threadLocalReadBuffer)
188+
nativeMemoryMap.threadLocalOnHeapReadBuffer!!.set(threadLocalReadBuffer)
189189

190190
getResult = nativeMemoryMap.get(key = 1)
191191
}
@@ -387,7 +387,7 @@ class NativeMemoryMapImplSpec : Spek({
387387
nativeMemoryBuffer.copyFromArray(byteArray = serializedValue2)
388388
} returns Unit
389389

390-
nativeMemoryMap.threadLocalHeapReadBuffer!!.set(threadLocalReadBuffer)
390+
nativeMemoryMap.threadLocalOnHeapReadBuffer!!.set(threadLocalReadBuffer)
391391

392392
every {
393393
nativeMemoryBuffer.copyToOnHeapMemoryBuffer(threadLocalReadBuffer)

0 commit comments

Comments
 (0)