private async Task HandleReceivedMessageAsync(AppDataMessage message, TypeHandledEventArgs <Byte[]> args) { if (args.Handled) { return; } if (args.Value.TryDeserialize(out StartedAppDataMessage msg)) { args.Handled = true; if (!message.Equals(msg.This)) { return; } AnotherDomainHandled?.Invoke(new TypeHandledEventArgs <StartedAppDataMessage>(msg)); } else if (args.Value.TryDeserialize(out AppDataMessage another)) { TypeHandledEventArgs <AppDataMessage> handler = new TypeHandledEventArgs <AppDataMessage>(another); AnotherDomainStarted?.Invoke(handler); await Data.SendMessageAsync(new StartedAppDataMessage(message, another, handler.Handled).Serialize()).ConfigureAwait(false); args.Handled = true; } }
private async void TrySendMessage() { //TODO: fix AppDataMessage message = Data.Message; void HandleReceivedMsg(Object sender, TypeHandledEventArgs <Byte[]> args) { // ReSharper disable once AsyncConverter.AsyncWait HandleReceivedMessageAsync(message, args).Wait(); } MessageReceived += HandleReceivedMsg; if (!Data.HasAnotherInstance) { return; } await Data.SendMessageAsync(message.Serialize()).ConfigureAwait(false); }
public StartedAppDataMessage(AppDataMessage @this, AppDataMessage another, Boolean handled = false) { This = @this; Another = another; Handled = handled; }