Author: mturk
Date: Wed Aug 17 06:08:54 2011
New Revision: 1158534

URL: http://svn.apache.org/viewvc?rev=1158534&view=rev
Log:
Add base FilterStream class

Added:
    
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/FilterStream.java
   (with props)

Added: 
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/FilterStream.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/FilterStream.java?rev=1158534&view=auto
==============================================================================
--- 
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/FilterStream.java
 (added)
+++ 
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/FilterStream.java
 Wed Aug 17 06:08:54 2011
@@ -0,0 +1,170 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.commons.runtime.io;
+
+import java.io.IOException;
+import java.io.SyncFailedException;
+import java.nio.ByteBuffer;
+import org.apache.commons.runtime.Pointer;
+
+/**
+ * Bidirectional Filter Stream.
+ * <p>
+ * This class is combination of the Java FilterInputStream and
+ * FilterOutputStream minus mark interface.
+ * </p>
+ */
+public abstract class FilterStream
+    extends Stream
+{
+
+    /**
+     * Stream to be filtered.
+     */
+    protected Stream stream;
+
+    /**
+     * Creates a new object instance.
+     */
+    protected FilterStream(Stream s)
+    {
+        stream = s;
+    }
+
+    /**
+     * Returns the number of bytes that are available before this stream will
+     * block.
+     * This method simply performs {@code stream.available()}.
+     *
+     * @return the number of bytes available before blocking.
+     * @throws IOException
+     *             if an error occurs in this stream.
+     * @see Stream#available()
+     */
+    public int available()
+        throws IOException
+    {
+        return stream.available();
+    }
+
+    /**
+     * Closes the object and release any system resources it holds. If the
+     * object has already been closed, then invoking this method has no effect.
+     * This method simply performs {@code stream.close()}.
+     *
+     * @throws IOException
+     *              if any error occurs when closing the object.
+     * @see Stream#close()
+     */
+    public void close()
+        throws IOException
+    {
+        stream.close();
+    }
+
+    /**
+     * Flush the underlying stream metadata.
+     * This method simply performs {@code stream.available()}.
+     *
+     * @throws SyncFailedException when the object cannot be flushed.
+     * @throws IOException if an I/O error occurs.
+     * @see Stream#flush()
+     */
+    public void flush()
+        throws SyncFailedException, IOException
+    {
+        stream.flush();
+    }
+
+    /**
+     * Sync the underlying stream by writing any buffered data.
+     * This method simply performs {@code stream.sync()}.
+     *
+     * @throws SyncFailedException when the object cannot be flushed.
+     * @throws IOException if an I/O error occurs.
+     * @see Stream#sync()
+     */
+    public void sync()
+        throws SyncFailedException, IOException
+    {
+        stream.sync();
+    }
+
+    /**
+     * Test if {@code this} stream is valid.
+     * This method simply performs {@code stream.valid()}.
+     *
+     * @return {@code true} if the stream represents a valid,
+     *         open file, socket, or other I/O object; {@code false} otherwse.
+     *
+     * @see Stream#valid()
+     */
+    public boolean valid()
+    {
+        return stream.valid();
+    }
+
+    /**
+     * Test wather or not every I/O operation on {@code this} stream will
+     * block until it completes.
+     * This method simply performs {@code stream.isBlocking()}.
+     *
+     * @return {@code true} if, and only if, this stream
+     *         is in blocking mode.
+     *
+     * @throws IOException if an I/O error occurs.
+     * @see Stream#isBlocking()
+     */
+    public boolean isBlocking()
+        throws IOException
+    {
+        return stream.isBlocking();
+    }
+
+    /**
+     * Skips over {@code count} bytes in this stream. Less than {@code count}
+     * bytes are skipped if the end of the stream is reached or an exception is
+     * thrown during the operation. Nothing is done if {@code count} is
+     * negative.
+     * This method simply performs {@code stream.skip(count)}.
+     *
+     * @param count
+     *          The number of bytes to skip.
+     *
+     * @return The number of bytes actually skipped.
+     *
+     * @throws ClosedDescriptorException
+     *          If this stream is closed.
+     * @throws OperationWouldBlockException
+     *          If the stream is in nonblocking mode and the operation
+     *          would block.
+     * @throws OperationNotSupportedException
+     *          If the stream is not seekable.
+     * @throws TimeoutException
+     *          If operation times out.
+     * @throws IOException
+     *          If some other I/O error occurs.
+     */
+    public long skip(long count)
+        throws IOException
+    {
+        return stream.skip(count);
+    }
+ 
+}

Propchange: 
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/FilterStream.java
------------------------------------------------------------------------------
    svn:eol-style = native


Reply via email to