Remove build warning
[platform/upstream/libsoup.git] / libsoup / soup-session-sync.c
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
2 /*
3  * soup-session-sync.c
4  *
5  * Copyright (C) 2000-2003, Ximian, Inc.
6  */
7
8 #ifdef HAVE_CONFIG_H
9 #include <config.h>
10 #endif
11
12 #include "soup-session-sync.h"
13 #include "soup.h"
14 #include "soup-session-private.h"
15 #include "soup-message-private.h"
16 #include "soup-message-queue.h"
17
18 /**
19  * SECTION:soup-session-sync
20  * @short_description: (Deprecated) SoupSession for blocking I/O in
21  *   multithreaded programs.
22  *
23  * #SoupSessionSync is an implementation of #SoupSession that uses
24  * synchronous I/O, intended for use in multi-threaded programs.
25  *
26  * As of libsoup 2.42, this is deprecated in favor of the plain
27  * #SoupSession class (which uses both asynchronous and synchronous
28  * I/O, depending on the API used). See the <link
29  * linkend="libsoup-session-porting">porting guide</link>.
30  **/
31
32 G_DEFINE_TYPE (SoupSessionSync, soup_session_sync, SOUP_TYPE_SESSION)
33
34 static void
35 soup_session_sync_init (SoupSessionSync *ss)
36 {
37 }
38
39 /**
40  * soup_session_sync_new:
41  *
42  * Creates an synchronous #SoupSession with the default options.
43  *
44  * Return value: the new session.
45  *
46  * Deprecated: #SoupSessionSync is deprecated; use a plain
47  * #SoupSession, created with soup_session_new(). See the <link
48  * linkend="libsoup-session-porting">porting guide</link>.
49  **/
50 SoupSession *
51 soup_session_sync_new (void)
52 {
53         return g_object_new (SOUP_TYPE_SESSION_SYNC, NULL);
54 }
55
56 /**
57  * soup_session_sync_new_with_options:
58  * @optname1: name of first property to set
59  * @...: value of @optname1, followed by additional property/value pairs
60  *
61  * Creates an synchronous #SoupSession with the specified options.
62  *
63  * Return value: the new session.
64  *
65  * Deprecated: #SoupSessionSync is deprecated; use a plain
66  * #SoupSession, created with soup_session_new_with_options(). See the
67  * <link linkend="libsoup-session-porting">porting guide</link>.
68  **/
69 SoupSession *
70 soup_session_sync_new_with_options (const char *optname1, ...)
71 {
72         SoupSession *session;
73         va_list ap;
74
75         va_start (ap, optname1);
76         session = (SoupSession *)g_object_new_valist (SOUP_TYPE_SESSION_SYNC,
77                                                       optname1, ap);
78         va_end (ap);
79
80         return session;
81 }
82
83 static gboolean
84 queue_message_callback (gpointer data)
85 {
86         SoupMessageQueueItem *item = data;
87
88         item->callback (item->session, item->msg, item->callback_data);
89         soup_message_queue_item_unref (item);
90         return FALSE;
91 }
92
93 static gpointer
94 queue_message_thread (gpointer data)
95 {
96         SoupMessageQueueItem *item = data;
97
98         soup_session_process_queue_item (item->session, item, NULL, TRUE);
99         if (item->callback) {
100                 soup_add_completion (soup_session_get_async_context (item->session),
101                                      queue_message_callback, item);
102         } else
103                 soup_message_queue_item_unref (item);
104
105         return NULL;
106 }
107
108 static void
109 soup_session_sync_queue_message (SoupSession *session, SoupMessage *msg,
110                                  SoupSessionCallback callback, gpointer user_data)
111 {
112         SoupMessageQueueItem *item;
113         GThread *thread;
114
115         item = soup_session_append_queue_item (session, msg, FALSE, FALSE,
116                                                callback, user_data);
117         thread = g_thread_new ("SoupSessionSync:queue_message",
118                                queue_message_thread, item);
119         g_thread_unref (thread);
120 }
121
122 static void
123 soup_session_sync_class_init (SoupSessionSyncClass *session_sync_class)
124 {
125         SoupSessionClass *session_class = SOUP_SESSION_CLASS (session_sync_class);
126
127         /* virtual method override */
128         session_class->queue_message = soup_session_sync_queue_message;
129 }