// 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 BASE_TASK_SEQUENCE_MANAGER_TASK_QUEUE_PROXY_H_
#define BASE_TASK_SEQUENCE_MANAGER_TASK_QUEUE_PROXY_H_

#include "base/memory/ref_counted.h"
#include "base/optional.h"
#include "base/synchronization/lock.h"
#include "base/task/sequence_manager/moveable_auto_lock.h"
#include "base/task/sequence_manager/task_queue.h"

namespace base {
namespace sequence_manager {
namespace internal {

struct AssociatedThreadId;
class TaskQueueImpl;

// Task runners are ref-counted and unaccountable, so we need a safe way
// to delete a task queue while associated task runners might be still around.
// When TaskQueueImpl goes away, this proxy becomes a stub and later on gets
// ref-count-destructed once no TaskQueueTaskRunner remains.
// NOTE: Instances must be constructed or detached only by TaskQueueImpl,
// unless |task_queue_impl| is null (which is useful for stub task runners).
class TaskQueueProxy : public RefCountedThreadSafe<TaskQueueProxy> {
 public:
  TaskQueueProxy(TaskQueueImpl* task_queue_impl,
                 scoped_refptr<AssociatedThreadId> associated_thread);

  // May be called on any thread.
  bool PostTask(TaskQueue::PostedTask task) const;
  bool RunsTasksInCurrentSequence() const;

  // PostTask will reject any task after this call.
  // Must be called on main thread only.
  void DetachFromTaskQueueImpl();

 private:
  friend class RefCountedThreadSafe<TaskQueueProxy>;
  ~TaskQueueProxy();

  // Doesn't acquire lock on main thread.
  Optional<MoveableAutoLock> AcquireLockIfNeeded() const;

  mutable Lock lock_;
  TaskQueueImpl* task_queue_impl_;  // Not owned.
  const scoped_refptr<AssociatedThreadId> associated_thread_;
};

}  // namespace internal
}  // namespace sequence_manager
}  // namespace base

#endif  // BASE_TASK_SEQUENCE_MANAGER_TASK_QUEUE_PROXY_H_
