Example #1
0
        static void Main(string[] args)
        {
            var serializer = new StringMessageSerializer();

            var serverCommunication = new TcpCommunication <StringMessage>(new TcpEndpointData(IPAddress.Any, 2000), serializer);

            using (var publisher = Scenarios.PubSub.Publisher(serverCommunication))
            {
                var clientCommunication = new TcpCommunication <StringMessage>(new TcpEndpointData(IPAddress.Loopback, 2000), serializer);

                using (Subscribe(clientCommunication, "client1"))
                    using (Subscribe(clientCommunication, "client2"))
                        using (Subscribe(clientCommunication, "client3"))
                        {
                            publisher.Broadcast("topic", new StringMessage("broadcast message 1"));
                            publisher.Broadcast("topic", new StringMessage("broadcast message 2"));
                            publisher.Broadcast("topic", new StringMessage("broadcast message 3"));

                            while (_closedChannels < 3)
                            {
                                Thread.Sleep(0);
                            }
                        }
            }

            Console.ReadKey();
        }
Example #2
0
 public UdpMessageSender(NetworkParticipiantConfiguration configuration)
 {
     _client         = new UdpClient(0);
     _encoding       = configuration.Encoding;
     _serializer     = new StringMessageSerializer(configuration.Separator);
     _serverEndPoint = new IPEndPoint(IPAddress.Loopback, configuration.Port);
 }
 public UdpMessageReceiver(NetworkParticipiantConfiguration configuration)
 {
     _server       = new UdpClient(configuration.Port);
     _serverThread = new Thread(RunServer);
     _encoding     = configuration.Encoding;
     _serializer   = new StringMessageSerializer(configuration.Separator);
 }
Example #4
0
 public TcpMessageSender(NetworkParticipiantConfiguration configuration)
 {
     _encoding = configuration.Encoding;
     _client   = new TcpClient(new IPEndPoint(IPAddress.Any, 0));
     _client.Connect(new IPEndPoint(IPAddress.Loopback, configuration.Port));
     _stream     = _client.GetStream();
     _serializer = new StringMessageSerializer(configuration.Separator);
 }
 public TextFileMessageSender(TextFileParticipiantConfiguration configuration) : base(configuration)
 {
     _writer = new StreamWriter(Stream)
     {
         AutoFlush = true
     };
     _serializer = new StringMessageSerializer(configuration.Separator);
 }
Example #6
0
 public TcpMessageReceiver(NetworkParticipiantConfiguration configuration)
 {
     _encoding = configuration.Encoding;
     _listener = new TcpListener(IPAddress.Loopback, configuration.Port);
     _listener.Start();
     _serverThread = new Thread(RunServer);
     _serializer   = new StringMessageSerializer(configuration.Separator);
 }
        public void ThrowExceptionWhenMessageIsNotStringMessage()
        {
            var serializer = new StringMessageSerializer();
            var message    = new RowBytesMessage(null);

            Assert.Throws <ArgumentException>(() =>
            {
                serializer.Serialize(message);
            });
        }
        public void SuccessfulySerializeNonEmptyMessage()
        {
            var serializer = new StringMessageSerializer();
            var message    = new StringMessage("123 asd asd");

            var serializedMessage   = serializer.Serialize(message);
            var deserializedMessage = serializer.Deserialize(serializedMessage);

            Assert.That(message.Message, Is.EqualTo(deserializedMessage.Message));
        }
Example #9
0
        static void Main(string[] args)
        {
            Console.WriteLine("TLS example");


            var serializer = new StringMessageSerializer();

            var serverTlsWrapper = new ServerTlsWrapper(new X509Certificate2("server.pfx"), false, CertificateValidationCallback);

            ICommunication <StringMessage> serverCommunication =
                new TcpCommunication <StringMessage>(new TcpEndpointData(IPAddress.Any, 2000),
                                                     serializer,
                                                     ChannelSettings.GetDefault(),
                                                     TcpConnectionSettingsBuilder.GetDefaultSettings(),
                                                     serverTlsWrapper);

            var server = Scenarios.RequestResponse.SetupServer(serverCommunication)
                         .UsingNewClientHandler((sender, a) => { Console.WriteLine("channel opened"); })
                         .UsingRequestHandler((sender, a) => { a.Response = new StringMessage(a.Request.Message.Replace("request", "response")); })
                         .UsingChannelClosedHandler((sender, a) => { Console.WriteLine("channel closed"); })
                         .Go();

            var clientTlsWrapper = new ClientTlsWrapper("SharpChannels Example Server Certificate",
                                                        new X509Certificate[] { new X509Certificate2("client.pfx") },
                                                        false,
                                                        CertificateValidationCallback);

            ICommunication <StringMessage> clientCommunication =
                new TcpCommunication <StringMessage>(new TcpEndpointData(IPAddress.Loopback, 2000),
                                                     serializer,
                                                     ChannelSettings.GetDefault(),
                                                     TcpConnectionSettingsBuilder.GetDefaultSettings(),
                                                     clientTlsWrapper);

            var r = Scenarios.RequestResponse.Requester(clientCommunication);

            using (r.Channel)
            {
                r.Channel.Open();

                var requester = new Requester(r.Channel);

                var requestMessage = new StringMessage($"request using tls");
                Console.WriteLine(requestMessage);

                var responseMessage = requester.Request(requestMessage);
                Console.WriteLine(responseMessage);

                r.Channel.Close();
            }

            server.Stop();

            Console.ReadKey();
        }
Example #10
0
            public async Task Send(SendContext context)
            {
                context.DestinationAddress = _instance.ResponseAddress;
                context.SourceAddress      = _instance.SagaAddress;
                context.FaultAddress       = _instance.FaultAddress;
                context.RequestId          = _instance.CorrelationId;

                if (_instance.ExpirationTime.HasValue)
                {
                    var timeToLive = DateTime.UtcNow - _instance.ExpirationTime.Value;
                    context.TimeToLive = timeToLive > TimeSpan.Zero ? timeToLive : TimeSpan.FromSeconds(1);
                }

                var bodySerializer = new StringMessageSerializer(_context.ReceiveContext.ContentType, _body);

                context.Serializer = bodySerializer;
            }
Example #11
0
        static void Main(string[] args)
        {
            var serializer = new StringMessageSerializer();

            var communication = new TcpCommunication <StringMessage>(new TcpEndpointData(IPAddress.Any, 2000), serializer);

            var server = Scenarios.RequestResponse.SetupServer(communication)
                         .UsingNewClientHandler((sender, a) => { Console.WriteLine("channel opened"); })
                         .UsingRequestHandler((sender, a) => { a.Response = new StringMessage(a.Request.Message.Replace("request", "response")); })
                         .UsingChannelClosedHandler((sender, a) => { Console.WriteLine("channel closed"); })
                         .Go();

            var clientCommunication = new TcpCommunication <StringMessage>(
                new TcpEndpointData(IPAddress.Loopback, 2000),
                serializer);

            var r = Scenarios.RequestResponse.Requester(clientCommunication);

            using (r.Channel)
            {
                r.Channel.Open();

                for (int i = 0; i < 100; i++)
                {
                    var requestMessage = new StringMessage($"request #{i}");
                    Console.WriteLine(requestMessage);

                    var responseMessage = r.Request(requestMessage);
                    Console.WriteLine(responseMessage);
                }

                r.Channel.Close();
            }

            server.Stop();

            Console.ReadKey();
        }
Example #12
0
        static void Main(string[] args)
        {
            var serializer = new StringMessageSerializer();

            var serverSubscribersCommunication = new TcpCommunication <StringMessage>(new TcpEndpointData(IPAddress.Any, 2000), serializer);
            var serverPublishersCommunication  = new TcpCommunication <StringMessage>(new TcpEndpointData(IPAddress.Any, 2001), serializer);

            var clientSubscribersCommunication = new TcpCommunication <StringMessage>(new TcpEndpointData(IPAddress.Loopback, 2000), serializer);
            var clientPublishersCommunication  = new TcpCommunication <StringMessage>(new TcpEndpointData(IPAddress.Loopback, 2001), serializer);

            var server = Scenarios.Bus.RunServer(serverSubscribersCommunication, serverPublishersCommunication);

            var client1 = Scenarios.Bus.SetupClient(clientSubscribersCommunication, clientPublishersCommunication)
                          .UsingTopics(new[] { "first topic" })
                          .UsingMessageReceivedHandler((s, a) => { Console.WriteLine($"Client 1 received: {a.Message}"); })
                          .Go();

            var client2 = Scenarios.Bus.SetupClient(clientSubscribersCommunication, clientPublishersCommunication)
                          .UsingTopics(new[] { "second topic" })
                          .UsingMessageReceivedHandler((s, a) => { Console.WriteLine($"Client 2 received: {a.Message}"); })
                          .Go();

            var client3 = Scenarios.Bus.SetupClient(clientSubscribersCommunication, clientPublishersCommunication)
                          .UsingTopics(new[] { "second topic" })
                          .UsingMessageReceivedHandler((s, a) => { Console.WriteLine($"Client 3 received: {a.Message}"); })
                          .Go();

            client1.Publish("second topic", new StringMessage("message for second topic"));
            client2.Publish("first topic", new StringMessage("message for first topic"));

            Console.ReadKey();

            client1.Close();
            client2.Close();
            client3.Close();
        }
Example #13
0
 public TextFileMessageReceiver(TextFileParticipiantConfiguration configuration) : base(configuration)
 {
     _configuration = configuration;
     _serializer    = new StringMessageSerializer(configuration.Separator);
 }
Example #14
0
        static void Main(string[] args)
        {
            Console.WriteLine("Press '1' for TCP transport");
            Console.WriteLine("Press '2' for Intradomain transport");

            var transport = RequestTransport();

            Console.WriteLine();

            var serializer = new StringMessageSerializer();

            ICommunication <StringMessage> serverCommunication;

            if (transport == Transport.Tcp)
            {
                serverCommunication = new TcpCommunication <StringMessage>(new TcpEndpointData(IPAddress.Any, 2000), serializer);
            }
            else
            {
                serverCommunication = new IntradomainCommunication <StringMessage>(new IntradomainEndpoint("test"), serializer);
            }


            var server = Scenarios.RequestResponse.SetupServer(serverCommunication)
                         .UsingNewClientHandler((sender, a) => { Console.WriteLine("channel opened"); })
                         .UsingRequestHandler((sender, a) => { a.Response = new StringMessage(a.Request.Message.Replace("request", "response")); })
                         .UsingChannelClosedHandler((sender, a) => { Console.WriteLine("channel closed"); })
                         .Go();

            ICommunication <StringMessage> clientCommunication;

            if (transport == Transport.Tcp)
            {
                clientCommunication = new TcpCommunication <StringMessage>(new TcpEndpointData(IPAddress.Loopback, 2000), serializer);
            }
            else
            {
                clientCommunication = new IntradomainCommunication <StringMessage>(new IntradomainEndpoint("test"), serializer);
            }

            var r = Scenarios.RequestResponse.Requester(clientCommunication);

            using (r.Channel)
            {
                r.Channel.Open();

                var requester = new Requester(r.Channel);

                var requestMessage = new StringMessage($"request using {transport} transport");
                Console.WriteLine(requestMessage);

                var responseMessage = requester.Request(requestMessage);
                Console.WriteLine(responseMessage);

                r.Channel.Close();
            }

            server.Stop();

            Console.ReadKey();
        }