コード例 #1
0
        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();
        }
コード例 #2
0
        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);
        }