blob: 998a55d493e2cda07ac15c8ef51db0b31a8c7ca4 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import Foundation
import Flutter
typealias HandlerBinaryMessengerHandler = ([Any?])-> Any
class HandlerBinaryMessenger: NSObject, FlutterBinaryMessenger {
let codec: FlutterMessageCodec
let handler: HandlerBinaryMessengerHandler
private var count = 0
init(codec: FlutterMessageCodec, handler: @escaping HandlerBinaryMessengerHandler) {
self.codec = codec
self.handler = handler
super.init()
}
func send(onChannel channel: String, message: Data?) {
// Method not implemented because this messenger is just for handling
}
func send(
onChannel channel: String,
message: Data?,
binaryReply callback: FlutterBinaryReply? = nil
) {
guard let callback = callback else { return }
guard let args = self.codec.decode(message) as? [Any?] else {
callback(nil)
return
}
let result = self.handler(args)
callback(self.codec.encode(result))
}
func setMessageHandlerOnChannel(
_ channel: String,
binaryMessageHandler handler: FlutterBinaryMessageHandler? = nil
) -> FlutterBinaryMessengerConnection {
self.count += 1
return FlutterBinaryMessengerConnection(self.count)
}
func cleanUpConnection(_ connection: FlutterBinaryMessengerConnection) {
// Method not implemented because this messenger is just for handling
}
}