blob: 9f01348cdf5fbde97fffc8c3059d2aefe87cf9d0 [file] [log] [blame]
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,
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,
mojo::MessageReceiverWithStatus* responder) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return {{interface.name}}StubDispatch::AcceptWithResponder(
ImplRefTraits::GetRawPointer(&sink_), message, responder);
}
private:
ImplPointerType sink_;
};