From fafabf64a359bd4da7b5292393614c0f9730773b Mon Sep 17 00:00:00 2001 From: Christian Basler Date: Thu, 31 May 2018 16:58:29 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A5=20Remove=20duplicate=20code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ch/dissem/bitmessage/entity/GetData.kt | 23 +---------- .../kotlin/ch/dissem/bitmessage/entity/Inv.kt | 23 +---------- .../bitmessage/entity/InventoryWriter.kt | 40 +++++++++++++++++++ 3 files changed, 44 insertions(+), 42 deletions(-) create mode 100644 core/src/main/kotlin/ch/dissem/bitmessage/entity/InventoryWriter.kt diff --git a/core/src/main/kotlin/ch/dissem/bitmessage/entity/GetData.kt b/core/src/main/kotlin/ch/dissem/bitmessage/entity/GetData.kt index 455b663..570f74e 100644 --- a/core/src/main/kotlin/ch/dissem/bitmessage/entity/GetData.kt +++ b/core/src/main/kotlin/ch/dissem/bitmessage/entity/GetData.kt @@ -17,9 +17,6 @@ package ch.dissem.bitmessage.entity import ch.dissem.bitmessage.entity.valueobject.InventoryVector -import ch.dissem.bitmessage.utils.Encode -import java.io.OutputStream -import java.nio.ByteBuffer /** * The 'getdata' command is used to request objects from a node. @@ -31,24 +28,8 @@ class GetData constructor(var inventory: List) : MessagePayload override fun writer(): StreamableWriter = Writer(this) private class Writer( - private val item: GetData - ) : StreamableWriter { - - override fun write(out: OutputStream) { - Encode.varInt(item.inventory.size, out) - for (iv in item.inventory) { - iv.writer().write(out) - } - } - - override fun write(buffer: ByteBuffer) { - Encode.varInt(item.inventory.size, buffer) - for (iv in item.inventory) { - iv.writer().write(buffer) - } - } - - } + item: GetData + ) : InventoryWriter(item.inventory) companion object { @JvmField diff --git a/core/src/main/kotlin/ch/dissem/bitmessage/entity/Inv.kt b/core/src/main/kotlin/ch/dissem/bitmessage/entity/Inv.kt index beb2e85..65d201e 100644 --- a/core/src/main/kotlin/ch/dissem/bitmessage/entity/Inv.kt +++ b/core/src/main/kotlin/ch/dissem/bitmessage/entity/Inv.kt @@ -17,9 +17,6 @@ package ch.dissem.bitmessage.entity import ch.dissem.bitmessage.entity.valueobject.InventoryVector -import ch.dissem.bitmessage.utils.Encode -import java.io.OutputStream -import java.nio.ByteBuffer /** * The 'inv' command holds up to 50000 inventory vectors, i.e. hashes of inventory items. @@ -31,22 +28,6 @@ class Inv constructor(val inventory: List) : MessagePayload { override fun writer(): StreamableWriter = Writer(this) private class Writer( - private val item: Inv - ) : StreamableWriter { - - override fun write(out: OutputStream) { - Encode.varInt(item.inventory.size, out) - for (iv in item.inventory) { - iv.writer().write(out) - } - } - - override fun write(buffer: ByteBuffer) { - Encode.varInt(item.inventory.size, buffer) - for (iv in item.inventory) { - iv.writer().write(buffer) - } - } - - } + item: Inv + ) : InventoryWriter(item.inventory) } diff --git a/core/src/main/kotlin/ch/dissem/bitmessage/entity/InventoryWriter.kt b/core/src/main/kotlin/ch/dissem/bitmessage/entity/InventoryWriter.kt new file mode 100644 index 0000000..6ed5808 --- /dev/null +++ b/core/src/main/kotlin/ch/dissem/bitmessage/entity/InventoryWriter.kt @@ -0,0 +1,40 @@ +/* + * Copyright 2018 Christian Basler + * + * Licensed 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 ch.dissem.bitmessage.entity + +import ch.dissem.bitmessage.entity.valueobject.InventoryVector +import ch.dissem.bitmessage.utils.Encode +import java.io.OutputStream +import java.nio.ByteBuffer + +internal open class InventoryWriter(private val inventory: List) : StreamableWriter { + + override fun write(out: OutputStream) { + Encode.varInt(inventory.size, out) + for (iv in inventory) { + iv.writer().write(out) + } + } + + override fun write(buffer: ByteBuffer) { + Encode.varInt(inventory.size, buffer) + for (iv in inventory) { + iv.writer().write(buffer) + } + } + +}