e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * This code is free software; you can redistribute it and/or modify it
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * under the terms of the GNU General Public License version 2 only, as
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * published by the Free Software Foundation. Oracle designates this
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * particular file as subject to the "Classpath" exception as provided
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * by Oracle in the LICENSE file that accompanied this code.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * This code is distributed in the hope that it will be useful, but WITHOUT
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * version 2 for more details (a copy is included in the LICENSE file that
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * accompanied this code).
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * You should have received a copy of the GNU General Public License version
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * 2 along with this work; if not, write to the Free Software Foundation,
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * or visit www.oracle.com if you need additional information or have any
ab5dfd5e82c7de6e8a7172573741f3c5890a82fa * questions.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekimport java.util.concurrent.atomic.AtomicInteger;
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * Instances of the file descriptor class serve as an opaque handle
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * to the underlying machine-specific structure representing an
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * open file, an open socket, or another source or sink of bytes.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * The main practical use for a file descriptor is to create a
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * {@link FileInputStream} or {@link FileOutputStream} to contain it.
ab5dfd5e82c7de6e8a7172573741f3c5890a82fa * <p>Applications should not create their own file descriptors.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * @author Pavani Diwanji
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * @since JDK1.0
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * A use counter for tracking the FIS/FOS/RAF instances that
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * use this FileDescriptor. The FIS/FOS.finalize() will not release
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * the FileDescriptor if it is still under use by any stream.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * Constructs an (invalid) FileDescriptor
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek // Set up JavaIOFileDescriptorAccess in SharedSecrets
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek sun.misc.SharedSecrets.setJavaIOFileDescriptorAccess(
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek public void set(FileDescriptor obj, int fd) {
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek public void setHandle(FileDescriptor obj, long handle) {
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * A handle to the standard input stream. Usually, this file
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * descriptor is not used directly, but rather via the input stream
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * known as {@code System.in}.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * @see java.lang.System#in
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek public static final FileDescriptor in = standardStream(0);
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * A handle to the standard output stream. Usually, this file
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * descriptor is not used directly, but rather via the output stream
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * known as {@code System.out}.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * @see java.lang.System#out
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek public static final FileDescriptor out = standardStream(1);
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * A handle to the standard error stream. Usually, this file
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * descriptor is not used directly, but rather via the output stream
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * known as {@code System.err}.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * @see java.lang.System#err
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek public static final FileDescriptor err = standardStream(2);
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * Tests if this file descriptor object is valid.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * @return {@code true} if the file descriptor object represents a
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * valid, open file, socket, or other active I/O connection;
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * {@code false} otherwise.
return desc;