From 601376561bd2a9a2b6dbaa844934a16ae6328f77 Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Thu, 27 Aug 2015 14:36:19 +0000
Subject: [PATCH] add Closeable/Flushable interfaces

---
 .../java/src/net/i2p/addressbook/ConfigIterator.java          | 3 ++-
 apps/i2psnark/java/src/org/klomp/snark/Storage.java           | 3 ++-
 apps/sam/java/src/net/i2p/sam/SAMMessageSession.java          | 3 ++-
 .../java/src/net/i2p/client/streaming/impl/PacketQueue.java   | 3 ++-
 .../java/src/net/i2p/client/streaming/impl/PcapWriter.java    | 4 +++-
 core/java/src/net/i2p/internal/I2CPMessageQueue.java          | 4 +++-
 core/java/src/net/i2p/util/LogManager.java                    | 3 ++-
 core/java/src/net/metanotion/io/RandomAccessInterface.java    | 3 ++-
 core/java/src/net/metanotion/io/block/BlockFile.java          | 3 ++-
 core/java/src/net/metanotion/io/block/index/BSkipList.java    | 3 ++-
 core/java/src/net/metanotion/util/skiplist/SkipLevels.java    | 4 +++-
 core/java/src/net/metanotion/util/skiplist/SkipList.java      | 3 ++-
 core/java/src/net/metanotion/util/skiplist/SkipSpan.java      | 4 +++-
 .../i2p/router/networkdb/kademlia/PersistentDataStore.java    | 3 ++-
 .../src/net/i2p/router/transport/ntcp/NTCPConnection.java     | 3 ++-
 15 files changed, 34 insertions(+), 15 deletions(-)

diff --git a/apps/addressbook/java/src/net/i2p/addressbook/ConfigIterator.java b/apps/addressbook/java/src/net/i2p/addressbook/ConfigIterator.java
index 8b01fb854b..30c21d19bf 100644
--- a/apps/addressbook/java/src/net/i2p/addressbook/ConfigIterator.java
+++ b/apps/addressbook/java/src/net/i2p/addressbook/ConfigIterator.java
@@ -22,6 +22,7 @@
 package net.i2p.addressbook;
 
 import java.io.BufferedReader;
+import java.io.Closeable;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -41,7 +42,7 @@ import java.util.NoSuchElementException;
  *
  *  @since 0.8.7
  */
-class ConfigIterator implements Iterator<Map.Entry<String, String>> {
+class ConfigIterator implements Iterator<Map.Entry<String, String>>, Closeable {
 
     private BufferedReader input;
     private ConfigEntry next;
diff --git a/apps/i2psnark/java/src/org/klomp/snark/Storage.java b/apps/i2psnark/java/src/org/klomp/snark/Storage.java
index 682d6f700c..1a4b1fb4c8 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/Storage.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/Storage.java
@@ -20,6 +20,7 @@
 
 package org.klomp.snark;
 
+import java.io.Closeable;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
@@ -50,7 +51,7 @@ import net.i2p.util.SystemVersion;
 /**
  * Maintains pieces on disk. Can be used to store and retrieve pieces.
  */
-public class Storage
+public class Storage implements Closeable
 {
   private final MetaInfo metainfo;
   private final List<TorrentFile> _torrentFiles;
diff --git a/apps/sam/java/src/net/i2p/sam/SAMMessageSession.java b/apps/sam/java/src/net/i2p/sam/SAMMessageSession.java
index db2450b011..e8e502da8b 100644
--- a/apps/sam/java/src/net/i2p/sam/SAMMessageSession.java
+++ b/apps/sam/java/src/net/i2p/sam/SAMMessageSession.java
@@ -9,6 +9,7 @@ package net.i2p.sam;
  */
 
 import java.io.ByteArrayInputStream;
+import java.io.Closeable;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Properties;
@@ -31,7 +32,7 @@ import net.i2p.util.Log;
  *
  * @author human
  */
-abstract class SAMMessageSession {
+abstract class SAMMessageSession implements Closeable {
 
     protected final Log _log;
     private I2PSession session;
diff --git a/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketQueue.java b/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketQueue.java
index 073ce3d15c..34ab439398 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketQueue.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketQueue.java
@@ -1,5 +1,6 @@
 package net.i2p.client.streaming.impl;
 
+import java.io.Closeable;
 import java.io.IOException;
 import java.util.Iterator;
 import java.util.Map;
@@ -25,7 +26,7 @@ import net.i2p.util.SimpleTimer2;
  *<p>
  * MessageOutputStream -> ConnectionDataReceiver -> Connection -> PacketQueue -> I2PSession
  */
-class PacketQueue implements SendMessageStatusListener {
+class PacketQueue implements SendMessageStatusListener, Closeable {
     private final I2PAppContext _context;
     private final Log _log;
     private final ByteCache _cache = ByteCache.getInstance(64, 36*1024);
diff --git a/apps/streaming/java/src/net/i2p/client/streaming/impl/PcapWriter.java b/apps/streaming/java/src/net/i2p/client/streaming/impl/PcapWriter.java
index 9a3c3e0be4..1c704f02e3 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/impl/PcapWriter.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/impl/PcapWriter.java
@@ -1,8 +1,10 @@
 package net.i2p.client.streaming.impl;
 
 import java.io.BufferedOutputStream;
+import java.io.Closeable;
 import java.io.File;
 import java.io.FileOutputStream;
+import java.io.Flushable;
 import java.io.IOException;
 import java.io.OutputStream;
 
@@ -41,7 +43,7 @@ import net.i2p.data.DataHelper;
  *
  *  @since 0.9.4
  */
-public class PcapWriter {
+public class PcapWriter implements Closeable, Flushable {
 
     /** big-endian, see file format ref - 24 bytes */
     private static final byte[] FILE_HEADER = { (byte) 0xa1, (byte) 0xb2, (byte) 0xc3, (byte) 0xd4,
diff --git a/core/java/src/net/i2p/internal/I2CPMessageQueue.java b/core/java/src/net/i2p/internal/I2CPMessageQueue.java
index eda2d8f957..76584255c2 100644
--- a/core/java/src/net/i2p/internal/I2CPMessageQueue.java
+++ b/core/java/src/net/i2p/internal/I2CPMessageQueue.java
@@ -1,5 +1,7 @@
 package net.i2p.internal;
 
+import java.io.Closeable;
+
 import net.i2p.data.i2cp.I2CPMessage;
 
 /**
@@ -15,7 +17,7 @@ import net.i2p.data.i2cp.I2CPMessage;
  * @author zzz
  * @since 0.8.3
  */
-public abstract class I2CPMessageQueue {
+public abstract class I2CPMessageQueue implements Closeable {
 
     /**
      *  Send a message, nonblocking.
diff --git a/core/java/src/net/i2p/util/LogManager.java b/core/java/src/net/i2p/util/LogManager.java
index 85d948c537..f2df0a8817 100644
--- a/core/java/src/net/i2p/util/LogManager.java
+++ b/core/java/src/net/i2p/util/LogManager.java
@@ -10,6 +10,7 @@ package net.i2p.util;
  */
 
 import java.io.File;
+import java.io.Flushable;
 import java.io.IOException;
 import java.text.DateFormat;
 import java.text.DecimalFormat;
@@ -37,7 +38,7 @@ import net.i2p.data.DataHelper;
  * writes them where appropriate.
  * 
  */
-public class LogManager {
+public class LogManager implements Flushable {
     public final static String CONFIG_LOCATION_PROP = "loggerConfigLocation";
     public final static String FILENAME_OVERRIDE_PROP = "loggerFilenameOverride";
     public final static String CONFIG_LOCATION_DEFAULT = "logger.config";
diff --git a/core/java/src/net/metanotion/io/RandomAccessInterface.java b/core/java/src/net/metanotion/io/RandomAccessInterface.java
index fa382621c8..1f3df6af65 100644
--- a/core/java/src/net/metanotion/io/RandomAccessInterface.java
+++ b/core/java/src/net/metanotion/io/RandomAccessInterface.java
@@ -28,9 +28,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 package net.metanotion.io;
 
+import java.io.Closeable;
 import java.io.IOException;
 
-public interface RandomAccessInterface {
+public interface RandomAccessInterface extends Closeable {
 	public long getFilePointer() throws IOException;
 	public long length() throws IOException;
 	public int read() throws IOException;
diff --git a/core/java/src/net/metanotion/io/block/BlockFile.java b/core/java/src/net/metanotion/io/block/BlockFile.java
index f6ea7d6340..0187022048 100644
--- a/core/java/src/net/metanotion/io/block/BlockFile.java
+++ b/core/java/src/net/metanotion/io/block/BlockFile.java
@@ -28,6 +28,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 package net.metanotion.io.block;
 
+import java.io.Closeable;
 import java.io.File;
 import java.io.IOException;
 import java.io.RandomAccessFile;
@@ -64,7 +65,7 @@ import net.i2p.util.Log;
  * Pages are 1 KB and are numbered starting from 1.
  * e.g. the Metaindex skiplist is at offset 1024 bytes
  */
-public class BlockFile {
+public class BlockFile implements Closeable {
 	public static final int PAGESIZE = 1024;
 	public static final long OFFSET_MOUNTED = 20;
 	public final Log log = I2PAppContext.getGlobalContext().logManager().getLog(BlockFile.class);
diff --git a/core/java/src/net/metanotion/io/block/index/BSkipList.java b/core/java/src/net/metanotion/io/block/index/BSkipList.java
index 5eef949cf4..3a2d8b599c 100644
--- a/core/java/src/net/metanotion/io/block/index/BSkipList.java
+++ b/core/java/src/net/metanotion/io/block/index/BSkipList.java
@@ -28,6 +28,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 package net.metanotion.io.block.index;
 
+import java.io.Closeable;
 import java.io.IOException;
 import java.util.HashMap;
 
@@ -50,7 +51,7 @@ import net.i2p.util.Log;
  *
  * Always fits on one page.
  */
-public class BSkipList extends SkipList {
+public class BSkipList extends SkipList implements Closeable {
 	private static final long MAGIC = 0x536b69704c697374l;  // "SkipList"
 	public int firstSpanPage = 0;
 	public int firstLevelPage = 0;
diff --git a/core/java/src/net/metanotion/util/skiplist/SkipLevels.java b/core/java/src/net/metanotion/util/skiplist/SkipLevels.java
index e4665fc4b3..bd9da7ba16 100644
--- a/core/java/src/net/metanotion/util/skiplist/SkipLevels.java
+++ b/core/java/src/net/metanotion/util/skiplist/SkipLevels.java
@@ -28,12 +28,14 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 package net.metanotion.util.skiplist;
 
+import java.io.Flushable;
+
 import net.metanotion.io.block.BlockFile;
 
 import net.i2p.I2PAppContext;
 import net.i2p.util.Log;
 
-public class SkipLevels {
+public class SkipLevels implements Flushable {
 	/** We can't have more than 2**32 pages */
 	public static final int MAX_SIZE = 32;
 
diff --git a/core/java/src/net/metanotion/util/skiplist/SkipList.java b/core/java/src/net/metanotion/util/skiplist/SkipList.java
index 74e35f56ac..6f44e9e23a 100644
--- a/core/java/src/net/metanotion/util/skiplist/SkipList.java
+++ b/core/java/src/net/metanotion/util/skiplist/SkipList.java
@@ -28,13 +28,14 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 package net.metanotion.util.skiplist;
 
+import java.io.Flushable;
 import java.util.Random;
 
 import net.i2p.util.RandomSource;
 
 //import net.metanotion.io.block.BlockFile;
 
-public class SkipList {
+public class SkipList implements Flushable {
 	/** the probability of each next higher level */
 	protected static final int P = 2;
 	private static final int MIN_SLOTS = 4;
diff --git a/core/java/src/net/metanotion/util/skiplist/SkipSpan.java b/core/java/src/net/metanotion/util/skiplist/SkipSpan.java
index ae2cc9ef7d..94210ebd4b 100644
--- a/core/java/src/net/metanotion/util/skiplist/SkipSpan.java
+++ b/core/java/src/net/metanotion/util/skiplist/SkipSpan.java
@@ -28,9 +28,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 package net.metanotion.util.skiplist;
 
+import java.io.Flushable;
+
 //import net.metanotion.io.block.BlockFile;
 
-public class SkipSpan {
+public class SkipSpan implements Flushable {
 	/** This is actually limited by BlockFile.spanSize which is much smaller */
 	public static final int MAX_SIZE = 256;
 
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java b/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java
index ba10f88721..c3c413930a 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java
@@ -13,6 +13,7 @@ import java.io.BufferedOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FilenameFilter;
+import java.io.Flushable;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -193,7 +194,7 @@ class PersistentDataStore extends TransientDataStore {
      * we will soon have to implement a scheme for keeping only
      * a subset of all DatabaseEntrys in memory and keeping the rest on disk.
      */
-    private class Writer implements Runnable {
+    private class Writer implements Runnable, Flushable {
         private final Map<Hash, DatabaseEntry>_keys;
         private final Object _waitLock;
         private volatile boolean _quit;
diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java
index 3f77d73a7e..703ee5050a 100644
--- a/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java
+++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java
@@ -1,5 +1,6 @@
 package net.i2p.router.transport.ntcp;
 
+import java.io.Closeable;
 import java.io.IOException;
 import java.net.Inet6Address;
 import java.nio.ByteBuffer;
@@ -64,7 +65,7 @@ import net.i2p.util.VersionComparator;
  *</pre>
  *
  */
-class NTCPConnection {
+class NTCPConnection implements Closeable {
     private final RouterContext _context;
     private final Log _log;
     private SocketChannel _chan;
-- 
GitLab