Buy commercial curl support from WolfSSL. We help you work
out your issues, debug your libcurl applications, use the API, port to new
platforms, add new features and more. With a team lead by the curl founder
himself.
Re: About a websockets write callback
- Contemporary messages sorted: [ by date ] [ by thread ] [ by subject ] [ by author ] [ by messages with attachments ]
From: Timothe Litt <litt_at_acm.org>
Date: Fri, 17 Jun 2022 09:38:03 -0400
On 17-Jun-22 09:12, Weston Schmidt via curl-library wrote:
> I tend to agree that the existing function signature is a bit too restrictive.
>
> If you don't want a unique to WS function, how about adding a different
> variant across the board for folks?
>
> What about adding a CURLOPT_CTX_WRITEFUNCTION where a
> context object is passed that allows for access back to the curl object &
> access to metadata that might be specific to that function call, etc.
>
> If you want, you could replace the void *userdata with the ctx & then users
> could make a curl_ctx_get_userdata(ctx) vs add more arguments.
>
> For a WS, maybe only CURLOPT_CTX_WRITEFUNCTION is supported,
> but maybe this is an alternative callback to the existing write() format one?
>
> Wes
Or, use the existing callback, but have a CURLOPT to set the handle mode
so that the *userdata becomes a protocol-specific structure. The
curlopt_set_write_callback_mode could take an enum, like "NORMAL,
WEBSOCKET, TELNET (e.g. for urgent data), ..." I would suggest not using
an extended_mode ON/OFF type argument since the requirements are likely
to evolve.
The struct would have a replacement userdata field, a type code, and a
type-specific union of whatever metadata applies.
This avoids creating a new callback and/or a "get metadata" (with the
attendant library storage).
Timothe Litt
ACM Distinguished Engineer
--------------------------
This communication may not represent the ACM or my employer's views,
if any, on the matters discussed.
Received on 2022-06-17
Date: Fri, 17 Jun 2022 09:38:03 -0400
On 17-Jun-22 09:12, Weston Schmidt via curl-library wrote:
> I tend to agree that the existing function signature is a bit too restrictive.
>
> If you don't want a unique to WS function, how about adding a different
> variant across the board for folks?
>
> What about adding a CURLOPT_CTX_WRITEFUNCTION where a
> context object is passed that allows for access back to the curl object &
> access to metadata that might be specific to that function call, etc.
>
> If you want, you could replace the void *userdata with the ctx & then users
> could make a curl_ctx_get_userdata(ctx) vs add more arguments.
>
> For a WS, maybe only CURLOPT_CTX_WRITEFUNCTION is supported,
> but maybe this is an alternative callback to the existing write() format one?
>
> Wes
Or, use the existing callback, but have a CURLOPT to set the handle mode
so that the *userdata becomes a protocol-specific structure. The
curlopt_set_write_callback_mode could take an enum, like "NORMAL,
WEBSOCKET, TELNET (e.g. for urgent data), ..." I would suggest not using
an extended_mode ON/OFF type argument since the requirements are likely
to evolve.
The struct would have a replacement userdata field, a type code, and a
type-specific union of whatever metadata applies.
This avoids creating a new callback and/or a "get metadata" (with the
attendant library storage).
Timothe Litt
ACM Distinguished Engineer
--------------------------
This communication may not represent the ACM or my employer's views,
if any, on the matters discussed.
-- Unsubscribe: https://lists.haxx.se/listinfo/curl-library Etiquette: https://curl.se/mail/etiquette.html
- application/pgp-signature attachment: OpenPGP digital signature