Commit f735a312 authored by AdamSimpson's avatar AdamSimpson
Browse files

don't track unavailable builders, it's reset each tick

parent f0fdb06c
Loading
Loading
Loading
Loading
Loading
+0 −3
Original line number Diff line number Diff line
@@ -26,9 +26,6 @@ private:
    // Hold reservations that are to be fulfilled
    std::list<Reservation> reservations;

    // List of currently available builders
    std::set<Builder> available_builders;

    // Maximum number of active and cached builders
    const std::size_t max_builders;

+10 −8
Original line number Diff line number Diff line
@@ -17,8 +17,8 @@ void BuilderQueue::tick(asio::yield_context yield) {
        // Set unavailable builders, that is builders which are attached to a reservation
        if (reservation.builder) {
            unavailable_builders.insert(reservation.builder.get());
        }
        // Delete builders that are complete

            // If the reservation is complete delete the builder
            if (reservation.complete()) {
                asio::spawn(io_service,
                            [&](asio::yield_context yield) {
@@ -27,6 +27,7 @@ void BuilderQueue::tick(asio::yield_context yield) {
                            });
            }
        }
    }

    // Delete reservations that are completed and don't have an active builder associated with them
    reservations.remove_if([](const auto &reservation) {
@@ -34,6 +35,7 @@ void BuilderQueue::tick(asio::yield_context yield) {
    });

    // Available_builders = all_builders - unavailable_builders
    std::set<Builder> available_builders;
    std::set_difference(all_builders.begin(), all_builders.end(),
                        unavailable_builders.begin(), unavailable_builders.end(),
                        std::inserter(available_builders, available_builders.begin()));