Exemple #1
0
        public void TestBasicFeature()
        {
            var requestResponseService = new RequestResponseService <string, byte[]>(5555);

            requestResponseService.ReceiveMessage += ((header, payload) => new MessageFrame <string, byte[]>()
            {
                MessageType = "abc", Payload = new byte[] { 123 }
            });

            CancellationTokenSource cts = new CancellationTokenSource();

            var task = Task.Run(() =>
            {
                requestResponseService.Start(cts.Token);
            });

            var requestResponseClient = new RequestResponseClient <string, byte[]>("127.0.0.1", 5555);

            MessageFrame <string, byte[]> reply = requestResponseClient.SendRequest(new MessageFrame <string, byte[]>()
            {
                MessageType = "hellomessage", Payload = Encoding.ASCII.GetBytes("Hello World")
            });

            requestResponseService.Stop();

            if (!task.IsCompleted)
            {
                cts.Cancel();
            }

            Assert.AreEqual("abc", reply.MessageType);
            Assert.AreEqual(reply.Payload.Length, 1);
            Assert.AreEqual(reply.Payload[0], 123);
        }
Exemple #2
0
        public void make_sure_all_Request_and_Response_pairs_have_a_matching_Handler()
        {
            var requestResponseService = new RequestResponseService();
            var requestHandlerService  = new RequestHandlerService();

            var requestHandlerTypes = GetRequestHandlerAssmeblies().Select(assembly => requestHandlerService.GetSyncRequestHandlerTypes(assembly))
                                      .SelectMany(x => x)
                                      .ToList();

            foreach (var assembly in GetRequestResponseAssmeblies())
            {
                var requestTypes = requestResponseService.GetSyncRequestTypes(assembly);

                foreach (var requestType in requestTypes)
                {
                    var responseType = requestResponseService.GetMatchingSyncResponseType(requestType);

                    var requestHandlerInterfaceType = typeof(ISyncRequestHandler <,>).MakeGenericType(requestType, responseType);

                    var requestHandlerType = requestHandlerTypes.FirstOrDefault(x => x.InterfaceType == requestHandlerInterfaceType);

                    Assert.That(requestHandlerType, Is.Not.Null, string.Format("RequestType {0} & ResponseType {1} does not have a RequestHandler.",
                                                                               requestType.Name, responseType.Name));
                }
            }
        }
Exemple #3
0
 public virtual void Start()
 {
     _serviceRequest = new RequestResponseService <THeader, TPayload>(_portNumber);
     _serviceRequest.ReceiveMessage += OnReceiveMessage;
     _serviceRequest.Start(_cts.Token);
 }