"""
@generated by codestare-proto-plus.  Do not edit manually!
"""
from proto import (
    Field,
    MESSAGE,
    module,
)

from proto.message import (
    Message,
)

from ubii.proto.v1.clients.client_pb_plus import (
    Client,
    ClientList,
)

from ubii.proto.v1.dataStructure.lists_pb_plus import (
    StringList,
)

from ubii.proto.v1.devices.component_pb_plus import (
    Component,
    ComponentList,
)

from ubii.proto.v1.devices.device_pb_plus import (
    Device,
    DeviceList,
)

from ubii.proto.v1.devices.topicDemux_pb_plus import (
    TopicDemux,
    TopicDemuxList,
)

from ubii.proto.v1.devices.topicMux_pb_plus import (
    TopicMux,
    TopicMuxList,
)

from ubii.proto.v1.general.error_pb_plus import (
    Error,
)

from ubii.proto.v1.general.success_pb_plus import (
    Success,
)

from ubii.proto.v1.processing.lockstepProcessing_pb_plus import (
    LockstepProcessingReply,
)

from ubii.proto.v1.processing.processingModule_pb_plus import (
    ProcessingModule,
    ProcessingModuleList,
)

from ubii.proto.v1.servers.server_pb_plus import (
    Server,
)

from ubii.proto.v1.services.service_pb_plus import (
    Service,
    ServiceList,
)

from ubii.proto.v1.sessions.session_pb_plus import (
    Session,
    SessionList,
)


__protobuf__ = module(
    package="ubii.proto.v1.services",
    marshal="ubii.proto.v1",
    manifest={
        "ServiceReply",
    }
)


class ServiceReply(Message):
    """
    .. admonition:: One Ofs

        This message defines the following *oneof* group[s]

        .. attribute:: type

            - 	:attr:`.success`
            - 	:attr:`.error`
            - 	:attr:`.client`
            - 	:attr:`.device`
            - 	:attr:`.server`
            - 	:attr:`.session`
            - 	:attr:`.session_list`
            - 	:attr:`.processing_module`
            - 	:attr:`.processing_module_list`
            - 	:attr:`.string_list`
            - 	:attr:`.topic_mux`
            - 	:attr:`.topic_mux_list`
            - 	:attr:`.topic_demux`
            - 	:attr:`.topic_demux_list`
            - 	:attr:`.client_list`
            - 	:attr:`.device_list`
            - 	:attr:`.service`
            - 	:attr:`.service_list`
            - 	:attr:`.lockstep_processing_reply`
            - 	:attr:`.component`
            - 	:attr:`.component_list`

    Attributes:
        success (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.general.success_pb_plus.Success` -- *oneof* :attr:`.type`
        error (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.general.error_pb_plus.Error` -- *oneof* :attr:`.type`
        client (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.clients.client_pb_plus.Client` -- *oneof* :attr:`.type`
        device (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.devices.device_pb_plus.Device` -- *oneof* :attr:`.type`
        server (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.servers.server_pb_plus.Server` -- *oneof* :attr:`.type`
        session (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.sessions.session_pb_plus.Session` -- *oneof* :attr:`.type`
        session_list (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.sessions.session_pb_plus.SessionList` -- *oneof* :attr:`.type`
        processing_module (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.processing.processingModule_pb_plus.ProcessingModule` -- *oneof*
            :attr:`.type`
        processing_module_list (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.processing.processingModule_pb_plus.ProcessingModuleList` -- *oneof*
            :attr:`.type`
        string_list (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.dataStructure.lists_pb_plus.StringList` -- *oneof* :attr:`.type`
        topic_mux (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.devices.topicMux_pb_plus.TopicMux` -- *oneof* :attr:`.type`
        topic_mux_list (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.devices.topicMux_pb_plus.TopicMuxList` -- *oneof* :attr:`.type`
        topic_demux (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.devices.topicDemux_pb_plus.TopicDemux` -- *oneof* :attr:`.type`
        topic_demux_list (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.devices.topicDemux_pb_plus.TopicDemuxList` -- *oneof* :attr:`.type`
        client_list (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.clients.client_pb_plus.ClientList` -- *oneof* :attr:`.type`
        device_list (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.devices.device_pb_plus.DeviceList` -- *oneof* :attr:`.type`
        service (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.services.service_pb_plus.Service` -- *oneof* :attr:`.type`
        service_list (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.services.service_pb_plus.ServiceList` -- *oneof* :attr:`.type`
        lockstep_processing_reply (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.processing.lockstepProcessing_pb_plus.LockstepProcessingReply` -- *oneof*
            :attr:`.type`
        component (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.devices.component_pb_plus.Component` -- *oneof* :attr:`.type`
        component_list (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.devices.component_pb_plus.ComponentList` -- *oneof* :attr:`.type`
    """

    success: Success = Field(
        MESSAGE,
        number=1,
        message=Success,
        oneof='type',
    )
    error: Error = Field(
        MESSAGE,
        number=2,
        message=Error,
        oneof='type',
    )
    client: Client = Field(
        MESSAGE,
        number=3,
        message=Client,
        oneof='type',
    )
    device: Device = Field(
        MESSAGE,
        number=4,
        message=Device,
        oneof='type',
    )
    server: Server = Field(
        MESSAGE,
        number=5,
        message=Server,
        oneof='type',
    )
    session: Session = Field(
        MESSAGE,
        number=6,
        message=Session,
        oneof='type',
    )
    session_list: SessionList = Field(
        MESSAGE,
        number=7,
        message=SessionList,
        oneof='type',
    )
    processing_module: ProcessingModule = Field(
        MESSAGE,
        number=8,
        message=ProcessingModule,
        oneof='type',
    )
    processing_module_list: ProcessingModuleList = Field(
        MESSAGE,
        number=9,
        message=ProcessingModuleList,
        oneof='type',
    )
    string_list: StringList = Field(
        MESSAGE,
        number=10,
        message=StringList,
        oneof='type',
    )
    topic_mux: TopicMux = Field(
        MESSAGE,
        number=11,
        message=TopicMux,
        oneof='type',
    )
    topic_mux_list: TopicMuxList = Field(
        MESSAGE,
        number=12,
        message=TopicMuxList,
        oneof='type',
    )
    topic_demux: TopicDemux = Field(
        MESSAGE,
        number=13,
        message=TopicDemux,
        oneof='type',
    )
    topic_demux_list: TopicDemuxList = Field(
        MESSAGE,
        number=14,
        message=TopicDemuxList,
        oneof='type',
    )
    client_list: ClientList = Field(
        MESSAGE,
        number=15,
        message=ClientList,
        oneof='type',
    )
    device_list: DeviceList = Field(
        MESSAGE,
        number=16,
        message=DeviceList,
        oneof='type',
    )
    service: Service = Field(
        MESSAGE,
        number=17,
        message=Service,
        oneof='type',
    )
    service_list: ServiceList = Field(
        MESSAGE,
        number=18,
        message=ServiceList,
        oneof='type',
    )
    lockstep_processing_reply: LockstepProcessingReply = Field(
        MESSAGE,
        number=19,
        message=LockstepProcessingReply,
        oneof='type',
    )
    component: Component = Field(
        MESSAGE,
        number=20,
        message=Component,
        oneof='type',
    )
    component_list: ComponentList = Field(
        MESSAGE,
        number=21,
        message=ComponentList,
        oneof='type',
    )

