Home | History | Annotate | Download | only in ch
      1 /*
      2  * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
      3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
      4  *
      5  * This code is free software; you can redistribute it and/or modify it
      6  * under the terms of the GNU General Public License version 2 only, as
      7  * published by the Free Software Foundation.  Oracle designates this
      8  * particular file as subject to the "Classpath" exception as provided
      9  * by Oracle in the LICENSE file that accompanied this code.
     10  *
     11  * This code is distributed in the hope that it will be useful, but WITHOUT
     12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
     13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
     14  * version 2 for more details (a copy is included in the LICENSE file that
     15  * accompanied this code).
     16  *
     17  * You should have received a copy of the GNU General Public License version
     18  * 2 along with this work; if not, write to the Free Software Foundation,
     19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
     20  *
     21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
     22  * or visit www.oracle.com if you need additional information or have any
     23  * questions.
     24  */
     25 
     26 package sun.nio.ch;
     27 
     28 import java.io.FileDescriptor;
     29 import java.io.IOException;
     30 
     31 /*
     32  * Represents a key to a specific file on Solaris or Linux
     33  */
     34 public class FileKey {
     35 
     36     private long st_dev;    // ID of device
     37     private long st_ino;    // Inode number
     38 
     39     private FileKey() { }
     40 
     41     public static FileKey create(FileDescriptor fd) {
     42         FileKey fk = new FileKey();
     43         try {
     44             fk.init(fd);
     45         } catch (IOException ioe) {
     46             throw new Error(ioe);
     47         }
     48         return fk;
     49     }
     50 
     51     public int hashCode() {
     52         return (int)(st_dev ^ (st_dev >>> 32)) +
     53                (int)(st_ino ^ (st_ino >>> 32));
     54     }
     55 
     56     public boolean equals(Object obj) {
     57         if (obj == this)
     58             return true;
     59         if (!(obj instanceof FileKey))
     60             return false;
     61         FileKey other = (FileKey)obj;
     62         if ((this.st_dev != other.st_dev) ||
     63             (this.st_ino != other.st_ino)) {
     64             return false;
     65         }
     66         return true;
     67     }
     68 
     69     private native void init(FileDescriptor fd) throws IOException;
     70 }
     71