syntax = "proto3";
package sinusoidal.control_api;
// App requests
message Request {
oneof request {
RequestRegister register = 1;
}
}
// Framework responses
message Response {
oneof response {
ResponseError error = 1;
ResponseRegister register = 2;
}
}
// Framework events
message Event {
oneof event {
EventShutdown shutdown = 1;
EventNewSettings new_settings = 2;
}
}
// -- Server Errors -------------------------------------------------------
message ResponseError {
ErrorType error = 1;
string reason = 2;
}
enum ErrorType {
GenericError = 0;
StreamIdError = 1;
RegisterError = 2;
}
// -- Register ------------------------------------------------------------
// Register with the name of the app. Should be unique!
message RequestRegister {
}
message ResponseRegister {
string name = 1;
string input_streams = 2;
string settings = 3;
}
// -- EventShutdown -------------------------------------------------------
message EventShutdown {
}
// -- EventNewSettings ----------------------------------------------------
message EventNewSettings {
string new_settings = 1;
}
// -- Common Types --------------------------------------------------------
message SvStreamId {
uint32 appid = 1;
string svid = 2;
bool simulated = 3;
};
message AppStreamId {
string app_name = 1;
string stream_name = 2;
};
message SysStreamId {
SysStream stream = 1;
};
enum SysStream {
Time = 0;
};
message GooseStreamId {
string go_id = 1;
}
message StreamId {
oneof stream_id {
SvStreamId sv_stream = 1;
AppStreamId app_stream = 2;
SysStreamId sys_stream = 3;
GooseStreamId goose_stream = 4;
};
};
// Qualified trigger id
// Currently only to generate the Erlang type `trigger_id`. Not used in messages.
message TriggerId {
string trigger_id = 1;
};