+enum
+{
+ PROP_0,
+ PROP_SOCKET
+};
+
+struct _GNetworkOutputStreamPrivate
+{
+ GSocket *socket;
+};
+
+static void
+g_network_output_stream_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ GNetworkOutputStream *stream = G_NETWORK_OUTPUT_STREAM (object);
+
+ switch (prop_id)
+ {
+ case PROP_SOCKET:
+ g_value_set_object (value, stream->priv->socket);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ }
+}
+
+static void
+g_network_output_stream_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ GNetworkOutputStream *stream = G_NETWORK_OUTPUT_STREAM (object);
+
+ switch (prop_id)
+ {
+ case PROP_SOCKET:
+ stream->priv->socket = g_value_dup_object (value);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ }
+}
+
+static void
+g_network_output_stream_finalize (GObject *object)
+{
+ if (G_OBJECT_CLASS (g_network_output_stream_parent_class)->finalize)
+ (*G_OBJECT_CLASS (g_network_output_stream_parent_class)->finalize) (object);
+}
+
+static void
+g_network_output_stream_dispose (GObject *object)
+{
+ if (G_OBJECT_CLASS (g_network_output_stream_parent_class)->dispose)
+ (*G_OBJECT_CLASS (g_network_output_stream_parent_class)->dispose) (object);
+}
+
+static gssize
+g_network_output_stream_write (GOutputStream *stream,
+ const void *buffer,
+ gsize count,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GNetworkOutputStream *output_stream = G_NETWORK_OUTPUT_STREAM (stream);
+
+ return g_socket_send (output_stream->priv->socket, (const gchar *) buffer, count, error);
+}
+