mirror of
https://gitlab.com/fabinfra/fabaccess/fabaccess-api.git
synced 2025-03-12 23:01:47 +01:00
34 lines
1.3 KiB
Cap'n Proto
34 lines
1.3 KiB
Cap'n Proto
@0xc0787ef6e3cb87e1;
|
|
|
|
using CSharp = import "programming_language/csharp.capnp";
|
|
$CSharp.namespace("FabAccessAPI.Schema");
|
|
|
|
using import "resource.capnp".Resource;
|
|
using import "utils.capnp".OID;
|
|
using import "utils.capnp".Map;
|
|
|
|
interface Notifiable {
|
|
traits @0 () -> Map(OID, AnyPointer);
|
|
}
|
|
|
|
interface Notify(State, Update) {
|
|
state @0 () -> ( state :State );
|
|
# Returns the current state of a resource.
|
|
|
|
subscribe @1 ( subscriber :Subscriber(Update) ) -> ( subscription :Subscription );
|
|
# Subscribe to state updates. The passed in `subscriber` is an interface implemented on the
|
|
# client side that a server calls to send update notifications.
|
|
}
|
|
|
|
interface Subscriber(Update) {
|
|
update @0 ( update :Update ) -> ();
|
|
# Called by a server when a new state was produced for this resource. This method MAY not be
|
|
# called when a resource was updated but did not change its state. A server will only ever have
|
|
# one running update call per client session, so a client can limit the rate of updates by not
|
|
# resolving this call immediately. A server will coalesce multiple updates into a single update
|
|
# notification, meaning a client is not guaranteed to receive every intermediary state for a
|
|
# resource.
|
|
}
|
|
|
|
interface Subscription { }
|