Revert using open hash set in dirtyFields
This commit is contained in:
parent
5b5c4de9f7
commit
1e68baea9d
@ -454,8 +454,7 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val dirtyFields = ReferenceOpenHashSet<AbstractField<*>>(fields.size)
|
private val dirtyFields = ReferenceArraySet<AbstractField<*>>(fields.size)
|
||||||
private val dirtyFields2 = ArrayList<AbstractField<*>>()
|
|
||||||
|
|
||||||
// use LinkedList because it is ensured memory is freed on LinkedList#clear
|
// use LinkedList because it is ensured memory is freed on LinkedList#clear
|
||||||
private val mapBacklogs = Reference2ObjectOpenHashMap<Map<*, *>, LinkedList<Pair<Any?, (DataOutputStream) -> Unit>>>()
|
private val mapBacklogs = Reference2ObjectOpenHashMap<Map<*, *>, LinkedList<Pair<Any?, (DataOutputStream) -> Unit>>>()
|
||||||
@ -475,7 +474,6 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa
|
|||||||
unused = true
|
unused = true
|
||||||
mapBacklogs.clear()
|
mapBacklogs.clear()
|
||||||
dirtyFields.clear()
|
dirtyFields.clear()
|
||||||
dirtyFields2.clear()
|
|
||||||
|
|
||||||
val iterator = endpoints.listIterator()
|
val iterator = endpoints.listIterator()
|
||||||
|
|
||||||
@ -501,14 +499,11 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dirtyFields.add(field)) {
|
dirtyFields.add(field)
|
||||||
dirtyFields2.add(field)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun removeDirtyField(field: AbstractField<*>) {
|
internal fun removeDirtyField(field: AbstractField<*>) {
|
||||||
dirtyFields.remove(field)
|
dirtyFields.remove(field)
|
||||||
dirtyFields2.remove(field)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun <K, V> getMapBacklog(map: Map<K, V>): LinkedList<Pair<Any?, (DataOutputStream) -> Unit>> {
|
internal fun <K, V> getMapBacklog(map: Map<K, V>): LinkedList<Pair<Any?, (DataOutputStream) -> Unit>> {
|
||||||
@ -522,20 +517,19 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun collectNetworkPayload(): FastByteArrayOutputStream? {
|
fun collectNetworkPayload(): FastByteArrayOutputStream? {
|
||||||
if (unused || dirtyFields2.isEmpty()) {
|
if (unused || dirtyFields.isEmpty()) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
val stream = FastByteArrayOutputStream()
|
val stream = FastByteArrayOutputStream()
|
||||||
val dataStream = DataOutputStream(stream)
|
val dataStream = DataOutputStream(stream)
|
||||||
|
|
||||||
for (field in dirtyFields2) {
|
for (field in dirtyFields) {
|
||||||
stream.writeVarIntLE(field.id)
|
stream.writeVarIntLE(field.id)
|
||||||
field.write(dataStream, this)
|
field.write(dataStream, this)
|
||||||
}
|
}
|
||||||
|
|
||||||
dirtyFields.clear()
|
dirtyFields.clear()
|
||||||
dirtyFields2.clear()
|
|
||||||
stream.write(0)
|
stream.write(0)
|
||||||
|
|
||||||
return stream
|
return stream
|
||||||
|
Loading…
Reference in New Issue
Block a user