Home | History | Annotate | Download | only in loader
      1 // Copyright 2014 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 COMPONENTS_NACL_LOADER_NACL_TRUSTED_LISTENER_H_
      6 #define COMPONENTS_NACL_LOADER_NACL_TRUSTED_LISTENER_H_
      7 
      8 #include "base/memory/ref_counted.h"
      9 #include "ipc/ipc_channel_handle.h"
     10 #include "ipc/ipc_channel_proxy.h"
     11 #include "ipc/ipc_listener.h"
     12 
     13 namespace base {
     14 class SingleThreadTaskRunner;
     15 }
     16 
     17 class NaClTrustedListener : public base::RefCounted<NaClTrustedListener>,
     18                             public IPC::Listener {
     19  public:
     20   NaClTrustedListener(const IPC::ChannelHandle& handle,
     21                       base::SingleThreadTaskRunner* ipc_task_runner);
     22 
     23 #if defined(OS_POSIX)
     24   int TakeClientFileDescriptor();
     25 #endif
     26 
     27   // Listener implementation.
     28   virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
     29   virtual void OnChannelError() OVERRIDE;
     30 
     31   bool Send(IPC::Message* msg);
     32 
     33  private:
     34   friend class base::RefCounted<NaClTrustedListener>;
     35   virtual ~NaClTrustedListener();
     36   scoped_ptr<IPC::ChannelProxy> channel_proxy_;
     37 
     38   DISALLOW_COPY_AND_ASSIGN(NaClTrustedListener);
     39 };
     40 
     41 #endif  // COMPONENTS_NACL_LOADER_NACL_TRUSTED_LISTENER_H_
     42