private static void ProducerOnOnRequest(object sender, RequestMessage request) { var websocket = (IRequestManager) sender; var toSend = projectManager.Update(request.request.projectId, request.request.lastUpdated, request.request.toUpdate); var splitonSynchRequest = new SplitonSynchRequest(); //If there is no update, we do not change the lastUpdate var lastUpdated = request.request.lastUpdated; if (toSend.Count != 0) { //But if there is some change, the last update is the date of the last received update! lastUpdated = toSend.Select(o => o.lastUpdated).Max(); } splitonSynchRequest.lastUpdated = lastUpdated; splitonSynchRequest.projectId = request.request.projectId; splitonSynchRequest.toUpdate = toSend; var answer = new AnwserMessage(); answer.id = request.id; answer.answer = splitonSynchRequest; websocket.Send(answer); }
public void GoodRequestIsForwarded() { var requestReceived = new RequestMessage(); FakeWebsocket w = new FakeWebsocket(); IRequestManager totest = new JsonLayer(w); totest.OnRequest += (sender, message) => requestReceived = message; //Test when we receive good data var synchRequest = new SplitonSynchRequest(); synchRequest.lastUpdated = DateTime.Parse("2000-02-02").JavascriptTicks(); synchRequest.projectId = "projectwq"; synchRequest.toUpdate = new List<UpdatableElement>() { GetFakeTransaction(1) }; var request = new RequestMessage(); request.id = 12; request.request = synchRequest; string serializeRequest = JsonConvert.SerializeObject(request); Write("Simulating a string request from websocket connection ..."); w.SimulateReceived(serializeRequest); Assert.AreEqual(request.id, requestReceived.id); Assert.AreEqual(request.request.lastUpdated, requestReceived.request.lastUpdated); Assert.AreEqual(request.request.projectId, requestReceived.request.projectId); Assert.AreEqual(request.request.toUpdate, requestReceived.request.toUpdate); }