Re: How do you deal with lengthy server tasks?

Le dimanche 03 février 2019 à 18:26 +0000, Biz.122 via libsoup-list a
écrit :
I would like to stream some audio with soup server. How would you go
about something like that? Each browser request will launch the
server callback that does all processing, but I cannot stay in there
looping and sending data. This will block any other requests.

I looked around a bit and found this:

Look at the "SlowData / soup_add_timeout" example.
Is this how you would typically perform streaming tasks or large file
transfers, and not completely locking up your server callback?

You can pause the message with soup_server_pause_message, launch the
task in background and resume it later with

To send data continuously, you can mix that with a chunked response.

   soup_message_headers_set_encoding (msg, SOUP_ENCODING_CHUNKED);
   soup_server_pause_message (msg);
   g_thread_pool_push (pool, msg, NULL);

In the thread pool (or asynchronously via the GMainLoop):

   soup_message_body_append_take (data, data_len);
   soup_server_unpause_message (msg); // deliver the chunk

   // later when done
   soup_message_complete (msg);
   soup_server_unpause_message (msg);

Best Regards,

Sent with ProtonMail Secure Email.

libsoup-list mailing list
libsoup-list gnome org
Guillaume Poirier-Morency <guillaumepoiriermorency gmail com>

Étudiant à la maîtrise en informatique à l'Université de Montréal
Chercheur à l'IRIC

Mon blog:

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]