// Copyright 2018 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 SERVICES_NETWORK_PENDING_CALLBACK_CHAIN_H_
#define SERVICES_NETWORK_PENDING_CALLBACK_CHAIN_H_

#include "base/component_export.h"
#include "base/memory/ref_counted.h"
#include "net/base/completion_once_callback.h"
#include "net/base/net_errors.h"

namespace network {

// Helper class to keep track of multiple functions which may return
// net::ERR_IO_PENDING and call a net::CompletionOnceCallback, or return another
// net error synchronously, and not call the completion callback. If there are
// one or more pending results added, the original completion callback will not
// be called until all those results have completed. If there are multiple error
// results that are different, net::ERR_FAILED will be used.
class COMPONENT_EXPORT(NETWORK_SERVICE) PendingCallbackChain
    : public base::RefCounted<PendingCallbackChain> {
 public:
  explicit PendingCallbackChain(net::CompletionOnceCallback complete);

  // Creates a callback that can be called to decrement the wait count if a
  // net::ERR_IO_PENDING result is added with AddResult().
  net::CompletionOnceCallback CreateCallback();

  // Adds a result to the chain. If the result is net::ERR_IO_PENDING,
  // a corresponding callback will need to be called before the original
  // completion callback is called.
  void AddResult(int result);

  // Gets the current result of the chain. This will be net::ERR_IO_PENDING if
  // there are any pending results.
  int GetResult() const;

 private:
  friend class base::RefCounted<PendingCallbackChain>;
  ~PendingCallbackChain();

  void CallbackComplete(int result);
  void SetResult(int result);

  int num_waiting_ = 0;
  int final_result_ = net::OK;
  net::CompletionOnceCallback complete_;
};

}  // namespace network

#endif  // SERVICES_NETWORK_PENDING_CALLBACK_CHAIN_H_
