#ifndef REMOTING_HOST_WIN_WTS_SESSION_PROCESS_DELEGATE_H_
#define REMOTING_HOST_WIN_WTS_SESSION_PROCESS_DELEGATE_H_
#include "base/basictypes.h"
#include "base/compiler_specific.h"
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
#include "base/threading/non_thread_safe.h"
#include "remoting/host/win/worker_process_launcher.h"
namespace base {
class CommandLine;
class SingleThreadTaskRunner;
}
namespace IPC {
class Message;
}
namespace remoting {
class WtsSessionProcessDelegate
: public base::NonThreadSafe,
public WorkerProcessLauncher::Delegate {
public:
WtsSessionProcessDelegate(
scoped_refptr<base::SingleThreadTaskRunner> io_task_runner,
scoped_ptr<base::CommandLine> target,
bool launch_elevated,
const std::string& channel_security);
~WtsSessionProcessDelegate();
bool Initialize(uint32 session_id);
virtual void LaunchProcess(WorkerProcessLauncher* event_handler) OVERRIDE;
virtual void Send(IPC::Message* message) OVERRIDE;
virtual void CloseChannel() OVERRIDE;
virtual void KillProcess() OVERRIDE;
private:
class Core;
scoped_refptr<Core> core_;
DISALLOW_COPY_AND_ASSIGN(WtsSessionProcessDelegate);
};
}
#endif