SoupSessionSync

SoupSessionSync — Soup session for blocking I/O in multithreaded programs.

Synopsis

                    SoupSessionSync;
SoupSession*        soup_session_sync_new               (void);
SoupSession*        soup_session_sync_new_with_options  (const char *optname1,
                                                         ...);

Description

SoupSessionSync is an implementation of SoupSession that uses synchronous I/O, intended for use in multi-threaded programs.

You can use SoupSessionSync from multiple threads concurrently. Eg, you can send a SoupMessage in one thread, and then while waiting for the response, send another SoupMessage from another thread. You can also send a message from one thread and then call soup_session_cancel_message() on it from any other thread (although you need to be careful to avoid race conditions, where the message finishes and is then unreffed by the sending thread just before you cancel it).

However, the majority of other types and methods in libsoup are not MT-safe. In particular, you cannot modify or examine a SoupMessage while it is being transmitted by SoupSessionSync in another thread. Once a message has been handed off to SoupSessionSync, it can only be manipulated from its signal handler callbacks, until I/O is complete.

Details

SoupSessionSync

typedef struct {
	SoupSession parent;
} SoupSessionSync;


soup_session_sync_new ()

SoupSession*        soup_session_sync_new               (void);

Creates an synchronous SoupSession with the default options.

Returns : the new session.

soup_session_sync_new_with_options ()

SoupSession*        soup_session_sync_new_with_options  (const char *optname1,
                                                         ...);

Creates an synchronous SoupSession with the specified options.

optname1 : name of first property to set
... : value of optname1, followed by additional property/value pairs
Returns : the new session.