Flutter Linux Embedder
flutter::BasicMessageChannel< T > Class Template Reference

#include <basic_message_channel.h>

Public Member Functions

 BasicMessageChannel (BinaryMessenger *messenger, const std::string &name, const MessageCodec< T > *codec)
 
 ~BasicMessageChannel ()=default
 
 BasicMessageChannel (BasicMessageChannel const &)=delete
 
BasicMessageChanneloperator= (BasicMessageChannel const &)=delete
 
void Send (const T &message)
 
void Send (const T &message, BinaryReply reply)
 
void SetMessageHandler (const MessageHandler< T > &handler) const
 

Detailed Description

template<typename T = EncodableValue>
class flutter::BasicMessageChannel< T >

Definition at line 36 of file basic_message_channel.h.

Constructor & Destructor Documentation

◆ BasicMessageChannel() [1/2]

template<typename T = EncodableValue>
flutter::BasicMessageChannel< T >::BasicMessageChannel ( BinaryMessenger messenger,
const std::string &  name,
const MessageCodec< T > *  codec 
)
inline

Definition at line 40 of file basic_message_channel.h.

43  : messenger_(messenger), name_(name), codec_(codec) {}

◆ ~BasicMessageChannel()

template<typename T = EncodableValue>
flutter::BasicMessageChannel< T >::~BasicMessageChannel ( )
default

◆ BasicMessageChannel() [2/2]

template<typename T = EncodableValue>
flutter::BasicMessageChannel< T >::BasicMessageChannel ( BasicMessageChannel< T > const &  )
delete

Member Function Documentation

◆ operator=()

template<typename T = EncodableValue>
BasicMessageChannel& flutter::BasicMessageChannel< T >::operator= ( BasicMessageChannel< T > const &  )
delete

◆ Send() [1/2]

template<typename T = EncodableValue>
void flutter::BasicMessageChannel< T >::Send ( const T &  message)
inline

Definition at line 52 of file basic_message_channel.h.

52  {
53  std::unique_ptr<std::vector<uint8_t>> raw_message =
54  codec_->EncodeMessage(message);
55  messenger_->Send(name_, raw_message->data(), raw_message->size());
56  }

References flutter::BinaryMessenger::Send().

◆ Send() [2/2]

template<typename T = EncodableValue>
void flutter::BasicMessageChannel< T >::Send ( const T &  message,
BinaryReply  reply 
)
inline

Definition at line 59 of file basic_message_channel.h.

59  {
60  std::unique_ptr<std::vector<uint8_t>> raw_message =
61  codec_->EncodeMessage(message);
62  messenger_->Send(name_, raw_message->data(), raw_message->size(),
63  std::move(reply));
64  }

References flutter::BinaryMessenger::Send().

◆ SetMessageHandler()

template<typename T = EncodableValue>
void flutter::BasicMessageChannel< T >::SetMessageHandler ( const MessageHandler< T > &  handler) const
inline

Definition at line 72 of file basic_message_channel.h.

72  {
73  if (!handler) {
74  messenger_->SetMessageHandler(name_, nullptr);
75  return;
76  }
77  const auto* codec = codec_;
78  std::string channel_name = name_;
79  BinaryMessageHandler binary_handler = [handler, codec, channel_name](
80  const uint8_t* binary_message,
81  const size_t binary_message_size,
82  const BinaryReply& binary_reply) {
83  // Use this channel's codec to decode the message and build a reply
84  // handler.
85  std::unique_ptr<T> message =
86  codec->DecodeMessage(binary_message, binary_message_size);
87  if (!message) {
88  std::cerr << "Unable to decode message on channel " << channel_name
89  << std::endl;
90  binary_reply(nullptr, 0);
91  return;
92  }
93 
94  MessageReply<T> unencoded_reply = [binary_reply,
95  codec](const T& unencoded_response) {
96  auto binary_response = codec->EncodeMessage(unencoded_response);
97  binary_reply(binary_response->data(), binary_response->size());
98  };
99  handler(*message, std::move(unencoded_reply));
100  };
101  messenger_->SetMessageHandler(name_, std::move(binary_handler));
102  }

References flutter::BinaryMessenger::SetMessageHandler().

Referenced by flutter::TEST().


The documentation for this class was generated from the following file:
flutter::BinaryMessenger::SetMessageHandler
virtual void SetMessageHandler(const std::string &channel, BinaryMessageHandler handler)=0
flutter::BinaryReply
std::function< void(const uint8_t *reply, size_t reply_size)> BinaryReply
Definition: binary_messenger.h:17
flutter::BinaryMessenger::Send
virtual void Send(const std::string &channel, const uint8_t *message, size_t message_size, BinaryReply reply=nullptr) const =0
flutter::BinaryMessageHandler
std::function< void(const uint8_t *message, size_t message_size, BinaryReply reply)> BinaryMessageHandler
Definition: binary_messenger.h:24