From 41dd086a38052d520929895f0a8f29957a38fa58 Mon Sep 17 00:00:00 2001 From: gianlucaparadise Date: Mon, 1 Nov 2021 16:43:48 +0100 Subject: [PATCH] Pigeon: Definitions for `getSessionMessageNamespaces` - Generated Pigeons for `HostApis` in Android and iOS --- .../flutter_cast_framework/HostApis.java | 28 +++++++++ ios/Classes/HostApis.h | 7 +++ ios/Classes/HostApis.m | 57 +++++++++++++++++++ lib/src/HostApis.dart | 24 ++++++++ lib/src/HostApisDefinition.dart | 5 ++ 5 files changed, 121 insertions(+) diff --git a/android/src/main/java/com/gianlucaparadise/flutter_cast_framework/HostApis.java b/android/src/main/java/com/gianlucaparadise/flutter_cast_framework/HostApis.java index 2302e02..c976fa9 100644 --- a/android/src/main/java/com/gianlucaparadise/flutter_cast_framework/HostApis.java +++ b/android/src/main/java/com/gianlucaparadise/flutter_cast_framework/HostApis.java @@ -127,6 +127,34 @@ public class HostApis { } } } + private static class CastFlutterApiCodec extends StandardMessageCodec { + public static final CastFlutterApiCodec INSTANCE = new CastFlutterApiCodec(); + private CastFlutterApiCodec() {} + } + + /** Generated class from Pigeon that represents Flutter messages that can be called from Java.*/ + public static class CastFlutterApi { + private final BinaryMessenger binaryMessenger; + public CastFlutterApi(BinaryMessenger argBinaryMessenger){ + this.binaryMessenger = argBinaryMessenger; + } + public interface Reply { + void reply(T reply); + } + static MessageCodec getCodec() { + return CastFlutterApiCodec.INSTANCE; + } + + public void getSessionMessageNamespaces(Reply> callback) { + BasicMessageChannel channel = + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.CastFlutterApi.getSessionMessageNamespaces", getCodec()); + channel.send(null, channelReply -> { + @SuppressWarnings("ConstantConditions") + List output = (List)channelReply; + callback.reply(output); + }); + } + } private static Map wrapError(Throwable exception) { Map errorMap = new HashMap<>(); errorMap.put("message", exception.toString()); diff --git a/ios/Classes/HostApis.h b/ios/Classes/HostApis.h index 11ccbc1..acc6387 100644 --- a/ios/Classes/HostApis.h +++ b/ios/Classes/HostApis.h @@ -25,4 +25,11 @@ NSObject *CastApiGetCodec(void); extern void CastApiSetup(id binaryMessenger, NSObject *_Nullable api); +/// The codec used by CastFlutterApi. +NSObject *CastFlutterApiGetCodec(void); + +@interface CastFlutterApi : NSObject +- (instancetype)initWithBinaryMessenger:(id)binaryMessenger; +- (void)getSessionMessageNamespacesWithCompletion:(void(^)(NSArray *, NSError *_Nullable))completion; +@end NS_ASSUME_NONNULL_END diff --git a/ios/Classes/HostApis.m b/ios/Classes/HostApis.m index b02db2f..5656557 100644 --- a/ios/Classes/HostApis.m +++ b/ios/Classes/HostApis.m @@ -138,3 +138,60 @@ void CastApiSetup(id binaryMessenger, NSObject } } } +@interface CastFlutterApiCodecReader : FlutterStandardReader +@end +@implementation CastFlutterApiCodecReader +@end + +@interface CastFlutterApiCodecWriter : FlutterStandardWriter +@end +@implementation CastFlutterApiCodecWriter +@end + +@interface CastFlutterApiCodecReaderWriter : FlutterStandardReaderWriter +@end +@implementation CastFlutterApiCodecReaderWriter +- (FlutterStandardWriter *)writerWithData:(NSMutableData *)data { + return [[CastFlutterApiCodecWriter alloc] initWithData:data]; +} +- (FlutterStandardReader *)readerWithData:(NSData *)data { + return [[CastFlutterApiCodecReader alloc] initWithData:data]; +} +@end + +NSObject *CastFlutterApiGetCodec() { + static dispatch_once_t s_pred = 0; + static FlutterStandardMessageCodec *s_sharedObject = nil; + dispatch_once(&s_pred, ^{ + CastFlutterApiCodecReaderWriter *readerWriter = [[CastFlutterApiCodecReaderWriter alloc] init]; + s_sharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter]; + }); + return s_sharedObject; +} + + +@interface CastFlutterApi () +@property (nonatomic, strong) NSObject *binaryMessenger; +@end + +@implementation CastFlutterApi +- (instancetype)initWithBinaryMessenger:(NSObject *)binaryMessenger { + self = [super init]; + if (self) { + _binaryMessenger = binaryMessenger; + } + return self; +} + +- (void)getSessionMessageNamespacesWithCompletion:(void(^)(NSArray *, NSError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.CastFlutterApi.getSessionMessageNamespaces" + binaryMessenger:self.binaryMessenger + codec:CastFlutterApiGetCodec()]; + [channel sendMessage:nil reply:^(id reply) { + NSArray *output = reply; + completion(output, nil); + }]; +} +@end diff --git a/lib/src/HostApis.dart b/lib/src/HostApis.dart index ff687c2..ff5a175 100644 --- a/lib/src/HostApis.dart +++ b/lib/src/HostApis.dart @@ -108,3 +108,27 @@ class CastApi { } } } + +class _CastFlutterApiCodec extends StandardMessageCodec { + const _CastFlutterApiCodec(); +} +abstract class CastFlutterApi { + static const MessageCodec codec = _CastFlutterApiCodec(); + + List getSessionMessageNamespaces(); + static void setup(CastFlutterApi? api) { + { + const BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.CastFlutterApi.getSessionMessageNamespaces', codec); + if (api == null) { + channel.setMessageHandler(null); + } else { + channel.setMessageHandler((Object? message) async { + // ignore message + final List output = api.getSessionMessageNamespaces(); + return output; + }); + } + } + } +} diff --git a/lib/src/HostApisDefinition.dart b/lib/src/HostApisDefinition.dart index 5917d89..b9a92f2 100644 --- a/lib/src/HostApisDefinition.dart +++ b/lib/src/HostApisDefinition.dart @@ -9,4 +9,9 @@ class CastMessage { abstract class CastApi { void sendMessage(CastMessage message); void showCastDialog(); +} + +@FlutterApi() +abstract class CastFlutterApi { + List getSessionMessageNamespaces(); } \ No newline at end of file