522 lines
12 KiB
Protocol Buffer
522 lines
12 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package mxaccess_gateway.v1;
|
|
|
|
option csharp_namespace = "MxGateway.Contracts.Proto";
|
|
|
|
import "google/protobuf/duration.proto";
|
|
import "google/protobuf/timestamp.proto";
|
|
|
|
// Public client API for MXAccess sessions hosted by the gateway.
|
|
service MxAccessGateway {
|
|
rpc OpenSession(OpenSessionRequest) returns (OpenSessionReply);
|
|
rpc CloseSession(CloseSessionRequest) returns (CloseSessionReply);
|
|
rpc Invoke(MxCommandRequest) returns (MxCommandReply);
|
|
rpc StreamEvents(StreamEventsRequest) returns (stream MxEvent);
|
|
}
|
|
|
|
message OpenSessionRequest {
|
|
string requested_backend = 1;
|
|
string client_session_name = 2;
|
|
string client_correlation_id = 3;
|
|
google.protobuf.Duration command_timeout = 4;
|
|
}
|
|
|
|
message OpenSessionReply {
|
|
string session_id = 1;
|
|
string backend_name = 2;
|
|
int32 worker_process_id = 3;
|
|
uint32 worker_protocol_version = 4;
|
|
repeated string capabilities = 5;
|
|
google.protobuf.Duration default_command_timeout = 6;
|
|
ProtocolStatus protocol_status = 7;
|
|
}
|
|
|
|
message CloseSessionRequest {
|
|
string session_id = 1;
|
|
string client_correlation_id = 2;
|
|
}
|
|
|
|
message CloseSessionReply {
|
|
string session_id = 1;
|
|
SessionState final_state = 2;
|
|
ProtocolStatus protocol_status = 3;
|
|
}
|
|
|
|
message StreamEventsRequest {
|
|
string session_id = 1;
|
|
uint64 after_worker_sequence = 2;
|
|
}
|
|
|
|
message MxCommandRequest {
|
|
string session_id = 1;
|
|
string client_correlation_id = 2;
|
|
MxCommand command = 3;
|
|
}
|
|
|
|
message MxCommand {
|
|
MxCommandKind kind = 1;
|
|
|
|
oneof payload {
|
|
RegisterCommand register = 10;
|
|
UnregisterCommand unregister = 11;
|
|
AddItemCommand add_item = 12;
|
|
AddItem2Command add_item2 = 13;
|
|
RemoveItemCommand remove_item = 14;
|
|
AdviseCommand advise = 15;
|
|
UnAdviseCommand un_advise = 16;
|
|
AdviseSupervisoryCommand advise_supervisory = 17;
|
|
AddBufferedItemCommand add_buffered_item = 18;
|
|
SetBufferedUpdateIntervalCommand set_buffered_update_interval = 19;
|
|
SuspendCommand suspend = 20;
|
|
ActivateCommand activate = 21;
|
|
WriteCommand write = 22;
|
|
Write2Command write2 = 23;
|
|
WriteSecuredCommand write_secured = 24;
|
|
WriteSecured2Command write_secured2 = 25;
|
|
AuthenticateUserCommand authenticate_user = 26;
|
|
ArchestrAUserToIdCommand archestra_user_to_id = 27;
|
|
PingCommand ping = 100;
|
|
GetSessionStateCommand get_session_state = 101;
|
|
GetWorkerInfoCommand get_worker_info = 102;
|
|
DrainEventsCommand drain_events = 103;
|
|
ShutdownWorkerCommand shutdown_worker = 104;
|
|
}
|
|
}
|
|
|
|
enum MxCommandKind {
|
|
MX_COMMAND_KIND_UNSPECIFIED = 0;
|
|
MX_COMMAND_KIND_REGISTER = 1;
|
|
MX_COMMAND_KIND_UNREGISTER = 2;
|
|
MX_COMMAND_KIND_ADD_ITEM = 3;
|
|
MX_COMMAND_KIND_ADD_ITEM2 = 4;
|
|
MX_COMMAND_KIND_REMOVE_ITEM = 5;
|
|
MX_COMMAND_KIND_ADVISE = 6;
|
|
MX_COMMAND_KIND_UN_ADVISE = 7;
|
|
MX_COMMAND_KIND_ADVISE_SUPERVISORY = 8;
|
|
MX_COMMAND_KIND_ADD_BUFFERED_ITEM = 9;
|
|
MX_COMMAND_KIND_SET_BUFFERED_UPDATE_INTERVAL = 10;
|
|
MX_COMMAND_KIND_SUSPEND = 11;
|
|
MX_COMMAND_KIND_ACTIVATE = 12;
|
|
MX_COMMAND_KIND_WRITE = 13;
|
|
MX_COMMAND_KIND_WRITE2 = 14;
|
|
MX_COMMAND_KIND_WRITE_SECURED = 15;
|
|
MX_COMMAND_KIND_WRITE_SECURED2 = 16;
|
|
MX_COMMAND_KIND_AUTHENTICATE_USER = 17;
|
|
MX_COMMAND_KIND_ARCHESTRA_USER_TO_ID = 18;
|
|
MX_COMMAND_KIND_PING = 100;
|
|
MX_COMMAND_KIND_GET_SESSION_STATE = 101;
|
|
MX_COMMAND_KIND_GET_WORKER_INFO = 102;
|
|
MX_COMMAND_KIND_DRAIN_EVENTS = 103;
|
|
MX_COMMAND_KIND_SHUTDOWN_WORKER = 104;
|
|
}
|
|
|
|
message RegisterCommand {
|
|
string client_name = 1;
|
|
}
|
|
|
|
message UnregisterCommand {
|
|
int32 server_handle = 1;
|
|
}
|
|
|
|
message AddItemCommand {
|
|
int32 server_handle = 1;
|
|
string item_definition = 2;
|
|
}
|
|
|
|
message AddItem2Command {
|
|
int32 server_handle = 1;
|
|
string item_definition = 2;
|
|
string item_context = 3;
|
|
}
|
|
|
|
message RemoveItemCommand {
|
|
int32 server_handle = 1;
|
|
int32 item_handle = 2;
|
|
}
|
|
|
|
message AdviseCommand {
|
|
int32 server_handle = 1;
|
|
int32 item_handle = 2;
|
|
}
|
|
|
|
message UnAdviseCommand {
|
|
int32 server_handle = 1;
|
|
int32 item_handle = 2;
|
|
}
|
|
|
|
message AdviseSupervisoryCommand {
|
|
int32 server_handle = 1;
|
|
int32 item_handle = 2;
|
|
}
|
|
|
|
message AddBufferedItemCommand {
|
|
int32 server_handle = 1;
|
|
string item_definition = 2;
|
|
string item_context = 3;
|
|
}
|
|
|
|
message SetBufferedUpdateIntervalCommand {
|
|
int32 server_handle = 1;
|
|
int32 update_interval_milliseconds = 2;
|
|
}
|
|
|
|
message SuspendCommand {
|
|
int32 server_handle = 1;
|
|
int32 item_handle = 2;
|
|
}
|
|
|
|
message ActivateCommand {
|
|
int32 server_handle = 1;
|
|
int32 item_handle = 2;
|
|
}
|
|
|
|
message WriteCommand {
|
|
int32 server_handle = 1;
|
|
int32 item_handle = 2;
|
|
MxValue value = 3;
|
|
int32 user_id = 4;
|
|
}
|
|
|
|
message Write2Command {
|
|
int32 server_handle = 1;
|
|
int32 item_handle = 2;
|
|
MxValue value = 3;
|
|
MxValue timestamp_value = 4;
|
|
int32 user_id = 5;
|
|
}
|
|
|
|
message WriteSecuredCommand {
|
|
int32 server_handle = 1;
|
|
int32 item_handle = 2;
|
|
int32 current_user_id = 3;
|
|
int32 verifier_user_id = 4;
|
|
// Credential-sensitive write value. Implementations must not log this field
|
|
// unless an explicit redacted value-logging path is enabled.
|
|
MxValue value = 5;
|
|
}
|
|
|
|
message WriteSecured2Command {
|
|
int32 server_handle = 1;
|
|
int32 item_handle = 2;
|
|
int32 current_user_id = 3;
|
|
int32 verifier_user_id = 4;
|
|
// Credential-sensitive write value. Implementations must not log this field
|
|
// unless an explicit redacted value-logging path is enabled.
|
|
MxValue value = 5;
|
|
MxValue timestamp_value = 6;
|
|
}
|
|
|
|
message AuthenticateUserCommand {
|
|
int32 server_handle = 1;
|
|
string verify_user = 2;
|
|
// Raw MXAccess credential. Implementations must keep this field out of logs,
|
|
// metrics labels, command lines, and diagnostics.
|
|
string verify_user_password = 3;
|
|
}
|
|
|
|
message ArchestrAUserToIdCommand {
|
|
int32 server_handle = 1;
|
|
string user_id_guid = 2;
|
|
}
|
|
|
|
message PingCommand {
|
|
string message = 1;
|
|
}
|
|
|
|
message GetSessionStateCommand {
|
|
}
|
|
|
|
message GetWorkerInfoCommand {
|
|
}
|
|
|
|
message DrainEventsCommand {
|
|
uint32 max_events = 1;
|
|
}
|
|
|
|
message ShutdownWorkerCommand {
|
|
google.protobuf.Duration grace_period = 1;
|
|
}
|
|
|
|
message MxCommandReply {
|
|
string session_id = 1;
|
|
string correlation_id = 2;
|
|
MxCommandKind kind = 3;
|
|
ProtocolStatus protocol_status = 4;
|
|
// HRESULT captured from MXAccess or a COM exception. This remains separate
|
|
// from gateway protocol status so MXAccess parity details are not hidden by
|
|
// transport failures.
|
|
optional int32 hresult = 5;
|
|
MxValue return_value = 6;
|
|
repeated MxStatusProxy statuses = 7;
|
|
string diagnostic_message = 8;
|
|
|
|
oneof payload {
|
|
RegisterReply register = 20;
|
|
AddItemReply add_item = 21;
|
|
AddItem2Reply add_item2 = 22;
|
|
AddBufferedItemReply add_buffered_item = 23;
|
|
SuspendReply suspend = 24;
|
|
ActivateReply activate = 25;
|
|
AuthenticateUserReply authenticate_user = 26;
|
|
ArchestrAUserToIdReply archestra_user_to_id = 27;
|
|
SessionStateReply session_state = 100;
|
|
WorkerInfoReply worker_info = 101;
|
|
DrainEventsReply drain_events = 102;
|
|
}
|
|
}
|
|
|
|
message RegisterReply {
|
|
int32 server_handle = 1;
|
|
}
|
|
|
|
message AddItemReply {
|
|
int32 item_handle = 1;
|
|
}
|
|
|
|
message AddItem2Reply {
|
|
int32 item_handle = 1;
|
|
}
|
|
|
|
message AddBufferedItemReply {
|
|
int32 item_handle = 1;
|
|
}
|
|
|
|
message SuspendReply {
|
|
MxStatusProxy status = 1;
|
|
}
|
|
|
|
message ActivateReply {
|
|
MxStatusProxy status = 1;
|
|
}
|
|
|
|
message AuthenticateUserReply {
|
|
int32 user_id = 1;
|
|
}
|
|
|
|
message ArchestrAUserToIdReply {
|
|
int32 user_id = 1;
|
|
}
|
|
|
|
message SessionStateReply {
|
|
SessionState state = 1;
|
|
}
|
|
|
|
message WorkerInfoReply {
|
|
int32 worker_process_id = 1;
|
|
string worker_version = 2;
|
|
string mxaccess_progid = 3;
|
|
string mxaccess_clsid = 4;
|
|
}
|
|
|
|
message DrainEventsReply {
|
|
repeated MxEvent events = 1;
|
|
}
|
|
|
|
message MxEvent {
|
|
MxEventFamily family = 1;
|
|
string session_id = 2;
|
|
int32 server_handle = 3;
|
|
int32 item_handle = 4;
|
|
MxValue value = 5;
|
|
int32 quality = 6;
|
|
google.protobuf.Timestamp source_timestamp = 7;
|
|
repeated MxStatusProxy statuses = 8;
|
|
uint64 worker_sequence = 9;
|
|
google.protobuf.Timestamp worker_timestamp = 10;
|
|
google.protobuf.Timestamp gateway_receive_timestamp = 11;
|
|
optional int32 hresult = 12;
|
|
string raw_status = 13;
|
|
|
|
oneof body {
|
|
OnDataChangeEvent on_data_change = 20;
|
|
OnWriteCompleteEvent on_write_complete = 21;
|
|
OperationCompleteEvent operation_complete = 22;
|
|
OnBufferedDataChangeEvent on_buffered_data_change = 23;
|
|
}
|
|
}
|
|
|
|
enum MxEventFamily {
|
|
MX_EVENT_FAMILY_UNSPECIFIED = 0;
|
|
MX_EVENT_FAMILY_ON_DATA_CHANGE = 1;
|
|
MX_EVENT_FAMILY_ON_WRITE_COMPLETE = 2;
|
|
MX_EVENT_FAMILY_OPERATION_COMPLETE = 3;
|
|
MX_EVENT_FAMILY_ON_BUFFERED_DATA_CHANGE = 4;
|
|
}
|
|
|
|
message OnDataChangeEvent {
|
|
}
|
|
|
|
message OnWriteCompleteEvent {
|
|
}
|
|
|
|
message OperationCompleteEvent {
|
|
}
|
|
|
|
message OnBufferedDataChangeEvent {
|
|
MxDataType data_type = 1;
|
|
MxArray quality_values = 2;
|
|
MxArray timestamp_values = 3;
|
|
int32 raw_data_type = 4;
|
|
}
|
|
|
|
message MxStatusProxy {
|
|
int32 success = 1;
|
|
MxStatusCategory category = 2;
|
|
MxStatusSource detected_by = 3;
|
|
int32 detail = 4;
|
|
int32 raw_category = 5;
|
|
int32 raw_detected_by = 6;
|
|
string diagnostic_text = 7;
|
|
}
|
|
|
|
enum MxStatusCategory {
|
|
MX_STATUS_CATEGORY_UNSPECIFIED = 0;
|
|
MX_STATUS_CATEGORY_UNKNOWN = 1;
|
|
MX_STATUS_CATEGORY_OK = 2;
|
|
MX_STATUS_CATEGORY_PENDING = 3;
|
|
MX_STATUS_CATEGORY_WARNING = 4;
|
|
MX_STATUS_CATEGORY_COMMUNICATION_ERROR = 5;
|
|
MX_STATUS_CATEGORY_CONFIGURATION_ERROR = 6;
|
|
MX_STATUS_CATEGORY_OPERATIONAL_ERROR = 7;
|
|
MX_STATUS_CATEGORY_SECURITY_ERROR = 8;
|
|
MX_STATUS_CATEGORY_SOFTWARE_ERROR = 9;
|
|
MX_STATUS_CATEGORY_OTHER_ERROR = 10;
|
|
}
|
|
|
|
enum MxStatusSource {
|
|
MX_STATUS_SOURCE_UNSPECIFIED = 0;
|
|
MX_STATUS_SOURCE_UNKNOWN = 1;
|
|
MX_STATUS_SOURCE_REQUESTING_LMX = 2;
|
|
MX_STATUS_SOURCE_RESPONDING_LMX = 3;
|
|
MX_STATUS_SOURCE_REQUESTING_NMX = 4;
|
|
MX_STATUS_SOURCE_RESPONDING_NMX = 5;
|
|
MX_STATUS_SOURCE_REQUESTING_AUTOMATION_OBJECT = 6;
|
|
MX_STATUS_SOURCE_RESPONDING_AUTOMATION_OBJECT = 7;
|
|
}
|
|
|
|
message MxValue {
|
|
MxDataType data_type = 1;
|
|
string variant_type = 2;
|
|
bool is_null = 3;
|
|
string raw_diagnostic = 4;
|
|
int32 raw_data_type = 5;
|
|
|
|
oneof kind {
|
|
bool bool_value = 10;
|
|
int32 int32_value = 11;
|
|
int64 int64_value = 12;
|
|
float float_value = 13;
|
|
double double_value = 14;
|
|
string string_value = 15;
|
|
google.protobuf.Timestamp timestamp_value = 16;
|
|
MxArray array_value = 17;
|
|
bytes raw_value = 18;
|
|
}
|
|
}
|
|
|
|
message MxArray {
|
|
MxDataType element_data_type = 1;
|
|
string variant_type = 2;
|
|
repeated uint32 dimensions = 3;
|
|
string raw_diagnostic = 4;
|
|
int32 raw_element_data_type = 5;
|
|
|
|
oneof values {
|
|
BoolArray bool_values = 10;
|
|
Int32Array int32_values = 11;
|
|
Int64Array int64_values = 12;
|
|
FloatArray float_values = 13;
|
|
DoubleArray double_values = 14;
|
|
StringArray string_values = 15;
|
|
TimestampArray timestamp_values = 16;
|
|
RawArray raw_values = 17;
|
|
}
|
|
}
|
|
|
|
message BoolArray {
|
|
repeated bool values = 1;
|
|
}
|
|
|
|
message Int32Array {
|
|
repeated int32 values = 1;
|
|
}
|
|
|
|
message Int64Array {
|
|
repeated int64 values = 1;
|
|
}
|
|
|
|
message FloatArray {
|
|
repeated float values = 1;
|
|
}
|
|
|
|
message DoubleArray {
|
|
repeated double values = 1;
|
|
}
|
|
|
|
message StringArray {
|
|
repeated string values = 1;
|
|
}
|
|
|
|
message TimestampArray {
|
|
repeated google.protobuf.Timestamp values = 1;
|
|
}
|
|
|
|
message RawArray {
|
|
repeated bytes values = 1;
|
|
}
|
|
|
|
enum MxDataType {
|
|
MX_DATA_TYPE_UNSPECIFIED = 0;
|
|
MX_DATA_TYPE_UNKNOWN = 1;
|
|
MX_DATA_TYPE_NO_DATA = 2;
|
|
MX_DATA_TYPE_BOOLEAN = 3;
|
|
MX_DATA_TYPE_INTEGER = 4;
|
|
MX_DATA_TYPE_FLOAT = 5;
|
|
MX_DATA_TYPE_DOUBLE = 6;
|
|
MX_DATA_TYPE_STRING = 7;
|
|
MX_DATA_TYPE_TIME = 8;
|
|
MX_DATA_TYPE_ELAPSED_TIME = 9;
|
|
MX_DATA_TYPE_REFERENCE_TYPE = 10;
|
|
MX_DATA_TYPE_STATUS_TYPE = 11;
|
|
MX_DATA_TYPE_ENUM = 12;
|
|
MX_DATA_TYPE_SECURITY_CLASSIFICATION_ENUM = 13;
|
|
MX_DATA_TYPE_DATA_QUALITY_TYPE = 14;
|
|
MX_DATA_TYPE_QUALIFIED_ENUM = 15;
|
|
MX_DATA_TYPE_QUALIFIED_STRUCT = 16;
|
|
MX_DATA_TYPE_INTERNATIONALIZED_STRING = 17;
|
|
MX_DATA_TYPE_BIG_STRING = 18;
|
|
MX_DATA_TYPE_END = 19;
|
|
}
|
|
|
|
message ProtocolStatus {
|
|
ProtocolStatusCode code = 1;
|
|
string message = 2;
|
|
}
|
|
|
|
enum ProtocolStatusCode {
|
|
PROTOCOL_STATUS_CODE_UNSPECIFIED = 0;
|
|
PROTOCOL_STATUS_CODE_OK = 1;
|
|
PROTOCOL_STATUS_CODE_INVALID_REQUEST = 2;
|
|
PROTOCOL_STATUS_CODE_SESSION_NOT_FOUND = 3;
|
|
PROTOCOL_STATUS_CODE_SESSION_NOT_READY = 4;
|
|
PROTOCOL_STATUS_CODE_WORKER_UNAVAILABLE = 5;
|
|
PROTOCOL_STATUS_CODE_TIMEOUT = 6;
|
|
PROTOCOL_STATUS_CODE_CANCELED = 7;
|
|
PROTOCOL_STATUS_CODE_PROTOCOL_VIOLATION = 8;
|
|
PROTOCOL_STATUS_CODE_MXACCESS_FAILURE = 9;
|
|
}
|
|
|
|
enum SessionState {
|
|
SESSION_STATE_UNSPECIFIED = 0;
|
|
SESSION_STATE_CREATING = 1;
|
|
SESSION_STATE_STARTING_WORKER = 2;
|
|
SESSION_STATE_WAITING_FOR_PIPE = 3;
|
|
SESSION_STATE_HANDSHAKING = 4;
|
|
SESSION_STATE_INITIALIZING_WORKER = 5;
|
|
SESSION_STATE_READY = 6;
|
|
SESSION_STATE_CLOSING = 7;
|
|
SESSION_STATE_CLOSED = 8;
|
|
SESSION_STATE_FAULTED = 9;
|
|
}
|