no_interface.h revision cedac228d2dd51db4b79ea1e72c7f249408ee061
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 MOJO_PUBLIC_CPP_BINDINGS_NO_INTERFACE_H_ 6#define MOJO_PUBLIC_CPP_BINDINGS_NO_INTERFACE_H_ 7 8#include <assert.h> 9 10#include "mojo/public/cpp/bindings/message.h" 11#include "mojo/public/cpp/bindings/message_filter.h" 12#include "mojo/public/cpp/system/core.h" 13 14namespace mojo { 15 16// NoInterface is for use in cases when a non-existent or empty interface is 17// needed (e.g., when the Mojom "Peer" attribute is not present). 18 19class NoInterfaceProxy; 20class NoInterfaceStub; 21 22class NoInterface { 23 public: 24 typedef NoInterfaceProxy Proxy_; 25 typedef NoInterfaceStub Stub_; 26 typedef PassThroughFilter RequestValidator_; 27 typedef PassThroughFilter ResponseValidator_; 28 typedef NoInterface Client; 29 virtual ~NoInterface() {} 30}; 31 32class NoInterfaceProxy : public NoInterface { 33 public: 34 explicit NoInterfaceProxy(MessageReceiver* receiver) {} 35}; 36 37class NoInterfaceStub : public MessageReceiverWithResponder { 38 public: 39 NoInterfaceStub() {} 40 void set_sink(NoInterface* sink) {} 41 NoInterface* sink() { return NULL; } 42 virtual bool Accept(Message* message) MOJO_OVERRIDE; 43 virtual bool AcceptWithResponder(Message* message, MessageReceiver* responder) 44 MOJO_OVERRIDE; 45}; 46 47 48// AnyInterface is for use in cases where any interface would do (e.g., see the 49// Shell::Connect method). 50 51typedef NoInterface AnyInterface; 52 53} // namespace mojo 54 55#endif // MOJO_PUBLIC_CPP_BINDINGS_NO_INTERFACE_H_ 56