Unverified Commit 98c23fc1 authored by Alexandru Vasile's avatar Alexandru Vasile Committed by GitHub
Browse files

Return error from subscription callbacks (#799)



* subscription: Allow errors in subscription callbacks

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* subscription: Remove the need to own the error

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* error: Build `ErrorObject` from `CallError` for improved ergonomics

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Update examples for the new subscription API

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Add alias for subscription result

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* macros: Render server subscription method with `ResultSubscription`

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Port `proc_macro` example to new API

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Rename `ResultSubscription` to `ReturnTypeSubscription` to avoid confusion

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Port all tests to new subscription API

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Update documentation

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Port benches

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Replace tabs with spaces & add documentation

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Add dummy error for subscriptions

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Implement `From` for `SubscriptionError`

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Return `SubscriptionError` when parsing params

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Rename `SubscriptionError` to `SubscriptionEmptyError`

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Change `accept` signature

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Port tests to new `accept` api

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Implement `pipe_from_try_stream` and `pipe_from_stream` for `PendingSubscription`

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Modify examples to ilustrate new API

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Fix docs tests

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Rename previously `SubscriptionResult` -> `InnerSubscriptionResult`

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Rename `ReturnTypeSubscription` -> `SubscriptionResult`

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Remove documentation line

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Implement `PipeFromStreamResult`

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Add comment for empty error

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Update proc-macros/src/lib.rs

Co-authored-by: default avatarNiklas Adolfsson <[email protected]>

* Update proc-macros/src/lib.rs

Co-authored-by: default avatarNiklas Adolfsson <[email protected]>

* Update proc-macros/src/lib.rs

Co-authored-by: default avatarNiklas Adolfsson <[email protected]>

* Change `ReturnTypeSubscription` -> `SubscriptionResult`

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Add `ResultConsumed` for `PipeFromStreamResult`

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Update examples to use `PipeFromStreamResult`

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Replace ConsumedResult with Options

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Log warning when subscription callback fails

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Change ubuntu test names

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* server: Make `pipe` methods of `SubscriptionSink` private

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* server: Remove `pipe_from_stream` method of `SubscriptionSink`

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* server: Update PipeFromStreamResult documentation

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Adjust tests to `SubscriptionSink::pipe_from_stream` private interface

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Add `accept-reject` API on `SubscriptionSink`

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Make `pipe_from_try_stream` public

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Maybe accept the subscription

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Revert "server: Remove `pipe_from_stream` method of `SubscriptionSink`"

This reverts commit d3c3ce9c

.

* Make `unsubscribe` channel optional on accepting the connection

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Pass `SubscriptionSink` to subscription callbacks

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Implement subscription sink state

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Submit `InvalidParams` if sink was never accepted

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Handle rejected sinks

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Remove `PendingSubscription`

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Fix doc tests

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* macro: Make subscription sink mutable

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Fix tests and examples

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* macro: Return `sink.reject()` result

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* tests: Add test for `SubscriptionSinkState`

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Test internal subscription sink state

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Fix `send_error` to not always return `false`

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Fix benches

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Remove `PipeFromStreamResult`

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Use valid Json-RPC return code for test errors

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Remove `SubscriptionSinkState`"

* Remodel state machine using `Option`s for `SubscriptionSink`s

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* tests: Double accept / reject API for `SubscriptionSink`

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Implement `SubscriptionAcceptRejectError` for error propagation

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Remove `maybe_accept` wrapper

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Update comments and documentation

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Update core/src/server/rpc_module.rs

Co-authored-by: default avatarNiklas Adolfsson <[email protected]>

* Update core/src/server/rpc_module.rs

Co-authored-by: default avatarNiklas Adolfsson <[email protected]>

* rpc_server: Add type alias for unsubscription calls

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* rpc_server: Improve comment regarding dropped error

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* style: Single line return errors

Signed-off-by: default avatarAlexandru Vasile <[email protected]>

* Make comment more verbose

Co-authored-by: default avatarNiklas Adolfsson <[email protected]>
Co-authored-by: default avatarJames Wilson <[email protected]>
parent a35f8c30
Pipeline #200820 passed with stages
in 5 minutes and 42 seconds
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment