Skip to content

Latest commit

 

History

History
57 lines (35 loc) · 3.78 KB

JobsContainer.md

File metadata and controls

57 lines (35 loc) · 3.78 KB

Описание класса JobsContainer

Класс JobsContainer представляет собой контейнер для управления заданиями (jobs) в рамках конкретного коннектора. Он предоставляет методы для добавления, удаления и отмены заданий, а также для корректного завершения всех заданий коннектора.

Конструктор

  • JobsContainer(config: MlpServiceConfig, context: MlpExecutionContext): Создает новый экземпляр контейнера заданий с указанными конфигурационными параметрами и контекстом выполнения.

Методы

  • put(connectorId: Long, requestId: Long, job: Job): Boolean: Добавляет задание с указанным идентификатором коннектора и запроса. Возвращает true, если задание было успешно добавлено, и false, если контейнер не может обрабатывать новые задания.

  • remove(connectorId: Long, requestId: Long): Удаляет задание с указанным идентификатором коннектора и запроса из контейнера.

  • cancel(connectorId: Long): Отменяет все задания для указанного коннектора.

  • cancelAll(): Отменяет все задания для всех коннекторов.

  • gracefulShutdownByConnector(connectorId: Long): Осуществляет корректное завершение всех заданий для указанного коннектора.

  • enableNewOnes(connectorId: Long): Включает возможность обработки новых заданий для указанного коннектора.

Вспомогательные структуры данных

  • ConnectorContainer: Структура данных, содержащая карту запросов и флаг, указывающий на возможность обработки новых заданий коннектором.

Использование

// Создание контейнера заданий с указанной конфигурацией и контекстом выполнения
val jobsContainer = JobsContainer(config, context)

// Добавление задания
val job = launch {
    // Тело задания
}
val added = jobsContainer.put(connectorId, requestId, job)

// Удаление задания
jobsContainer.remove(connectorId, requestId)

// Отмена всех заданий для конкретного коннектора
jobsContainer.cancel(connectorId)

// Отмена всех заданий для всех коннекторов
jobsContainer.cancelAll()

// Корректное завершение всех заданий для конкретного коннектора
jobsContainer.gracefulShutdownByConnector(connectorId)

// Включение возможности обработки новых заданий для конкретного коннектора
jobsContainer.enableNewOnes(connectorId)

Итог

Класс JobsContainer предоставляет механизм для управления заданиями в многопоточной среде, обеспечивая контроль за их добавлением, удалением и завершением. Он особенно полезен при разработке приложений, требующих параллельной обработки запросов или задач.