[C][Client]Support data callback function #7467
Merged
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 is a special API design:
When the client issues a http request, http server will block the request ( does not return to client ), and write some data to stream to client continuously.
e.g.
In kubernetes, when client issues a
watch
request, kube-apiserver will block this request, but write the watch event data to the stream to client once there is new event such as pod creation/deletion. Client needs to read and handle these event data.But for now, c generator does not support this mode because
apiClient_invoke
andwriteDataCallback
have no chance to access the raw data if the request is blocking.This PR adds a
data_callback_func
towriteDataCallback
, if it is not NULL, it will be called to access the data received. By this means, user can inject a data_callback_func to handle when the request is blocking.This change does not impact current request logic because
apiClient->data_callback_func = NULL
by default.PR checklist
./bin/generate-samples.sh
to update all Petstore samples related to your fix. This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master. These must match the expectations made by your contribution. You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example./bin/generate-samples.sh bin/configs/java*
. For Windows users, please run the script in Git BASH.master
@wing328 @zhemant @michelealbano