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