1 /* GNIO - GLib Network Layer of GIO
3 * Copyright (C) 2008 Christian Kellner, Samuel Cormier-Iijima
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General
16 * Public License along with this library; if not, write to the
17 * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
18 * Boston, MA 02111-1307, USA.
20 * Authors: Christian Kellner <gicmo@gnome.org>
21 * Samuel Cormier-Iijima <sciyoshi@gmail.com>
29 #include "gnetworkoutputstream.h"
31 G_DEFINE_TYPE (GNetworkOutputStream, g_network_output_stream, G_TYPE_OUTPUT_STREAM);
39 struct _GNetworkOutputStreamPrivate
45 g_network_output_stream_get_property (GObject *object,
50 GNetworkOutputStream *stream = G_NETWORK_OUTPUT_STREAM (object);
55 g_value_set_object (value, stream->priv->socket);
59 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
64 g_network_output_stream_set_property (GObject *object,
69 GNetworkOutputStream *stream = G_NETWORK_OUTPUT_STREAM (object);
74 stream->priv->socket = g_value_dup_object (value);
78 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
83 g_network_output_stream_finalize (GObject *object)
85 if (G_OBJECT_CLASS (g_network_output_stream_parent_class)->finalize)
86 (*G_OBJECT_CLASS (g_network_output_stream_parent_class)->finalize) (object);
90 g_network_output_stream_dispose (GObject *object)
92 if (G_OBJECT_CLASS (g_network_output_stream_parent_class)->dispose)
93 (*G_OBJECT_CLASS (g_network_output_stream_parent_class)->dispose) (object);
97 g_network_output_stream_write (GOutputStream *stream,
100 GCancellable *cancellable,
103 GNetworkOutputStream *output_stream = G_NETWORK_OUTPUT_STREAM (stream);
105 return g_socket_send (output_stream->priv->socket, (const gchar *) buffer, count, error);
109 g_network_output_stream_class_init (GNetworkOutputStreamClass *klass)
111 GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
112 GOutputStreamClass *goutputstream_class = G_OUTPUT_STREAM_CLASS (klass);
114 g_type_class_add_private (klass, sizeof (GNetworkOutputStreamPrivate));
116 gobject_class->finalize = g_network_output_stream_finalize;
117 gobject_class->dispose = g_network_output_stream_dispose;
118 gobject_class->get_property = g_network_output_stream_get_property;
119 gobject_class->set_property = g_network_output_stream_set_property;
121 goutputstream_class->write_fn = g_network_output_stream_write;
123 g_object_class_install_property (gobject_class, PROP_SOCKET,
124 g_param_spec_object ("socket",
126 "the socket that this stream wraps",
128 G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK));
132 g_network_output_stream_init (GNetworkOutputStream *stream)
134 stream->priv = G_TYPE_INSTANCE_GET_PRIVATE (stream, G_TYPE_NETWORK_OUTPUT_STREAM, GNetworkOutputStreamPrivate);
136 stream->priv->socket = NULL;
139 GNetworkOutputStream *
140 _g_network_output_stream_new (GSocket *socket)
142 return G_NETWORK_OUTPUT_STREAM (g_object_new (G_TYPE_NETWORK_OUTPUT_STREAM, "socket", socket, NULL));