Przeglądaj źródła

IOEvent - odrobinę zmieniony interfejs

Ranides Atterwim 13 lat temu
rodzic
commit
d480a5517b

+ 126 - 32
src/main/java/net/ranides/assira/io/IOEvent.java

@@ -56,7 +56,7 @@ public abstract class IOEvent implements Event, Serializable {
     }
 
     public static ReadByteArray read(byte[] array, int offset, int length) {
-        return new ReadByteArray(Arrays.copyOfRange(array, offset, offset+length));
+        return new ReadByteArray(Arrays.copyOfRange(array, offset, offset + length));
     }
 
     public static WriteByte write(int value) {
@@ -68,7 +68,7 @@ public abstract class IOEvent implements Event, Serializable {
     }
 
     public static WriteByteArray write(byte[] array, int offset, int length) {
-        return new WriteByteArray(Arrays.copyOfRange(array, offset, offset+length));
+        return new WriteByteArray(Arrays.copyOfRange(array, offset, offset + length));
     }
 
     public static LocalProgress progress(File file, long current, long max) {
@@ -78,15 +78,17 @@ public abstract class IOEvent implements Event, Serializable {
     public static class Failure extends IOEvent {
 
         private static final long serialVersionUID = 1L;
-
+        
         private final IOException cause;
 
         protected Failure(IOException cause) {
             this.cause = cause;
         }
+        
         public IOException cause() {
             return cause;
         }
+        
         @Override
         public String toString() {
             return "IOEvent.Failure: " + cause;
@@ -94,124 +96,212 @@ public abstract class IOEvent implements Event, Serializable {
     }
 
     public static class Close extends IOEvent {
+
         private static final long serialVersionUID = 1L;
 
-        protected Close() { }
+        protected Close() {
+            // do nothing
+        }
+        
         @Override
-        public String toString() { return "IOEvent.Close"; }
+        public String toString() {
+            return "IOEvent.Close";
+        }
     }
 
     public static class Flush extends IOEvent {
+
         private static final long serialVersionUID = 1L;
 
-        protected Flush() { }
+        protected Flush() {
+            // do nothing
+        }
+        
         @Override
-        public String toString() { return "IOEvent.Flush"; }
+        public String toString() {
+            return "IOEvent.Flush";
+        }
     }
 
     public static class Open extends IOEvent {
+
         private static final long serialVersionUID = 1L;
 
-        protected Open() { }
+        protected Open() {
+            // do nothing
+        }
+        
         @Override
-        public String toString() { return "IOEvent.Open"; }
+        public String toString() {
+            return "IOEvent.Open";
+        }
     }
 
-    public static class Read extends IOEvent {
+    public static abstract class Read extends IOEvent {
+
         private static final long serialVersionUID = 1L;
 
-        protected Read() { }
+        protected Read() {
+            // do nothing
+        }
+
+        public abstract int head();
+
+        public abstract byte[] array();
+
         @Override
-        public String toString() { return "IOEvent.Read"; }
+        public String toString() {
+            return "IOEvent.Read";
+        }
     }
 
     public static class ReadByte extends Read {
-        private static final long serialVersionUID = 1L;
 
+        private static final long serialVersionUID = 1L;
+        
         private final int data;
 
         protected ReadByte(int data) {
             this.data = data;
         }
-        public final int data() {
+
+        @Override
+        public final int head() {
             return data;
         }
+
+        @Override
+        public final byte[] array() {
+            return new byte[]{(byte) data};
+        }
+
         @Override
-        public String toString() { return "IOEvent.ReadByte: " + data; }
+        public String toString() {
+            return "IOEvent.ReadByte: " + data;
+        }
     }
 
     @SuppressWarnings({"EI_EXPOSE_REP", "PMD"})
     public static class ReadByteArray extends Read {
-        private static final long serialVersionUID = 1L;
 
+        private static final long serialVersionUID = 1L;
+        
         private final byte[] data;
 
         protected ReadByteArray(byte[] data) {
             this.data = data;
         }
-        public final byte[] data() {
+
+        @Override
+        public final int head() {
+            return data[0];
+        }
+
+        @Override
+        public final byte[] array() {
             return data;
         }
+
         @Override
-        public String toString() { return "IOEvent.ReadByteArray: " + data.length; }
+        public String toString() {
+            return "IOEvent.ReadByteArray: " + data.length;
+        }
     }
 
-    public static class Write extends IOEvent {
+    public static abstract class Write extends IOEvent {
+
         private static final long serialVersionUID = 1L;
 
-        protected Write() { }
+        protected Write() {
+            // do nothing
+        }
+        
+        public abstract int head();
+
+        public abstract byte[] array();
+
         @Override
-        public String toString() { return "IOEvent.Write"; }
+        public String toString() {
+            return "IOEvent.Write";
+        }
     }
 
     public static class WriteByte extends Write {
-        private static final long serialVersionUID = 1L;
 
+        private static final long serialVersionUID = 1L;
+        
         private final int data;
 
         protected WriteByte(int data) {
             this.data = data;
         }
-        public final int data() {
+
+        @Override
+        public final int head() {
             return data;
         }
+
         @Override
-        public String toString() { return "IOEvent.WriteByte: " + data; }
+        public final byte[] array() {
+            return new byte[]{ (byte)data };
+        }
+
+        @Override
+        public String toString() {
+            return "IOEvent.WriteByte: " + data;
+        }
     }
 
     public static class WriteByteArray extends Write {
-        private static final long serialVersionUID = 1L;
 
+        private static final long serialVersionUID = 1L;
+        
         private final byte[] data;
 
         protected WriteByteArray(byte[] data) {
             this.data = data;
         }
-        public final byte[] data() {
+
+        @Override
+        public final int head() {
+            return data[0];
+        }
+
+        @Override
+        public final byte[] array() {
             return data;
         }
+
         @Override
-        public String toString() { return "IOEvent.WriteByteArray: " + data.length; }
+        public String toString() {
+            return "IOEvent.WriteByteArray: " + data.length;
+        }
     }
 
     public static class Local extends IOEvent {
-        private static final long serialVersionUID = 1L;
 
+        private static final long serialVersionUID = 1L;
+        
         private final File file;
 
         protected Local(File file) {
             this.file = file;
         }
+
         public File file() {
             return file;
         }
+
         @Override
-        public String toString() { return "IOEvent.Local: " + file; }
+        public String toString() {
+            return "IOEvent.Local: " + file;
+        }
     }
 
     public static class LocalProgress extends Local {
-        private static final long serialVersionUID = 1L;
 
+        private static final long serialVersionUID = 1L;
+        
         private final long current;
         private final long max;
 
@@ -220,14 +310,18 @@ public abstract class IOEvent implements Event, Serializable {
             this.current = current;
             this.max = max;
         }
+
         public long current() {
             return current;
         }
+
         public long max() {
             return max;
         }
+
         @Override
-        public String toString() { return "IOEvent.LocalProgress: [" + current +" / " + max + "] " + file(); }
+        public String toString() {
+            return "IOEvent.LocalProgress: [" + current + " / " + max + "] " + file();
+        }
     }
-
 }

+ 2 - 2
src/main/java/net/ranides/assira/io/OutputStreamThread.java

@@ -99,7 +99,7 @@ public final class OutputStreamThread extends OutputStream {
     @Meta.EventHandler
     void handleEvent(IOEvent.WriteByteArray event) {
         try {
-            ostream.write(event.data());
+            ostream.write(event.array());
         } catch (IOException ex) {
             handleError(ex);
         }
@@ -108,7 +108,7 @@ public final class OutputStreamThread extends OutputStream {
     @Meta.EventHandler
     void handleEvent(IOEvent.WriteByte event) {
         try {
-            ostream.write(event.data());
+            ostream.write(event.head());
         } catch (IOException ex) {
             handleError(ex);
         }