blob: a5e8371b9262f3ffb05132afc9424237d040b333 [file] [log] [blame] [edit]
// Copyright (c) 2025 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef QUICHE_BLIND_SIGN_AUTH_TASK_BUNDLE_H_
#define QUICHE_BLIND_SIGN_AUTH_TASK_BUNDLE_H_
#include "absl/status/status.h"
#include "quiche/common/platform/api/quiche_export.h"
#include "quiche/common/quiche_callbacks.h"
namespace quiche {
// Interface for executing multiple independent tasks, possibly in parallel.
class QUICHE_EXPORT TaskBundle {
public:
virtual ~TaskBundle() = default;
// Enqueues a task to be executed.
virtual void Add(SingleUseCallback<absl::Status()> task) = 0;
// Blocks until all added tasks have completed.
// Returns OK if all tasks completed successfully, or the first error
// encountered otherwise.
virtual absl::Status Join() = 0;
};
} // namespace quiche
#endif // QUICHE_BLIND_SIGN_AUTH_TASK_BUNDLE_H_