syntax = "proto3";
package ubii.services;

import "clients/client.proto";
import "devices/component.proto";
import "devices/device.proto";
import "devices/topicMux.proto";
import "devices/topicDemux.proto";
import "sessions/session.proto";
import "services/request/topicSubscription.proto";
import "processing/processingModule.proto";
import "processing/lockstepProcessing.proto";

message ServiceRequest {
    string topic = 1;
    oneof type {
        ubii.clients.Client client = 2;
        ubii.devices.Device device = 3;
        ubii.services.request.TopicSubscription topic_subscription = 4;
        ubii.sessions.Session session = 5;
        ubii.sessions.SessionList session_list = 6;
        ubii.processing.ProcessingModule processing_module = 7;
        ubii.processing.ProcessingModuleList processing_module_list = 8;
        ubii.devices.TopicMux topic_mux = 9;
        ubii.devices.TopicMuxList topic_mux_list = 10;
        ubii.devices.TopicDemux topic_demux = 11;
        ubii.devices.TopicDemuxList topic_demux_list = 12;
        ubii.clients.ClientList client_list = 13;
        ubii.devices.DeviceList device_list = 14;
        ubii.processing.LockstepProcessingRequest lockstep_processing_request = 15;
        ubii.devices.Component component = 16;
        ubii.devices.ComponentList component_list = 17;
    }
}
