| {{/* |
| // Copyright 2023 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:EventSender:driver/WireMessagingHeader" }} |
| {{- EnsureNamespace "" }} |
| |
| template<> |
| class {{ .WireWeakBufferEventSender }} : public ::fdf::internal::WeakBufferEventSenderBase { |
| public: |
| using WeakBufferEventSenderBase::WeakBufferEventSenderBase; |
| {{ "" }} |
| |
| {{- range .Events }} |
| {{- .Docs }} |
| fidl::OneWayStatus {{ .Name }}({{ RenderParams .ResponseArgs }}); |
| |
| {{ "" }} |
| {{- end }} |
| }; |
| |
| template<> |
| class {{ .WireBufferEventSender }} |
| : public ::fdf::internal::SyncEndpointBufferVeneer<{{ .WireBufferEventSender }}> { |
| public: |
| using SyncEndpointBufferVeneer::SyncEndpointBufferVeneer; |
| {{ "" }} |
| |
| {{- range .Events }} |
| {{- .Docs }} |
| fidl::OneWayStatus {{ .Name }}({{ RenderParams .ResponseArgs }}); |
| |
| {{ "" }} |
| {{- end }} |
| }; |
| |
| {{- end }} |
| |
| {{- define "Protocol:EventSender:driver/WireMessagingSource" }} |
| {{ EnsureNamespace "" }} |
| {{- range .Events }} |
| |
| {{- /* Weak, caller-allocated */}} |
| {{ "" }} |
| fidl::OneWayStatus {{ $.WireWeakBufferEventSender.NoLeading }}::{{ .Name }}( |
| {{- RenderParams .ResponseArgs }}) { |
| constexpr uint32_t _buffer_size = ::fidl::EventReplyBufferSizeInChannel<{{ .Marker }}>(); |
| uint8_t* _buffer = static_cast<uint8_t*>(_arena().Allocate(_buffer_size)); |
| |
| {{ .WireTransactionalEvent }} _response{ {{- RenderForwardParams .ResponseArgs }} }; |
| ::fidl::internal::UnownedEncodedMessage<{{ .WireTransactionalEvent }}, {{ .Transport.Type }}> _response_message( |
| _buffer, _buffer_size, &_response); |
| ::fidl::WriteOptions _options = { |
| .outgoing_transport_context = |
| ::fidl::internal::OutgoingTransportContext::Create<::fidl::internal::DriverTransport>(_arena().get()), |
| }; |
| return _inner().SendEvent(_response_message.GetOutgoingMessage(), std::move(_options)); |
| } |
| {{ "" }} |
| |
| {{- /* Caller-allocated */}} |
| {{ "" }} |
| fidl::OneWayStatus {{ $.WireBufferEventSender.NoLeading }}::{{ .Name }}( |
| {{- RenderParams .ResponseArgs }}) { |
| constexpr uint32_t _buffer_size = ::fidl::EventReplyBufferSizeInChannel<{{ .Marker }}>(); |
| uint8_t* _buffer = static_cast<uint8_t*>(_arena().Allocate(_buffer_size)); |
| |
| {{ .WireTransactionalEvent }} _response{ {{- RenderForwardParams .ResponseArgs }} }; |
| ::fidl::internal::UnownedEncodedMessage<{{ .WireTransactionalEvent }}, {{ .Transport.Type }}> _response_message( |
| _buffer, _buffer_size, &_response); |
| auto& _message = _response_message.GetOutgoingMessage(); |
| ::fidl::WriteOptions _options = { |
| .outgoing_transport_context = |
| ::fidl::internal::OutgoingTransportContext::Create<::fidl::internal::DriverTransport>(_arena().get()), |
| }; |
| _message.Write(_transport(), std::move(_options)); |
| return ::fidl::OneWayStatus{::fidl::Status{_message}}; |
| } |
| {{ "" }} |
| |
| {{- end }} |
| {{- end }} |