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