// 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_