1a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// found in the LICENSE file. 4a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 5a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#ifndef COMPONENTS_NACL_LOADER_NACL_TRUSTED_LISTENER_H_ 6a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#define COMPONENTS_NACL_LOADER_NACL_TRUSTED_LISTENER_H_ 7a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 8a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "base/memory/ref_counted.h" 9a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ipc/ipc_channel_handle.h" 10a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ipc/ipc_listener.h" 1103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "ipc/ipc_sync_channel.h" 12f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 13f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)namespace base { 14f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class SingleThreadTaskRunner; 15f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 16a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 17a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class NaClTrustedListener : public base::RefCounted<NaClTrustedListener>, 18a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) public IPC::Listener { 19a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) public: 20a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) NaClTrustedListener(const IPC::ChannelHandle& handle, 2103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) base::SingleThreadTaskRunner* ipc_task_runner, 2203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) base::WaitableEvent* shutdown_event); 23a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IPC::ChannelHandle TakeClientChannelHandle(); 25a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 26a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Listener implementation. 27a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; 28a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual void OnChannelError() OVERRIDE; 29a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 30a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) bool Send(IPC::Message* msg); 31a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 32a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) private: 33a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) friend class base::RefCounted<NaClTrustedListener>; 34a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual ~NaClTrustedListener(); 356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IPC::ChannelHandle channel_handle_; 3603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) scoped_ptr<IPC::SyncChannel> channel_; 37a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 38a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(NaClTrustedListener); 39a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}; 40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif // COMPONENTS_NACL_LOADER_NACL_TRUSTED_LISTENER_H_ 42