#include "gcancellable.h"
#include "gpollableinputstream.h"
#include "gioerror.h"
-
+#include "gfiledescriptorbased.h"
static void g_socket_input_stream_pollable_iface_init (GPollableInputStreamInterface *iface);
+#ifdef G_OS_UNIX
+static void g_socket_input_stream_file_descriptor_based_iface_init (GFileDescriptorBasedIface *iface);
+#endif
#define g_socket_input_stream_get_type _g_socket_input_stream_get_type
G_DEFINE_TYPE_WITH_CODE (GSocketInputStream, g_socket_input_stream, G_TYPE_INPUT_STREAM,
G_IMPLEMENT_INTERFACE (G_TYPE_POLLABLE_INPUT_STREAM, g_socket_input_stream_pollable_iface_init)
+#ifdef G_OS_UNIX
+
+ G_IMPLEMENT_INTERFACE (G_TYPE_FILE_DESCRIPTOR_BASED, g_socket_input_stream_file_descriptor_based_iface_init)
+#endif
)
enum
NULL, error);
}
+#ifdef G_OS_UNIX
+static int
+g_socket_input_stream_get_fd (GFileDescriptorBased *fd_based)
+{
+ GSocketInputStream *input_stream = G_SOCKET_INPUT_STREAM (fd_based);
+
+ return g_socket_get_fd (input_stream->priv->socket);
+}
+#endif
+
static void
g_socket_input_stream_class_init (GSocketInputStreamClass *klass)
{
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
}
+#ifdef G_OS_UNIX
+static void
+g_socket_input_stream_file_descriptor_based_iface_init (GFileDescriptorBasedIface *iface)
+{
+ iface->get_fd = g_socket_input_stream_get_fd;
+}
+#endif
+
static void
g_socket_input_stream_pollable_iface_init (GPollableInputStreamInterface *iface)
{
#include "goutputstream.h"
#include "gsocketoutputstream.h"
#include "gsocket.h"
+#include "glibintl.h"
#include "gsimpleasyncresult.h"
#include "gcancellable.h"
#include "gpollableoutputstream.h"
#include "gioerror.h"
#include "glibintl.h"
-
+#include "gfiledescriptorbased.h"
static void g_socket_output_stream_pollable_iface_init (GPollableOutputStreamInterface *iface);
+#ifdef G_OS_UNIX
+static void g_socket_output_stream_file_descriptor_based_iface_init (GFileDescriptorBasedIface *iface);
+#endif
#define g_socket_output_stream_get_type _g_socket_output_stream_get_type
G_DEFINE_TYPE_WITH_CODE (GSocketOutputStream, g_socket_output_stream, G_TYPE_OUTPUT_STREAM,
G_IMPLEMENT_INTERFACE (G_TYPE_POLLABLE_OUTPUT_STREAM, g_socket_output_stream_pollable_iface_init)
- )
+#ifdef G_OS_UNIX
+ G_IMPLEMENT_INTERFACE (G_TYPE_FILE_DESCRIPTOR_BASED, g_socket_output_stream_file_descriptor_based_iface_init)
+#endif
+);
enum
{
NULL, error);
}
+#ifdef G_OS_UNIX
+static int
+g_socket_output_stream_get_fd (GFileDescriptorBased *fd_based)
+{
+ GSocketOutputStream *output_stream = G_SOCKET_OUTPUT_STREAM (fd_based);
+
+ return g_socket_get_fd (output_stream->priv->socket);
+}
+#endif
+
static void
g_socket_output_stream_class_init (GSocketOutputStreamClass *klass)
{
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
}
+#ifdef G_OS_UNIX
+static void
+g_socket_output_stream_file_descriptor_based_iface_init (GFileDescriptorBasedIface *iface)
+{
+ iface->get_fd = g_socket_output_stream_get_fd;
+}
+#endif
+
static void
g_socket_output_stream_pollable_iface_init (GPollableOutputStreamInterface *iface)
{
#include "gunixinputstream.h"
#include "gcancellable.h"
#include "gasynchelper.h"
+#include "gfiledescriptorbased.h"
#include "glibintl.h"
};
static void g_unix_input_stream_pollable_iface_init (GPollableInputStreamInterface *iface);
+static void g_unix_input_stream_file_descriptor_based_iface_init (GFileDescriptorBasedIface *iface);
G_DEFINE_TYPE_WITH_CODE (GUnixInputStream, g_unix_input_stream, G_TYPE_INPUT_STREAM,
G_IMPLEMENT_INTERFACE (G_TYPE_POLLABLE_INPUT_STREAM,
g_unix_input_stream_pollable_iface_init)
- );
+ G_IMPLEMENT_INTERFACE (G_TYPE_FILE_DESCRIPTOR_BASED,
+ g_unix_input_stream_file_descriptor_based_iface_init)
+ )
struct _GUnixInputStreamPrivate {
int fd;
}
static void
+g_unix_input_stream_file_descriptor_based_iface_init (GFileDescriptorBasedIface *iface)
+{
+ iface->get_fd = (int (*) (GFileDescriptorBased *))g_unix_input_stream_get_fd;
+}
+
+static void
g_unix_input_stream_set_property (GObject *object,
guint prop_id,
const GValue *value,
#include "gcancellable.h"
#include "gsimpleasyncresult.h"
#include "gasynchelper.h"
+#include "gfiledescriptorbased.h"
#include "glibintl.h"
};
static void g_unix_output_stream_pollable_iface_init (GPollableOutputStreamInterface *iface);
+static void g_unix_output_stream_file_descriptor_based_iface_init (GFileDescriptorBasedIface *iface);
G_DEFINE_TYPE_WITH_CODE (GUnixOutputStream, g_unix_output_stream, G_TYPE_OUTPUT_STREAM,
G_IMPLEMENT_INTERFACE (G_TYPE_POLLABLE_OUTPUT_STREAM,
g_unix_output_stream_pollable_iface_init)
- );
+ G_IMPLEMENT_INTERFACE (G_TYPE_FILE_DESCRIPTOR_BASED,
+ g_unix_output_stream_file_descriptor_based_iface_init)
+ )
struct _GUnixOutputStreamPrivate {
int fd;
}
static void
+g_unix_output_stream_file_descriptor_based_iface_init (GFileDescriptorBasedIface *iface)
+{
+ iface->get_fd = (int (*) (GFileDescriptorBased *))g_unix_output_stream_get_fd;
+}
+
+static void
g_unix_output_stream_set_property (GObject *object,
guint prop_id,
const GValue *value,