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); }
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)); } } }
public virtual void Start() { _serviceRequest = new RequestResponseService <THeader, TPayload>(_portNumber); _serviceRequest.ReceiveMessage += OnReceiveMessage; _serviceRequest.Start(_cts.Token); }