Pigeon: Definitions for onMessageReceived

- Generated Pigeons for `HostApis` in Android and iOS
This commit is contained in:
gianlucaparadise 2021-11-01 19:37:14 +01:00
parent 043938fd0e
commit 5c411c508f
5 changed files with 99 additions and 0 deletions

View file

@ -130,6 +130,27 @@ public class HostApis {
private static class CastFlutterApiCodec extends StandardMessageCodec {
public static final CastFlutterApiCodec INSTANCE = new CastFlutterApiCodec();
private CastFlutterApiCodec() {}
@Override
protected Object readValueOfType(byte type, ByteBuffer buffer) {
switch (type) {
case (byte)128:
return CastMessage.fromMap((Map<String, Object>) readValue(buffer));
default:
return super.readValueOfType(type, buffer);
}
}
@Override
protected void writeValue(ByteArrayOutputStream stream, Object value) {
if (value instanceof CastMessage) {
stream.write(128);
writeValue(stream, ((CastMessage) value).toMap());
} else
{
super.writeValue(stream, value);
}
}
}
/** Generated class from Pigeon that represents Flutter messages that can be called from Java.*/
@ -224,6 +245,13 @@ public class HostApis {
callback.reply(null);
});
}
public void onMessageReceived(CastMessage messageArg, Reply<Void> callback) {
BasicMessageChannel<Object> channel =
new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.CastFlutterApi.onMessageReceived", getCodec());
channel.send(new ArrayList<Object>(Arrays.asList(messageArg)), channelReply -> {
callback.reply(null);
});
}
}
private static Map<String, Object> wrapError(Throwable exception) {
Map<String, Object> errorMap = new HashMap<>();

View file

@ -41,5 +41,6 @@ NSObject<FlutterMessageCodec> *CastFlutterApiGetCodec(void);
- (void)onSessionResumedWithCompletion:(void(^)(NSError *_Nullable))completion;
- (void)onSessionResumeFailedWithCompletion:(void(^)(NSError *_Nullable))completion;
- (void)onSessionSuspendedWithCompletion:(void(^)(NSError *_Nullable))completion;
- (void)onMessageReceivedMessage:(CastMessage *)message completion:(void(^)(NSError *_Nullable))completion;
@end
NS_ASSUME_NONNULL_END

View file

@ -141,11 +141,32 @@ void CastApiSetup(id<FlutterBinaryMessenger> binaryMessenger, NSObject<CastApi>
@interface CastFlutterApiCodecReader : FlutterStandardReader
@end
@implementation CastFlutterApiCodecReader
- (nullable id)readValueOfType:(UInt8)type
{
switch (type) {
case 128:
return [CastMessage fromMap:[self readValue]];
default:
return [super readValueOfType:type];
}
}
@end
@interface CastFlutterApiCodecWriter : FlutterStandardWriter
@end
@implementation CastFlutterApiCodecWriter
- (void)writeValue:(id)value
{
if ([value isKindOfClass:[CastMessage class]]) {
[self writeByte:128];
[self writeValue:[value toMap]];
} else
{
[super writeValue:value];
}
}
@end
@interface CastFlutterApiCodecReaderWriter : FlutterStandardReaderWriter
@ -294,4 +315,14 @@ NSObject<FlutterMessageCodec> *CastFlutterApiGetCodec() {
completion(nil);
}];
}
- (void)onMessageReceivedMessage:(CastMessage *)arg_message completion:(void(^)(NSError *_Nullable))completion {
FlutterBasicMessageChannel *channel =
[FlutterBasicMessageChannel
messageChannelWithName:@"dev.flutter.pigeon.CastFlutterApi.onMessageReceived"
binaryMessenger:self.binaryMessenger
codec:CastFlutterApiGetCodec()];
[channel sendMessage:@[arg_message] reply:^(id reply) {
completion(nil);
}];
}
@end

View file

@ -111,6 +111,27 @@ class CastApi {
class _CastFlutterApiCodec extends StandardMessageCodec {
const _CastFlutterApiCodec();
@override
void writeValue(WriteBuffer buffer, Object? value) {
if (value is CastMessage) {
buffer.putUint8(128);
writeValue(buffer, value.encode());
} else
{
super.writeValue(buffer, value);
}
}
@override
Object? readValueOfType(int type, ReadBuffer buffer) {
switch (type) {
case 128:
return CastMessage.decode(readValue(buffer)!);
default:
return super.readValueOfType(type, buffer);
}
}
}
abstract class CastFlutterApi {
static const MessageCodec<Object?> codec = _CastFlutterApiCodec();
@ -126,6 +147,7 @@ abstract class CastFlutterApi {
void onSessionResumed();
void onSessionResumeFailed();
void onSessionSuspended();
void onMessageReceived(CastMessage message);
static void setup(CastFlutterApi? api) {
{
const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
@ -273,5 +295,21 @@ abstract class CastFlutterApi {
});
}
}
{
const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.CastFlutterApi.onMessageReceived', codec);
if (api == null) {
channel.setMessageHandler(null);
} else {
channel.setMessageHandler((Object? message) async {
assert(message != null, 'Argument for dev.flutter.pigeon.CastFlutterApi.onMessageReceived was null.');
final List<Object?> args = (message as List<Object?>?)!;
final CastMessage? arg_message = args[0] as CastMessage?;
assert(arg_message != null, 'Argument for dev.flutter.pigeon.CastFlutterApi.onMessageReceived was null, expected non-null CastMessage.');
api.onMessageReceived(arg_message!);
return;
});
}
}
}
}

View file

@ -15,6 +15,7 @@ abstract class CastApi {
abstract class CastFlutterApi {
List<String> getSessionMessageNamespaces();
void onCastStateChanged(int castState);
void onMessageReceived(CastMessage message);
//region Session State handling
void onSessionStarting();