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

fix: make client clone, remove &mut self from subscribe #88

Merged
merged 1 commit into from
Apr 9, 2024

Conversation

obmarg
Copy link
Owner

@obmarg obmarg commented Apr 8, 2024

In #87 a user was having issues using graphql-ws-client in a multithreaded environment. These issues stemmed from:

  1. As Client::subscribe takes &mut self they needed a Arc<RwLock<Client>>, which is a bit annoying.
  2. They want to call Client::close at some point, which takes an owned Client and it's hard to get one of those when you're sharing the client among many threads.

This fixes 1 by removing the mutability from Client::subscribe and 2 by driving Clone on Client.

If a user has cloned the Client and they call close on one instance it'll close all the others. So any future calls to Client::subscribe on those other clients will fail. Not ideal, but I think it's reasonable to expect users to handle this case if they have a need to clone the Client.

In #87 a user was having issues using graphql-ws-client in a multithreaded
environment.  These issues stemmed from:

1. As `Client::subscribe` takes `&mut self` they needed a
   `Arc<RwLock<Client>>`, which is a bit annoying.
2. They want to call `Client::close` at some point, which takes an owned
   `Client` and it's hard to get one of those when you're sharing the client
   among many threads.

This fixes 1 by removing the mutability from `Client::subscribe` and 2 by
driving `Clone` on `Client`.  

If a user has cloned the `Client` and they call `close` on one instance it'll
close all the others.  So any future calls to `Client::subscribe` on those
other clients will fail.  Not ideal, but I think it's reasonable to expect
users to handle this case if they have a need to clone the Client.
@obmarg obmarg merged commit abb80bc into main Apr 9, 2024
2 checks passed
@obmarg obmarg deleted the obmarg/push-vormpzutkqul branch April 9, 2024 09:00
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

Successfully merging this pull request may close these issues.

1 participant