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.
This PR creates some very breaking changes, but brings the overall implementation of the frisbee client and server inline with what one would expect, while filling some gaps in our implementation with regards to thread safety.
The firs thing this PR does is modifies stream management within the context of a server or client to properly make use of the base context for a server or client when handling new streams - this means the
SetStreamHandler
functions of both the client and the server now accept a context. This context will also now automatically be cancelled if the client or server is closed (or if the underlying client connection is ever closed).This PR also adds a new
StreamContext
option that allows user to override how contexts for streams get created, as well as what values they contain.The main breaking change this PR makes is it removes the
BaseContext
function in the server, and instead sets a staticbaseContext
context that the user can pass in at runtime. This context is used to cancel handler goroutines and not used to kill the server or client itself.What's important to note is that this change is necessary if we want the death of a client or server to also cancel the context.