private void RegisterTopic(Topic topic, Action <object> onEventReceived) { var pipename = $"{Constants.PipeName}-{topic}"; _pipes.TryGetValue(pipename, out var server); if (server is null) { server = new NamedPipeServerStream(pipename, PipeDirection.InOut); _pipes.Add(pipename, server); } server.WaitForConnection(); Console.WriteLine($"Receiver: Pipe {pipename} connected"); var ss = new StreamString(server); void waitForMessage() { var payload = JsonConvert.DeserializeObject <object>(ss.ReadString()); onEventReceived(payload); waitForMessage(); }; waitForMessage(); }
private void SendToTopic(Topic topic, object payload) { var pipename = $"{Constants.PipeName}-{topic}"; _pipes.TryGetValue(pipename, out var client); if (client is null) { client = new NamedPipeClientStream(".", pipename, PipeDirection.InOut); _pipes.Add(pipename, client); client.Connect(); Console.WriteLine($"Sender: Pipe {pipename} connected"); } var ss = new StreamString(client); var json = JsonConvert.SerializeObject(payload); Console.WriteLine($"Sender: Sending {json}"); ss.WriteString(json); }