| {{/* |
| // Copyright 2020 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| */}} |
| |
| {{- define "Protocol:ClientImpl:MessagingHeader" }} |
| {{- IfdefFuchsia -}} |
| {{- EnsureNamespace "" }} |
| template<> |
| class {{ .WireClientImpl }} final : public ::fidl::internal::ClientBase { |
| public: |
| {{- range .ClientMethods }} |
| {{- template "Method:ClientImpl:MessagingHeader" . }} |
| {{- end }} |
| {{ .WireClientImpl.Self }}() = default; |
| |
| private: |
| std::optional<::fidl::UnbindInfo> DispatchEvent( |
| ::fidl::IncomingMessage& msg, |
| ::fidl::internal::AsyncEventHandler* maybe_event_handler, |
| const internal::IncomingTransportContext* transport_context) override; |
| }; |
| {{- EndifFuchsia -}} |
| {{- end }} |
| |
| |
| |
| {{- define "Protocol:ClientImpl:MessagingSource" }} |
| {{ EnsureNamespace ""}} |
| {{- IfdefFuchsia -}} |
| |
| {{- range .ClientMethods }} |
| {{- template "Method:ClientImpl:MessagingSource" . }} |
| {{- end }} |
| |
| std::optional<::fidl::UnbindInfo> |
| {{ .WireClientImpl.NoLeading }}::DispatchEvent( |
| fidl::IncomingMessage& msg, |
| ::fidl::internal::AsyncEventHandler* maybe_event_handler, |
| const internal::IncomingTransportContext* transport_context) { |
| {{- if .Events }} |
| auto* event_handler = static_cast<{{ .WireAsyncEventHandler }}*>(maybe_event_handler); |
| fidl_message_header_t* hdr = msg.header(); |
| switch (hdr->ordinal) { |
| {{- range .Events }} |
| case {{ .OrdinalName }}: |
| { |
| ::fidl::DecodedMessage<{{ .WireResponse }}> decoded{std::move(msg)}; |
| if (!decoded.ok()) { |
| return ::fidl::UnbindInfo{decoded}; |
| } |
| if (event_handler) { |
| event_handler->{{ .Name }}(decoded.PrimaryObject()); |
| } |
| return std::nullopt; |
| } |
| {{- end }} |
| default: |
| break; |
| } |
| {{- end }} |
| return ::fidl::UnbindInfo::UnknownOrdinal(); |
| } |
| |
| {{- EndifFuchsia -}} |
| {{- end }} |
| |