1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef REMOTING_CLIENT_CLIENT_CONTEXT_H_ 6#define REMOTING_CLIENT_CLIENT_CONTEXT_H_ 7 8#include <string> 9 10#include "base/threading/thread.h" 11 12namespace base { 13class SingleThreadTaskRunner; 14} // namespace base 15 16namespace remoting { 17 18// A class that manages threads and running context for the chromoting client 19// process. 20class ClientContext { 21 public: 22 // |main_task_runner| is the task runner for the main plugin thread 23 // that is used for all PPAPI calls, e.g. network and graphics. 24 ClientContext( 25 const scoped_refptr<base::SingleThreadTaskRunner>& main_task_runner); 26 virtual ~ClientContext(); 27 28 void Start(); 29 void Stop(); 30 31 base::SingleThreadTaskRunner* main_task_runner(); 32 base::SingleThreadTaskRunner* decode_task_runner(); 33 base::SingleThreadTaskRunner* audio_decode_task_runner(); 34 35 private: 36 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_; 37 38 // A thread that handles all video decode operations. 39 base::Thread decode_thread_; 40 41 // A thread that handles all audio decode operations. 42 base::Thread audio_decode_thread_; 43 44 DISALLOW_COPY_AND_ASSIGN(ClientContext); 45}; 46 47} // namespace remoting 48 49#endif // REMOTING_CLIENT_CLIENT_CONTEXT_H_ 50