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

from proto.message import (
    Message,
)

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

from ubii.proto.v1.sessions.ioMappings_pb_plus import (
    IOMapping,
)


__protobuf__ = module(
    package="ubii.proto.v1.sessions",
    marshal="ubii.proto.v1",
    manifest={
        "Session",
        "SessionList",
        "SessionStatus",
    }
)


class SessionStatus(Enum):
    CREATED = 0
    RUNNING = 1
    PAUSED = 2
    STOPPED = 3

class Session(Message):
    """
    Attributes:
        id (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~proto.primitives.ProtoType.STRING`
        name (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~proto.primitives.ProtoType.STRING`
        processing_modules (proto.fields.RepeatedField): :obj:`~proto.fields.RepeatedField` of type
            :obj:`~ubii.proto.v1.processing.processingModule_pb_plus.ProcessingModule`
        io_mappings (proto.fields.RepeatedField): :obj:`~proto.fields.RepeatedField` of type
            :obj:`~ubii.proto.v1.sessions.ioMappings_pb_plus.IOMapping`
        tags (proto.fields.RepeatedField): :obj:`~proto.fields.RepeatedField` of type
            :obj:`~proto.primitives.ProtoType.STRING`
        description (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~proto.primitives.ProtoType.STRING`
        authors (proto.fields.RepeatedField): :obj:`~proto.fields.RepeatedField` of type
            :obj:`~proto.primitives.ProtoType.STRING`
        status (proto.fields.Field): :obj:`~proto.fields.Field` of type :obj:`~.SessionStatus`
        editable (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~proto.primitives.ProtoType.BOOL`
    """

    id = Field(
        STRING,
        number=1,
    )
    name = Field(
        STRING,
        number=2,
    )
    processing_modules = RepeatedField(
        ProcessingModule,
        number=3,
    )
    io_mappings = RepeatedField(
        IOMapping,
        number=4,
    )
    tags = RepeatedField(
        STRING,
        number=5,
    )
    description = Field(
        STRING,
        number=6,
    )
    authors = RepeatedField(
        STRING,
        number=7,
    )
    status = Field(
        SessionStatus,
        number=8,
    )
    editable = Field(
        BOOL,
        number=9,
    )


class SessionList(Message):
    """
    Attributes:
        elements (proto.fields.RepeatedField): :obj:`~proto.fields.RepeatedField` of type
            :obj:`~.Session`
    """

    elements = RepeatedField(
        Session,
        number=1,
    )

