diff --git a/osu.Desktop/LegacyIpc/LegacyIpcMessage.cs b/osu.Desktop/LegacyIpc/LegacyIpcMessage.cs index 6fefae4509..2e421068dc 100644 --- a/osu.Desktop/LegacyIpc/LegacyIpcMessage.cs +++ b/osu.Desktop/LegacyIpc/LegacyIpcMessage.cs @@ -23,7 +23,6 @@ namespace osu.Desktop.LegacyIpc public new object Value { - get => base.Value; set => base.Value = new Data { MessageType = value.GetType().Name, diff --git a/osu.Desktop/LegacyIpc/LegacyTcpIpcProvider.cs b/osu.Desktop/LegacyIpc/LegacyTcpIpcProvider.cs index 5d5a34e850..43d9dd741c 100644 --- a/osu.Desktop/LegacyIpc/LegacyTcpIpcProvider.cs +++ b/osu.Desktop/LegacyIpc/LegacyTcpIpcProvider.cs @@ -2,14 +2,22 @@ // See the LICENCE file in the repository root for full licence text. using System; -using System.Threading.Tasks; using Newtonsoft.Json.Linq; +using osu.Framework.Logging; using osu.Framework.Platform; namespace osu.Desktop.LegacyIpc { + /// + /// Provides IPC to legacy osu! clients. + /// public class LegacyTcpIpcProvider : TcpIpcProvider { + private static readonly Logger logger = Logger.GetLogger("ipc"); + + /// + /// Invoked when a message is received from a legacy client. + /// public new Func MessageReceived; public LegacyTcpIpcProvider() @@ -19,35 +27,22 @@ namespace osu.Desktop.LegacyIpc { try { + logger.Add($"Processing incoming IPC message: {msg.Value}"); + var legacyData = ((JObject)msg.Value).ToObject(); - object value = parseObject((JObject)legacyData.MessageData, legacyData.MessageType); + object value = parseObject((JObject)legacyData!.MessageData, legacyData.MessageType); object result = MessageReceived?.Invoke(value); return result != null ? new LegacyIpcMessage { Value = result } : null; } catch (Exception ex) { - Console.WriteLine(ex); + logger.Add("Processing IPC message failed!", exception: ex); + return null; } - - return null; }; } - public Task SendMessageAsync(object message) => base.SendMessageAsync(new LegacyIpcMessage { Value = message }); - - public async Task SendMessageWithResponseAsync(object message) - { - var result = await base.SendMessageWithResponseAsync(new LegacyIpcMessage { Value = message }).ConfigureAwait(false); - - var legacyData = ((JObject)result.Value).ToObject(); - return (T)parseObject((JObject)legacyData.MessageData, legacyData.MessageType); - } - - public new Task SendMessageAsync(IpcMessage message) => throw new InvalidOperationException("Use typed overloads."); - - public new Task SendMessageWithResponseAsync(IpcMessage message) => throw new InvalidOperationException("Use typed overloads."); - private object parseObject(JObject value, string type) { switch (type) diff --git a/osu.Desktop/Program.cs b/osu.Desktop/Program.cs index 7762aa9010..c41a6a4f5d 100644 --- a/osu.Desktop/Program.cs +++ b/osu.Desktop/Program.cs @@ -28,8 +28,6 @@ namespace osu.Desktop { private const string base_game_name = @"osu"; - private static LegacyTcpIpcProvider legacyIpcProvider; - [STAThread] public static void Main(string[] args) {