blob: 9edd5f66bdb5fe4fc2faadf4e4b92316ae0c0b53 [file] [log] [blame]
// Copyright 2016 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 COMPONENTS_ARC_ARC_STANDALONE_BRIDGE_RUNNER_H_
#define COMPONENTS_ARC_ARC_STANDALONE_BRIDGE_RUNNER_H_
#include <memory>
#include "base/macros.h"
#include "base/message_loop/message_loop.h"
#include "base/run_loop.h"
#include "base/threading/thread_checker.h"
namespace arc {
// Runner of the standalone ARC++ bridge, which hosts an IO message loop.
class ArcStandaloneBridgeRunner {
public:
ArcStandaloneBridgeRunner();
~ArcStandaloneBridgeRunner();
// Starts the message loop. Needs to be run on the thread where this
// instance is created.
int Run();
// Stops the message loop. Needs to be called in a message loop.
void Stop(int exit_code);
private:
base::MessageLoopForIO message_loop_;
std::unique_ptr<base::RunLoop> run_loop_;
base::ThreadChecker thread_checker_;
int exit_code_;
DISALLOW_COPY_AND_ASSIGN(ArcStandaloneBridgeRunner);
};
} // namespace arc
#endif // COMPONENTS_ARC_ARC_STANDALONE_BRIDGE_RUNNER_H_