/*
 *  Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
 *
 *  Use of this source code is governed by a BSD-style license
 *  that can be found in the LICENSE file in the root of the source
 *  tree. An additional intellectual property rights grant can be found
 *  in the file PATENTS.  All contributing project authors may
 *  be found in the AUTHORS file in the root of the source tree.
 */

#ifndef RTC_BASE_SEQUENCED_TASK_CHECKER_IMPL_H_
#define RTC_BASE_SEQUENCED_TASK_CHECKER_IMPL_H_

#include "rtc_base/critical_section.h"
#include "rtc_base/thread_checker.h"

namespace rtc {

// Real implementation of SequencedTaskChecker, for use in debug mode, or
// for temporary use in release mode.
//
// Note: You should almost always use the SequencedTaskChecker class to get the
// right version for your build configuration.
class SequencedTaskCheckerImpl {
 public:
  SequencedTaskCheckerImpl();
  ~SequencedTaskCheckerImpl();

  bool CalledSequentially() const;

  // Changes the task queue or thread that is checked for in IsCurrent.  This
  // may be useful when an object may be created on one task queue / thread and
  // then used exclusively on another thread.
  void Detach();

 private:
  friend class internal::AnnounceOnThread;
  bool IsCurrent() const { return CalledSequentially(); }

  typedef const void* QueueId;
  CriticalSection lock_;
  ThreadChecker thread_checker_;
  mutable bool attached_;
  mutable QueueId valid_queue_;
};

}  // namespace rtc
#endif  // RTC_BASE_SEQUENCED_TASK_CHECKER_IMPL_H_
