@0xc0787ef6e3cb87e1; using CSharp = import "programming_language/csharp.capnp"; $CSharp.namespace("FabAccessAPI.Schema"); using import "state.capnp".State; using import "state.capnp".Update; interface Notifyable { state @0 () -> ( state :State ); # Returns the current state of a resource. subscribe @1 ( subscriber :Subscriber ) -> ( 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 @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 { }