| class {{export_attribute}} {{interface.name}}StubDispatch { |
| public: |
| static bool Accept({{interface.name}}* impl, mojo::Message* message); |
| static bool AcceptWithResponder( |
| {{interface.name}}* impl, |
| mojo::Message* message, |
| std::unique_ptr<mojo::MessageReceiverWithStatus> responder); |
| }; |
| |
| template <typename ImplRefTraits = |
| mojo::RawPtrImplRefTraits<{{interface.name}}>> |
| class {{interface.name}}Stub |
| : public NON_EXPORTED_BASE(mojo::MessageReceiverWithResponderStatus) { |
| public: |
| using ImplPointerType = typename ImplRefTraits::PointerType; |
| |
| {{interface.name}}Stub() {} |
| ~{{interface.name}}Stub() override {} |
| |
| void set_sink(ImplPointerType sink) { sink_ = std::move(sink); } |
| ImplPointerType& sink() { return sink_; } |
| |
| bool Accept(mojo::Message* message) override { |
| if (ImplRefTraits::IsNull(sink_)) |
| return false; |
| return {{interface.name}}StubDispatch::Accept( |
| ImplRefTraits::GetRawPointer(&sink_), message); |
| } |
| |
| bool AcceptWithResponder( |
| mojo::Message* message, |
| std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override { |
| if (ImplRefTraits::IsNull(sink_)) |
| return false; |
| return {{interface.name}}StubDispatch::AcceptWithResponder( |
| ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder)); |
| } |
| |
| private: |
| ImplPointerType sink_; |
| }; |