// Copyright (c) 2012 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 REMOTING_CLIENT_CLIENT_CONTEXT_H_
#define REMOTING_CLIENT_CLIENT_CONTEXT_H_
#include <string>
#include "base/threading/thread.h"
namespace base {
class SingleThreadTaskRunner;
} // namespace base
namespace remoting {
// A class that manages threads and running context for the chromoting client
// process.
class ClientContext {
public:
// |main_task_runner| is the task runner for the main plugin thread
// that is used for all PPAPI calls, e.g. network and graphics.
ClientContext(base::SingleThreadTaskRunner* main_task_runner);
virtual ~ClientContext();
void Start();
void Stop();
base::SingleThreadTaskRunner* main_task_runner();
base::SingleThreadTaskRunner* decode_task_runner();
base::SingleThreadTaskRunner* audio_decode_task_runner();
private:
scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_;
// A thread that handles all video decode operations.
base::Thread decode_thread_;
// A thread that handles all audio decode operations.
base::Thread audio_decode_thread_;
DISALLOW_COPY_AND_ASSIGN(ClientContext);
};
} // namespace remoting
#endif // REMOTING_CLIENT_CLIENT_CONTEXT_H_