5#import "flutter/shell/platform/darwin/ios/platform_message_handler_ios.h"
7#import "flutter/fml/trace_event.h"
8#import "flutter/lib/ui/window/platform_message.h"
9#import "flutter/shell/platform/darwin/common/buffer_conversions.h"
10#import "flutter/shell/platform/darwin/common/framework/Headers/FlutterBinaryMessenger.h"
15@property(nonatomic, strong) dispatch_queue_t
queue;
22 _queue = dispatch_queue_create(
"FLTSerialTaskQueue", DISPATCH_QUEUE_SERIAL);
28 dispatch_release(_queue);
32- (void)dispatch:(dispatch_block_t)block {
33 dispatch_async(
self.queue, block);
39NSObject<FlutterTaskQueue>* PlatformMessageHandlerIos::MakeBackgroundTaskQueue() {
43PlatformMessageHandlerIos::PlatformMessageHandlerIos(
45 : platform_task_runner_(
std::move(platform_task_runner)) {}
56 std::lock_guard lock(message_handlers_mutex_);
57 auto it = message_handlers_.find(
message->channel());
58 if (it != message_handlers_.end()) {
59 handler_info = it->second;
71 "channel",
message->channel().c_str());
72 dispatch_block_t run_handler = ^{
73 handler(
data, ^(NSData* reply) {
80 completer->CompleteEmpty();
87 [handler_info.task_queue.get() dispatch:run_handler];
89 dispatch_async(dispatch_get_main_queue(), run_handler);
93 completer->CompleteEmpty();
105 std::unique_ptr<fml::Mapping> mapping) {
119 NSObject<FlutterTaskQueue>* task_queue) {
124 FML_CHECK(!task_queue || [task_queue respondsToSelector:
@selector(dispatch:)]);
126 std::lock_guard lock(message_handlers_mutex_);
127 message_handlers_.erase(channel);
129 message_handlers_[channel] = {
131 [
static_cast<NSObject<FlutterTaskQueueDispatch>*
>(task_queue) retain]),
void(^ FlutterBinaryMessageHandler)(NSData *_Nullable message, FlutterBinaryReply reply)
T get() const __attribute((ns_returns_not_retained))
virtual bool RunsTasksOnCurrentThread()
#define FML_CHECK(condition)
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot data
std::unique_ptr< fml::Mapping > ConvertNSDataToMappingPtr(NSData *data)
NSData * ConvertMappingToNSData(fml::MallocMapping buffer)
#define TRACE_EVENT_ASYNC_BEGIN1(category_group, name, id, arg1_name, arg1_val)
#define TRACE_EVENT_ASYNC_END0(category_group, name, id)