/* * Licensed under the GNU Lesser General Public License Version 3 * * This library is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the license, or * (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this library. If not, see . */ // generated automatically - do not change module gio.UnixInputStream; private import gio.FileDescriptorBasedIF; private import gio.FileDescriptorBasedT; private import gio.InputStream; private import gio.PollableInputStreamIF; private import gio.PollableInputStreamT; private import gio.c.functions; public import gio.c.types; private import glib.ConstructionException; private import gobject.ObjectG; /** * #GUnixInputStream implements #GInputStream for reading from a UNIX * file descriptor, including asynchronous operations. (If the file * descriptor refers to a socket or pipe, this will use poll() to do * asynchronous I/O. If it refers to a regular file, it will fall back * to doing asynchronous I/O in another thread.) * * Note that `` belongs to the UNIX-specific GIO * interfaces, thus you have to use the `gio-unix-2.0.pc` pkg-config * file when using it. */ public class UnixInputStream : InputStream, FileDescriptorBasedIF, PollableInputStreamIF { /** the main Gtk struct */ protected GUnixInputStream* gUnixInputStream; /** Get the main Gtk struct */ public GUnixInputStream* getUnixInputStreamStruct(bool transferOwnership = false) { if (transferOwnership) ownedRef = false; return gUnixInputStream; } /** the main Gtk struct as a void* */ protected override void* getStruct() { return cast(void*)gUnixInputStream; } protected override void setStruct(GObject* obj) { gUnixInputStream = cast(GUnixInputStream*)obj; super.setStruct(obj); } /** * Sets our main struct and passes it to the parent class. */ public this (GUnixInputStream* gUnixInputStream, bool ownedRef = false) { this.gUnixInputStream = gUnixInputStream; super(cast(GInputStream*)gUnixInputStream, ownedRef); } // add the FileDescriptorBased capabilities mixin FileDescriptorBasedT!(GUnixInputStream); // add the PollableInputStream capabilities mixin PollableInputStreamT!(GUnixInputStream); /** */ public static GType getType() { return g_unix_input_stream_get_type(); } /** * Creates a new #GUnixInputStream for the given @fd. * * If @close_fd is %TRUE, the file descriptor will be closed * when the stream is closed. * * Params: * fd = a UNIX file descriptor * closeFd = %TRUE to close the file descriptor when done * * Returns: a new #GUnixInputStream * * Throws: ConstructionException GTK+ fails to create the object. */ public this(int fd, bool closeFd) { auto p = g_unix_input_stream_new(fd, closeFd); if(p is null) { throw new ConstructionException("null returned by new"); } this(cast(GUnixInputStream*) p, true); } /** * Returns whether the file descriptor of @stream will be * closed when the stream is closed. * * Returns: %TRUE if the file descriptor is closed when done * * Since: 2.20 */ public bool getCloseFd() { return g_unix_input_stream_get_close_fd(gUnixInputStream) != 0; } /** * Return the UNIX file descriptor that the stream reads from. * * Returns: The file descriptor of @stream * * Since: 2.20 */ public int getFd() { return g_unix_input_stream_get_fd(gUnixInputStream); } /** * Sets whether the file descriptor of @stream shall be closed * when the stream is closed. * * Params: * closeFd = %TRUE to close the file descriptor when done * * Since: 2.20 */ public void setCloseFd(bool closeFd) { g_unix_input_stream_set_close_fd(gUnixInputStream, closeFd); } }