Beispiel #1
0
 public static extern bool FlutterDesktopMessengerSendWithReply(
     FlutterDesktopMessenger messenger,
     string channel,
     IntPtr message,
     uint message_size,
     FlutterDesktopBinaryReply reply,
     IntPtr user_data);
        private async void OnMessageReceived(FlutterDesktopMessenger messenger, IntPtr message, IntPtr userData)
        {
            var receivedMessage = Marshal.PtrToStructure <FlutterDesktopMessage>(message);
            var messageBytes    = new byte[receivedMessage.message_size];

            Marshal.Copy(receivedMessage.message, messageBytes, 0, (int)receivedMessage.message_size);
            if (_handlers.TryGetValue(receivedMessage.channel, out var handler))
            {
                byte[] replyBytes = await handler(messageBytes);

                if (replyBytes != null)
                {
                    using (var pinned = PinnedObject.Get(replyBytes))
                    {
                        FlutterDesktopMessengerSendResponse(messenger, receivedMessage.response_handle, pinned.Pointer, (uint)replyBytes.Length);
                    }
                }
                else
                {
                    FlutterDesktopMessengerSendResponse(messenger, receivedMessage.response_handle, IntPtr.Zero, 0);
                }
            }
            else
            {
                FlutterDesktopMessengerSendResponse(messenger, receivedMessage.response_handle, IntPtr.Zero, 0);
            }
        }
Beispiel #3
0
 public static extern void FlutterDesktopMessengerSetCallback(
     FlutterDesktopMessenger messenger,
     string channel,
     FlutterDesktopMessageCallback callback,
     IntPtr user_data);
Beispiel #4
0
 public static extern void FlutterDesktopMessengerSendResponse(
     FlutterDesktopMessenger messenger,
     IntPtr handle,
     IntPtr data,
     uint data_length);
Beispiel #5
0
 public static extern bool FlutterDesktopMessengerSend(
     FlutterDesktopMessenger messenger,
     string channel,
     IntPtr message,
     uint message_size);
 private DefaultBinaryMessenger(FlutterDesktopMessenger messenger)
 {
     _messenger       = messenger;
     _replyCallback   = OnReplyMessageReceived;
     _messageCallback = OnMessageReceived;
 }