public virtual Task SendMessageAsync(IpcMessage message) { throw new NotSupportedException("This platform does not implement IPC."); }
protected void OnMessageReceived(IpcMessage message) => MessageReceived?.Invoke(message);
public override Task SendMessageAsync(IpcMessage message) => ipcProvider.SendMessageAsync(message);
public override Task SendMessageAsync(IpcMessage message) { ensureIPCReady(); return(ipcProvider.SendMessageAsync(message)); }
public async Task StartAsync() { var token = cancelListener.Token; try { while (!token.IsCancellationRequested) { while (!listener.Pending()) { await Task.Delay(10, token).ConfigureAwait(false); if (token.IsCancellationRequested) { return; } } using (var client = await listener.AcceptTcpClientAsync().ConfigureAwait(false)) { using (var stream = client.GetStream()) { byte[] header = new byte[sizeof(int)]; await stream.ReadAsync(header.AsMemory(), token).ConfigureAwait(false); int len = BitConverter.ToInt32(header, 0); byte[] data = new byte[len]; await stream.ReadAsync(data.AsMemory(), token).ConfigureAwait(false); string str = Encoding.UTF8.GetString(data); var json = JToken.Parse(str); var type = Type.GetType(json["Type"].Value <string>()); var value = json["Value"]; Trace.Assert(type != null); Trace.Assert(value != null); var msg = new IpcMessage { Type = type.AssemblyQualifiedName, Value = JsonConvert.DeserializeObject(value.ToString(), type), }; MessageReceived?.Invoke(msg); } } } } catch (TaskCanceledException) { } finally { try { listener.Stop(); } catch { } } }
public override async Task SendMessageAsync(IpcMessage message) { await ipcProvider.SendMessageAsync(message); }