// Copyright 2015 The Weave 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 LIBWEAVE_INCLUDE_WEAVE_PROVIDER_TASK_RUNNER_H_
#define LIBWEAVE_INCLUDE_WEAVE_PROVIDER_TASK_RUNNER_H_

#include <string>
#include <utility>
#include <vector>

#include <base/callback.h>
#include <base/location.h>
#include <base/time/time.h>

namespace weave {
namespace provider {

// Interface with methods to post tasks into platform-specific message loop of
// the current thread.
class TaskRunner {
 public:
  // Posts tasks to be executed with the given delay.
  // |from_here| argument is used for debugging and usually just provided by
  // FROM_HERE macro. Implementation may ignore this argument.
  virtual void PostDelayedTask(const tracked_objects::Location& from_here,
                               const base::Closure& task,
                               base::TimeDelta delay) = 0;

 protected:
  virtual ~TaskRunner() = default;
};

}  // namespace provider
}  // namespace weave

#endif  // LIBWEAVE_INCLUDE_WEAVE_PROVIDER_TASK_RUNNER_H_
