You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by mt...@apache.org on 2009/10/08 19:51:33 UTC

svn commit: r823244 - in /commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io: FileInstance.java FileWrapper.java

Author: mturk
Date: Thu Oct  8 17:51:33 2009
New Revision: 823244

URL: http://svn.apache.org/viewvc?rev=823244&view=rev
Log:
Add few more File methods

Modified:
    commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/FileInstance.java
    commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/FileWrapper.java

Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/FileInstance.java
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/FileInstance.java?rev=823244&r1=823243&r2=823244&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/FileInstance.java (original)
+++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/FileInstance.java Thu Oct  8 17:51:33 2009
@@ -160,9 +160,6 @@
      *
      * @throws ClosedDescriptorException
      *          If this file is closed.
-     * @throws AsyncClosedDescriptorException
-     *          If another thread closes this file while the lock
-     *          operation is in progress.
      * @throws IOException
      *          If some other I/O error occurs.
      */
@@ -174,6 +171,90 @@
     }
 
     /**
+     * Test the end-of-file indicator.
+     *
+     * @return {@code true} if end-of-file was reached.
+     *
+     * @throws ClosedDescriptorException
+     *          If this file is closed.
+     * @throws IOException
+     *          If some other I/O error occurs.
+     */
+    public boolean eof()
+        throws IOException
+    {
+        return FileWrapper.eof(fd);
+    }
+
+    /**
+     * Test the file blocking mode.
+     *
+     * @return {@code true} if file operations are blocking.
+     *
+     * @throws ClosedDescriptorException
+     *          If this file is closed.
+     * @throws IOException
+     *          If some other I/O error occurs.
+     */
+    public boolean isBlocking()
+        throws IOException
+    {
+        return FileWrapper.blocking(fd);
+    }
+
+    /**
+     * Set file timeout.
+     *
+     * @param timeout
+     *          File timeout value in miliseconds.
+     * @return {@code true} if timeout was set. {@code false}
+     *         if file was opened in blocking mode.
+     *
+     * @throws ClosedDescriptorException
+     *          If this file is closed.
+     * @throws IOException
+     *          If some other I/O error occurs.
+     */
+    public boolean setTimeout(int timeout)
+        throws IOException
+    {
+        return FileWrapper.tmset(fd, timeout);
+    }
+
+    /**
+     * Get file timeout.
+     *
+     * @return Current file timeout value in miliseconds.
+     *
+     * @throws ClosedDescriptorException
+     *          If this file is closed.
+     * @throws IOException
+     *          If some other I/O error occurs.
+     */
+    public int getTimeout()
+        throws IOException
+    {
+        return FileWrapper.tmget(fd);
+    }
+
+    /**
+     * Get file type.
+     *
+     * @return This file {@code FileType}.
+     *
+     * @throws ClosedDescriptorException
+     *          If this file is closed.
+     * @throws IOException
+     *          If some other I/O error occurs.
+     * @see FileType
+     */
+    public FileType getFileType()
+        throws IOException
+    {
+        return FileWrapper.ftype(fd);
+    }
+
+    /**
      * Return cannonical file path.
      * <p>
      * Returned path is in Operating system cannonical form with all relative
@@ -187,9 +268,6 @@
      *
      * @throws ClosedDescriptorException
      *          If this file is closed.
-     * @throws AsyncClosedDescriptorException
-     *          If another thread closes this file while the lock
-     *          operation is in progress.
      * @throws IOException
      *          If some other I/O error occurs.
      */

Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/FileWrapper.java
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/FileWrapper.java?rev=823244&r1=823243&r2=823244&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/FileWrapper.java (original)
+++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/FileWrapper.java Thu Oct  8 17:51:33 2009
@@ -42,7 +42,8 @@
         // Nothing.
     }
 
-    private static native boolean eof0(int fd);
+    private static native boolean eof0(int fd)
+        throws IOException;
     /**
      * Returns {@code true} if file reached end-of-file.
      */
@@ -65,11 +66,55 @@
             throw new ClosedDescriptorException();
         int rc = eof1(fd.fd());
         if (rc != 0) {
+            /* This can only happen if file gets closed
+             * between the fd.valid() and eof1(...) call
+             */
             throw new IOException(Status.describe(rc));
         }
     }
 
-    private static native String name0(int fd);
+    private static native boolean blocking0(int fd)
+        throws IOException;
+    /**
+     * Returns {@code true} if file is blocking.
+     */
+    public static boolean blocking(Descriptor fd)
+        throws IOException
+    {
+        if (!fd.valid())
+            throw new ClosedDescriptorException();
+        return blocking0(fd.fd());
+    }
+
+    private static native int tmget0(int fd)
+        throws IOException;
+    /**
+     * Returns file timeout.
+     */
+    public static int tmget(Descriptor fd)
+        throws IOException
+    {
+        if (!fd.valid())
+            throw new ClosedDescriptorException();
+        return tmget0(fd.fd());
+    }
+
+    private static native int tmset0(int fd, int timeout)
+        throws IOException;
+    /**
+     * Returns file timeout.
+     */
+    public static boolean tmset(Descriptor fd, int timeout)
+        throws IOException
+    {
+        if (!fd.valid())
+            throw new ClosedDescriptorException();
+        int rc = tmget0(fd.fd());
+        return rc == 0 ? true : false;
+    }
+
+    private static native String name0(int fd)
+        throws IOException;
     /**
      * Returns real file name.
      */
@@ -81,6 +126,19 @@
         return name0(fd.fd());
     }
 
+    private static native int ftype0(int fd)
+        throws IOException;
+    /**
+     * Returns {@code FileType} name.
+     */
+    public static FileType ftype(Descriptor fd)
+        throws IOException
+    {
+        if (!fd.valid())
+            throw new ClosedDescriptorException();
+        return FileType.valueOf(ftype0(fd.fd()));
+    }
+
     private static native Descriptor open0(String path, int mode)
         throws FileNotFoundException, IOException, SecurityException;
     /**