-
Notifications
You must be signed in to change notification settings - Fork 224
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
[Braindump] Proposal for redesigning the client interface #607
Open
slinkydeveloper
wants to merge
2
commits into
cloudevents:main
Choose a base branch
from
slinkydeveloper:client_redesign
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
how about leaving StartReceiver and also add the blocking single pulling functions?
you still need a hook on client to give it a thread, I am not seeing how that is happening without dramatically changing the contract.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So one of the points with this proposal is that I would love to relax this assumption on the protocol side https://github.com/cloudevents/sdk-go/pull/606/files#diff-484d929efc01852c00d94e8e519500757204bacd6a67224c50db3c805eabc8f5R12 and enforce only in
StartReceiver
, where it really matters. NorStartReceiver
or invoking from multiple threadsReceive
makes sense in the context of Websockets.My worry is that, If we put everything in
Client
, we'll have races everywhere, because we need to handle a lot of different cases:While, if we make it clear that
StartReceiver
is like one level up/different to the client, e.g. accepting directly theProtocol
inStartReceiver
, then we have a clean implementation, both forStartReceiver
and forClient.Receive
. And also makes pretty clear to the user the usage aka don't mess up withReceive
andStartReceiver
at the same time.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe want you are saying is we need a new implementation for a stream based client. Client is for more like pub/sub style apis, and we can create a new one specific for streams like WS provides?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pretty much, but in particular my point is that I see the pub/sub APIs as a layer on top of a stream API (in fact, protocol APIs are already stream apis)