Skip to content

Commit

Permalink
Merge pull request #18501 from unoplatform/dev/ramr/OnMessageReceived
Browse files Browse the repository at this point in the history
IDE Channel Client: Have a generic OnMessageReceived
  • Loading branch information
dr1rrb authored Oct 22, 2024
2 parents c61dff3 + da8f935 commit 540e063
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 17 deletions.
31 changes: 28 additions & 3 deletions src/Uno.UI.RemoteControl.VS/EntryPoint.cs
Original file line number Diff line number Diff line change
Expand Up @@ -344,9 +344,7 @@ private async Task EnsureServerAsync()
_process.BeginErrorReadLine();

_ideChannelClient = new IdeChannelClient(pipeGuid, new Logger(this));
_ideChannelClient.ForceHotReloadRequested += OnForceHotReloadRequestedAsync;
_ideChannelClient.OnMessageReceived += OnMessageReceivedAsync;
_ideChannelClient.OnAddMenuItemIdeMessageRequested += OnAddMenuItemRequestIdeMessageAsync;
_ideChannelClient.ConnectToHost();

// Set the port to the projects
Expand Down Expand Up @@ -422,7 +420,34 @@ async Task RestartAsync()
}
}

private async Task OnMessageReceivedAsync(object? sender, NotificationRequestIdeMessage message)
private async Task OnMessageReceivedAsync(object? sender, IdeMessage devServerMessage)
{
try
{
switch (devServerMessage)
{
case AddMenuItemRequestIdeMessage amir:
await OnAddMenuItemRequestIdeMessageAsync(sender, amir);
break;
case ForceHotReloadIdeMessage fhr:
await OnForceHotReloadRequestedAsync(sender, fhr);
break;
case NotificationRequestIdeMessage nr:
await NotificationRequestIdeMessageAsync(sender, nr);
break;
default:
_debugAction?.Invoke($"Unknown message type {devServerMessage?.GetType()} from DevServer");
break;
}
}
catch (Exception e) when (_ideChannelClient is not null)
{
_debugAction?.Invoke($"Failed to handle IdeMessage with message {e.Message}");
throw;
}
}

private async Task NotificationRequestIdeMessageAsync(object? sender, NotificationRequestIdeMessage message)
{
try
{
Expand Down
17 changes: 3 additions & 14 deletions src/Uno.UI.RemoteControl.VS/IDEChannel/IDEChannelClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,7 @@ internal class IdeChannelClient
private IIdeChannelServer? _devServer;
private readonly ILogger _logger;

public event AsyncEventHandler<ForceHotReloadIdeMessage>? ForceHotReloadRequested;
public event AsyncEventHandler<NotificationRequestIdeMessage>? OnMessageReceived;
public event AsyncEventHandler<AddMenuItemRequestIdeMessage>? OnAddMenuItemIdeMessageRequested;
public event AsyncEventHandler<IdeMessage>? OnMessageReceived;

public IdeChannelClient(Guid pipeGuid, ILogger logger)
{
Expand Down Expand Up @@ -93,20 +91,11 @@ private void ProcessDevServerMessage(object sender, IdeMessageEnvelope devServer
var process = Task.CompletedTask;
switch (devServerMessage)
{
case AddMenuItemRequestIdeMessage cr:
_logger.Debug("Command Ide Message Requested");
process = OnAddMenuItemIdeMessageRequested.InvokeAsync(this, cr);
break;

case ForceHotReloadIdeMessage forceHotReloadMessage when ForceHotReloadRequested is { } hrRequested:
_logger.Debug("Hot reload requested");
process = hrRequested.InvokeAsync(this, forceHotReloadMessage);
break;
case KeepAliveIdeMessage:
_logger.Verbose($"Keep alive from Dev Server");
break;
case NotificationRequestIdeMessage e when e is { } message:
_logger.Verbose($"Dev Server will open the Notification Message with message {e.Message}");
case IdeMessage message:
_logger.Verbose($"Dev Server Message {message.GetType()} requested");
process = OnMessageReceived.InvokeAsync(this, message);
break;
default:
Expand Down

0 comments on commit 540e063

Please sign in to comment.