@0xd53fadcd6c8f437f; using Common = import "common.capnp"; using Stream = import "streaming.capnp"; using Tasks = import "tasks.capnp"; using Resources = import "resources.capnp"; using AsyncOps = import "async_ops.capnp"; interface Instrument { watchUpdates @0 (request :InstrumentRequest, receiver :Stream.Receiver(Update)) -> (stream :Stream.Sender); watchTaskDetails @1 (request :TaskDetailsRequest, receiver :Stream.Receiver(Tasks.TaskDetails)) -> (stream :Stream.Sender); pause @2 PauseRequest -> PauseResponse; resume @3 ResumeRequest -> ResumeResponse; } struct InstrumentRequest { } struct Update { now @0 :Common.Timestamp; taskUpdate @1 :Tasks.Update; resourceUpdate @2 :Resources.Update; asyncOpUpdate @3 :AsyncOps.Update; newMetadata @4 :Common.RegisterMetadata; } struct TaskDetailsRequest { id @0 :Common.Id; } struct PauseRequest { } struct PauseResponse { } struct ResumeRequest { } struct ResumeResponse { }