1 // Copyright 2013 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 CLOUD_PRINT_SERVICE_SERVICE_LISTENER_H_ 6 #define CLOUD_PRINT_SERVICE_SERVICE_LISTENER_H_ 7 8 #include "base/compiler_specific.h" 9 #include "base/files/file_path.h" 10 #include "base/memory/scoped_ptr.h" 11 #include "ipc/ipc_listener.h" 12 13 namespace base { 14 class Thread; 15 } // base 16 17 namespace IPC { 18 class Channel; 19 } // IPC 20 21 // Simple IPC listener to run on service side to collect service environment and 22 // to send back to setup utility. 23 class ServiceListener : public IPC::Listener { 24 public: 25 explicit ServiceListener(const base::FilePath& user_data_dir); 26 virtual ~ServiceListener(); 27 28 virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE; 29 virtual void OnChannelConnected(int32 peer_pid) OVERRIDE; 30 31 private: 32 void Disconnect(); 33 void Connect(); 34 35 scoped_ptr<base::Thread> ipc_thread_; 36 scoped_ptr<IPC::Channel> channel_; 37 base::FilePath user_data_dir_; 38 }; 39 40 #endif // CLOUD_PRINT_SERVICE_SERVICE_LISTENER_H_ 41 42