public async Task <LongPollingResponse> GetTaskEightData([FromBody] LongPollingRequest request) { UpdateDto update = null; UniversityDto[] dtos = null; int iterationsCount = ITERATIONS_COUNT; do { update = await updatesService.GetUniversitiesListUpdate(request.TimeStamp); if (update.NeedUpdate) { dtos = universitiesService.GetUniversitiesAboveRating(VSU_RATING); break; } if (iterationsCount == 0) { await NoContent().ExecuteResultAsync(ControllerContext); return(null); } iterationsCount--; await Task.Delay(MS_DELAY); }while (!update.NeedUpdate); return(new LongPollingResponse() { IsFinished = update.IsFinished, TimeStamp = update.TimeStamp, Universities = dtos }); }
public override void Send( ITransportListener listener, IList <IMutableMessage> messages, int requestTimeout = 1200) { //Console.WriteLine(); //Console.WriteLine("send({0} message(s))", messages.Count); var url = Url; if (_appendMessageType && messages.Count == 1 && messages[0].Meta) { var type = messages[0].Channel.Substring(ChannelFields.META.Length); if (url.EndsWith("/")) { url = url.Substring(0, url.Length - 1); } url += type; } var request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.ContentType = "application/json;charset=UTF-8"; if (request.CookieContainer == null) { request.CookieContainer = new CookieContainer(); } request.CookieContainer.Add(GetCookieCollection()); if (request.Headers == null) { request.Headers = new WebHeaderCollection(); } request.Headers.Add(GetHeaderCollection()); var content = JsonConvert.SerializeObject(ObjectConverter.ToListOfDictionary(messages)); _logger?.LogDebug($"Send: {content}"); var longPollingRequest = new LongPollingRequest(listener, messages, request, requestTimeout); var exchange = new TransportExchange(this, listener, messages, longPollingRequest) { Content = content, Request = request }; lock (this) { _exchanges.Add(exchange); } longPollingRequest.Exchange = exchange; AddRequest(longPollingRequest); }
public void removeRequest(LongPollingRequest request) { lock (this) { transmissions.Remove(request); } performNextRequest(); }
public void addRequest(LongPollingRequest request) { lock (this) { transportQueue.Add(request); } performNextRequest(); }
public void RemoveRequest(LongPollingRequest request) { lock (_lockObject) { _transmissions.Remove(request); } PerformNextRequest(); }
public void AddRequest(LongPollingRequest request) { lock (_lockObject) { _transportQueue.Add(request); } PerformNextRequest(); }
public TransportExchange(LongPollingTransport _parent, ITransportListener _listener, IList <IMutableMessage> _messages, LongPollingRequest _lprequest) { parent = _parent; listener = _listener; messages = _messages; request = null; lprequest = _lprequest; isSending = true; }
public TransportExchange(LongPollingTransport parent, ITransportListener listener, IList <IMutableMessage> messages, LongPollingRequest lprequest) { _parent = parent; Listener = listener; Messages = messages; Request = null; LpRequest = lprequest; IsSending = true; }
public override void send(ITransportListener listener, IList <IMutableMessage> messages) { //Console.WriteLine(); //Console.WriteLine("send({0} message(s))", messages.Count); String url = getURL(); if (_appendMessageType && messages.Count == 1 && messages[0].Meta) { String type = messages[0].Channel.Substring(Channel_Fields.META.Length); if (url.EndsWith("/")) { url = url.Substring(0, url.Length - 1); } url += type; } HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.ContentType = "application/json;charset=UTF-8"; #if !SILVERLIGHT if (request.CookieContainer == null) { request.CookieContainer = new CookieContainer(); } request.CookieContainer.Add(getCookieCollection()); #endif #if !SILVERLIGHT JavaScriptSerializer jsonParser = new JavaScriptSerializer(); String content = jsonParser.Serialize(ObjectConverter.ToListOfDictionary(messages)); #endif #if SILVERLIGHT String content = JsonConvert.SerializeObject(ObjectConverter.ToListOfDictionary(messages)); #endif LongPollingRequest longPollingRequest = new LongPollingRequest(listener, messages, request); TransportExchange exchange = new TransportExchange(this, listener, messages, longPollingRequest); exchange.content = content; exchange.request = request; lock (this) { _exchanges.Add(exchange); } longPollingRequest.exchange = exchange; addRequest(longPollingRequest); }
private void performNextRequest() { bool ok = false; LongPollingRequest nextRequest = null; lock (this) { if (transportQueue.Count > 0 && transmissions.Count <= 1) { ok = true; nextRequest = transportQueue[0]; transportQueue.Remove(nextRequest); transmissions.Add(nextRequest); } } if (ok && nextRequest != null) { nextRequest.send(); } }
private void PerformNextRequest() { var ok = false; LongPollingRequest nextRequest = null; lock (this) { if (_transportQueue.Count > 0 && _transmissions.Count <= 1) { ok = true; nextRequest = _transportQueue[0]; _transportQueue.Remove(nextRequest); _transmissions.Add(nextRequest); } } if (ok) { nextRequest?.Send(); } }
public TransportExchange(LongPollingTransport _parent, ITransportListener _listener, IList<IMutableMessage> _messages, LongPollingRequest _lprequest) { parent = _parent; listener = _listener; messages = _messages; request = null; lprequest = _lprequest; isSending = true; }
public override void send(ITransportListener listener, IList<IMutableMessage> messages) { //Console.WriteLine(); //Console.WriteLine("send({0} message(s))", messages.Count); String url = getURL(); if (_appendMessageType && messages.Count == 1 && messages[0].Meta) { String type = messages[0].Channel.Substring(Channel_Fields.META.Length); if (url.EndsWith("/")) url = url.Substring(0, url.Length - 1); url += type; } HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.ContentType = "application/json;charset=UTF-8"; if (request.CookieContainer == null) request.CookieContainer = new CookieContainer(); request.CookieContainer.Add(getCookieCollection()); JavaScriptSerializer jsonParser = new JavaScriptSerializer(); String content = jsonParser.Serialize(ObjectConverter.ToListOfDictionary(messages)); LongPollingRequest longPollingRequest = new LongPollingRequest(listener, messages, request); TransportExchange exchange = new TransportExchange(this, listener, messages, longPollingRequest); exchange.content = content; exchange.request = request; lock (this) { _exchanges.Add(exchange); } longPollingRequest.exchange = exchange; addRequest(longPollingRequest); }