# Copyright (C) 2024 Josua Krause
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Queues contain tasks waiting for execution in a node. When executing, nodes
take tasks from their input queue, execute, and then put the task in one of
their output queues. The special `OUTPUT_QUEUE` is the destination of all
completed tasks, while regular output queues are input queues of other nodes.
There are implementable strategies to decide which queue to pick for processing
(and in turn which node to execute) and which and how many tasks are taken from
a queue when the node executes."""
