From 7df116d02b16c7d093e988059838f315928d74a7 Mon Sep 17 00:00:00 2001 From: mykola2312 <49044616+mykola2312@users.noreply.github.com> Date: Sun, 13 Oct 2024 09:09:23 +0300 Subject: [PATCH] implement bencode base types --- .../retracker/bencode/BInteger.java | 18 +++++++++++++ .../mykola2312/retracker/bencode/BString.java | 25 +++++++++++++++++++ .../mykola2312/retracker/bencode/BValue.java | 17 +++++++------ 3 files changed, 52 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/mykola2312/retracker/bencode/BInteger.java create mode 100644 src/main/java/com/mykola2312/retracker/bencode/BString.java diff --git a/src/main/java/com/mykola2312/retracker/bencode/BInteger.java b/src/main/java/com/mykola2312/retracker/bencode/BInteger.java new file mode 100644 index 0000000..b3b3c1c --- /dev/null +++ b/src/main/java/com/mykola2312/retracker/bencode/BInteger.java @@ -0,0 +1,18 @@ +package com.mykola2312.retracker.bencode; + +public class BInteger extends BValue { + private long value; + + public BInteger(long value) { + this.value = value; + } + + @Override() + public BType getType() { + return BType.INTEGER; + } + + public long get() { + return value; + } +} diff --git a/src/main/java/com/mykola2312/retracker/bencode/BString.java b/src/main/java/com/mykola2312/retracker/bencode/BString.java new file mode 100644 index 0000000..33d30a0 --- /dev/null +++ b/src/main/java/com/mykola2312/retracker/bencode/BString.java @@ -0,0 +1,25 @@ +package com.mykola2312.retracker.bencode; + +import java.nio.charset.StandardCharsets; + +public class BString extends BValue { + private byte[] bytes; + + public BString(byte[] bytes) { + this.bytes = bytes; + } + + @Override() + public BType getType() { + return BType.STRING; + } + + public byte[] get() { + return bytes; + } + + @Override() + public String toString() { + return new String(bytes, StandardCharsets.UTF_8); + } +} diff --git a/src/main/java/com/mykola2312/retracker/bencode/BValue.java b/src/main/java/com/mykola2312/retracker/bencode/BValue.java index 9920d8a..bcc6780 100644 --- a/src/main/java/com/mykola2312/retracker/bencode/BValue.java +++ b/src/main/java/com/mykola2312/retracker/bencode/BValue.java @@ -10,26 +10,27 @@ import java.util.Iterator; */ abstract public class BValue implements Iterable { - private BType type; private BValue next = null; private BValue child = null; - protected BValue(BType type) { - this.type = type; - } - - public BType getType() { - return type; - } + abstract public BType getType(); public BValue getNext() { return next; } + public void setNext(BValue next) { + this.next = next; + } + public BValue getChild() { return child; } + public void setChild(BValue child) { + this.child = child; + } + public Iterator iterator() { return new BValueIterator(child); }