// 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_SCHEDULER_SERVICE_THREAD_H_
#define BASE_TASK_SCHEDULER_SERVICE_THREAD_H_

#include "base/base_export.h"
#include "base/macros.h"
#include "base/threading/thread.h"
#include "base/timer/timer.h"

namespace base {
namespace internal {

class TaskTracker;

// The TaskScheduler's ServiceThread is a mostly idle thread that is responsible
// for handling async events (e.g. delayed tasks and async I/O). Its role is to
// merely forward such events to their destination (hence staying mostly idle
// and highly responsive).
// It aliases Thread::Run() to enforce that ServiceThread::Run() be on the stack
// and make it easier to identify the service thread in stack traces.
class BASE_EXPORT ServiceThread : public Thread {
 public:
  // Constructs a ServiceThread which will report latency metrics through
  // |task_tracker| if non-null. In that case, this ServiceThread will assume a
  // registered TaskScheduler instance and that |task_tracker| will outlive this
  // ServiceThread.
  ServiceThread();

 private:
  // Thread:
  void Init() override;
  void Run(RunLoop* run_loop) override;

  DISALLOW_COPY_AND_ASSIGN(ServiceThread);
};

}  // namespace internal
}  // namespace base

#endif  // BASE_TASK_SCHEDULER_SERVICE_THREAD_H_
