未验证 提交 e9c21023 编写于 作者: G gaaclarke 提交者: GitHub

Expanded channel buffer resize to method channels. (#12725)

* Expanded channel buffer resize to method channels.
上级 6ac4f9fd
......@@ -112,8 +112,13 @@ public final class BasicMessageChannel<T> {
* yet or the channel's message handler isn't setup on the Dart side yet.
*/
public void resizeChannelBuffer(int newSize) {
resizeChannelBuffer(messenger, name, newSize);
}
static void resizeChannelBuffer(
@NonNull BinaryMessenger messenger, @NonNull String channel, int newSize) {
Charset charset = Charset.forName("UTF-8");
String messageString = String.format(Locale.US, "resize\r%s\r%d", name, newSize);
String messageString = String.format(Locale.US, "resize\r%s\r%d", channel, newSize);
ByteBuffer message = ByteBuffer.wrap(messageString.getBytes(charset));
messenger.send(CHANNEL_BUFFERS_CHANNEL, message);
}
......
......@@ -119,6 +119,15 @@ public final class MethodChannel {
handler == null ? null : new IncomingMethodCallHandler(handler));
}
/**
* Adjusts the number of messages that will get buffered when sending messages to
* channels that aren't fully setup yet. For example, the engine isn't running
* yet or the channel's message handler isn't setup on the Dart side yet.
*/
public void resizeChannelBuffer(int newSize) {
BasicMessageChannel.resizeChannelBuffer(messenger, name, newSize);
}
/**
* A handler of incoming method calls.
*/
......
......@@ -252,6 +252,14 @@ FLUTTER_EXPORT
* @param handler The method call handler.
*/
- (void)setMethodCallHandler:(FlutterMethodCallHandler _Nullable)handler;
/**
* Adjusts the number of messages that will get buffered when sending messages to
* channels that aren't fully setup yet. For example, the engine isn't running
* yet or the channel's message handler isn't setup on the Dart side yet.
*/
- (void)resizeChannelBuffer:(NSInteger)newSize;
@end
/**
......
......@@ -8,6 +8,14 @@
static NSString* const FlutterChannelBuffersChannel = @"dev.flutter/channel-buffers";
static void ResizeChannelBuffer(NSObject<FlutterBinaryMessenger>* binaryMessenger,
NSString* channel,
NSInteger newSize) {
NSString* messageString = [NSString stringWithFormat:@"resize\r%@\r%@", channel, @(newSize)];
NSData* message = [messageString dataUsingEncoding:NSUTF8StringEncoding];
[binaryMessenger sendOnChannel:FlutterChannelBuffersChannel message:message];
}
@implementation FlutterBasicMessageChannel {
NSObject<FlutterBinaryMessenger>* _messenger;
NSString* _name;
......@@ -74,9 +82,7 @@ static NSString* const FlutterChannelBuffersChannel = @"dev.flutter/channel-buff
}
- (void)resizeChannelBuffer:(NSInteger)newSize {
NSString* messageString = [NSString stringWithFormat:@"resize\r%@\r%@", _name, @(newSize)];
NSData* message = [messageString dataUsingEncoding:NSUTF8StringEncoding];
[_messenger sendOnChannel:FlutterChannelBuffersChannel message:message];
ResizeChannelBuffer(_messenger, _name, newSize);
}
@end
......@@ -234,6 +240,11 @@ NSObject const* FlutterMethodNotImplemented = [NSObject new];
};
[_messenger setMessageHandlerOnChannel:_name binaryMessageHandler:messageHandler];
}
- (void)resizeChannelBuffer:(NSInteger)newSize {
ResizeChannelBuffer(_messenger, _name, newSize);
}
@end
#pragma mark - Event channel
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册