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

from proto.message import (
    Message,
)

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

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


__protobuf__ = module(
    package="ubii.proto.v1",
    manifest={
        "TopicInputMapping",
        "TopicInputMappingList",
        "TopicOutputMapping",
        "TopicOutputMappingList",
        "IOMapping",
        "IOMappingList",
    }
)


class TopicInputMapping(Message):
    """Generated from ubii/proto/v1/sessions/ioMappings.proto

    Attributes:
        input_name (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~proto.STRING`

        topic (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~proto.STRING`

        topic_mux (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.devices.topicMux_pb_plus.TopicMux`

    """

    input_name = Field(
        STRING,
        number=1,
    )
    topic = Field(
        STRING,
        number=2,
        oneof='topic_source',
    )
    topic_mux = Field(
        TopicMux,
        number=3,
        oneof='topic_source',
    )


class TopicInputMappingList(Message):
    """Generated from ubii/proto/v1/sessions/ioMappings.proto

    Attributes:
        elements (proto.fields.RepeatedField): :obj:`~proto.fields.RepeatedField` of
            type :obj:`~.TopicInputMapping`

    """

    elements = RepeatedField(
        TopicInputMapping,
        number=1,
    )


class TopicOutputMapping(Message):
    """Generated from ubii/proto/v1/sessions/ioMappings.proto

    Attributes:
        output_name (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~proto.STRING`

        topic (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~proto.STRING`

        topic_demux (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.devices.topicDemux_pb_plus.TopicDemux`

    """

    output_name = Field(
        STRING,
        number=1,
    )
    topic = Field(
        STRING,
        number=2,
        oneof='topic_destination',
    )
    topic_demux = Field(
        TopicDemux,
        number=3,
        oneof='topic_destination',
    )


class TopicOutputMappingList(Message):
    """Generated from ubii/proto/v1/sessions/ioMappings.proto

    Attributes:
        elements (proto.fields.RepeatedField): :obj:`~proto.fields.RepeatedField` of
            type :obj:`~.TopicOutputMapping`

    """

    elements = RepeatedField(
        TopicOutputMapping,
        number=1,
    )


class IOMapping(Message):
    """Generated from ubii/proto/v1/sessions/ioMappings.proto

    Attributes:
        processing_module_id (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~proto.STRING`

        input_mappings (proto.fields.RepeatedField): :obj:`~proto.fields.RepeatedField`
            of type :obj:`~.TopicInputMapping`

        output_mappings (proto.fields.RepeatedField):
            :obj:`~proto.fields.RepeatedField` of type
            :obj:`~.TopicOutputMapping`

        processing_module_name (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~proto.STRING`

    """

    processing_module_id = Field(
        STRING,
        number=1,
    )
    input_mappings = RepeatedField(
        TopicInputMapping,
        number=2,
    )
    output_mappings = RepeatedField(
        TopicOutputMapping,
        number=3,
    )
    processing_module_name = Field(
        STRING,
        number=4,
    )


class IOMappingList(Message):
    """Generated from ubii/proto/v1/sessions/ioMappings.proto

    Attributes:
        elements (proto.fields.RepeatedField): :obj:`~proto.fields.RepeatedField` of
            type :obj:`~.IOMapping`

    """

    elements = RepeatedField(
        IOMapping,
        number=1,
    )

