Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for libcurl's multi interface #12

Open
7 tasks
gryumov opened this issue Apr 9, 2024 · 7 comments
Open
7 tasks

Add support for libcurl's multi interface #12

gryumov opened this issue Apr 9, 2024 · 7 comments
Assignees

Comments

@gryumov
Copy link
Member

gryumov commented Apr 9, 2024

Add support for libcurl's multi event interface

Description

EasyCurl.jl currently utilizes libcurl’s ‘easy’ synchronous interface. This implies that applications using EasyCurl.jl must follow a sequential request logic, which may not always be the most efficient approach.

To address this limitation, libcurl’s multi interface comes into play. It is built on top of the ‘easy’ interface and should be relatively straightforward to integrate with the existing EasyCurl.jl package.

Given our goal of creating event-driven systems, we are particularly interested in adding the event interface implemented by curl_multi_socket_action function.

Basic requirements

  • The methods must confirm to the library's existing structure
  • The methods must be tested to cover all possible use cases, errors and mistakes
  • The methods must be documented in accordance with the guidelines

Tasks

  • Research the existing implementation of the multi event interface at Downloads.jl
  • Implement a similar event based on top of the existing library.
  • Write tests.
  • Benchmark the solution.

Resources

@bluesmoon
Copy link

Would you consider joining the development of https://github.com/bluesmoon/CurlHTTP.jl instead. It already has support for CurlMulti.

@dmitrii-doronin
Copy link

Hi, @bluesmoon!

We already have a lot of packages (and many more coming) that already rely on EasyCurl.jl, so we can't switch easily. However, I think we could figure something out. Maybe you're willing to do sort of a merger and become one of the contributors? We can work out a plan and help with a rewrite to have this issue covered. What do you think?

@bluesmoon
Copy link

CurlHTTP has been around for a while. We open sourced it 8 months ago, but it has been in use internally at my company for about 3 years, and it's quite mature at this point. We also have a lot of dependence on it as well as other open source packages.

One easy way to get all the functionality into EasyCurl would be to make a EasyCurl into a wrapper around CurlHTTP. I can look into what that would take.

@dmitrii-doronin
Copy link

Funnily enough, EasyCurl has been around for about 6 years in our company, used around in different internal projects. We've decided to open source it not that long ago, too.

I think it's possible to do a soft merger or something like that if you wish. Supporting both interfaces for some time. We shouldn't be clashing around this package though. Nobody wants to rewrite their code base. :)

Do you have any other projects you want to open source? We've made our own registry Green because of the General's rigid policies. We're more lax on naming conventions but more stringent on cod and docs.

@bluesmoon
Copy link

Nice! Yes, there will be other code we open source over time. Will you be at JuliaCon this year? I'll be speaking there.

@dmitrii-doronin
Copy link

I can't say for sure right now, but I'll watch the talks for sure. What are you going to cover?

@bluesmoon
Copy link

The motivation behind CurlHTTP & the capabilities.

@maxfadson maxfadson self-assigned this May 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants