private bool webSend(string imei, PilotkaState state, DateTime utcDatetime)
        {
            string currentUrl = url;

            currentUrl = currentUrl.Replace("{IMEI}", imei)
                         .Replace("{STATE}", state == PilotkaState.Started ? "1" : "0")
                         .Replace("{UTC}", HttpUtility.UrlEncode(utcDatetime.ToString(datetimeFormat)));

            HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(currentUrl);

            webRequest.Timeout = webRequestTimeout;
            webRequest.Method  = "GET";
            try
            {
                var webResponse = (HttpWebResponse)webRequest.GetResponse();
                log.DebugFormat("WebRequestSender: webResponse = {0}, url={1}", webResponse.StatusCode, currentUrl);
                return(webResponse.StatusCode == HttpStatusCode.OK);
            }
            catch (Exception e)
            {
                log.Error("WebRequestSender: " + currentUrl + ": " + e.ToString());
                return(false);
            }
            finally
            {
                webRequest.GetResponse().Close();
                webRequest.GetResponse().Dispose();
            }
        }
 public async Task <bool> send(string imei, PilotkaState state, DateTime utcDatetime)
 {
     return(await Task <bool> .Run(() =>
     {
         lock (this)
         {
             if (Settings.Default.Activemq_enabled)
             {
                 return nsmSend(imei, state, utcDatetime);
             }
             else
             {
                 return webSend(imei, state, utcDatetime);
             }
         }
     }
                                   ));
 }
        private bool nsmSend(string imei, PilotkaState state, DateTime utcDatetime)
        {
            try
            {
                if (session == null)
                {
                    createConnection();
                }

                string msg         = imei + "|" + (state == PilotkaState.Started ? "1" : "0") + "|" + utcDatetime.ToString(datetimeFormat);
                var    textMessage = session.CreateTextMessage(msg);
                producer.Send(textMessage);
                return(true);
            }
            catch
            {
                closeConnection();
                return(false);
            }
        }
        public async void retranslate(BasePacket packet)
        {
            try
            {
                if (settings.Enabled && imeiDictionary.ContainsKey(packet.IMEI))
                {
                    StateSended stateSended = imeiDictionary[packet.IMEI];

                    PilotkaState newState = packet.Status[bitIndex] == '0' ? PilotkaState.Stoped : PilotkaState.Started;

                    if (!stateSended.sended || stateSended.state != newState)
                    {
                        var webRequestSender = webRequestSenderPool.GetFromPool();
                        try
                        {
                            stateSended.state  = newState;
                            stateSended.sended = await webRequestSender.send(packet.IMEI, newState, packet.ValidNavigDateTime);

                            if (stateSended.sended)
                            {
                                log.InfoFormat("Успешно: IMEI={0}, State={1}", packet.IMEI, packet.Status[bitIndex]);
                            }
                            else
                            {
                                log.WarnFormat("Провально: IMEI={0}, State={1}", packet.IMEI, packet.Status[bitIndex]);
                            }
                        }
                        finally
                        {
                            webRequestSenderPool.ReturnToPool(webRequestSender);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                log.Error("RetranslatorPilotka.retranslate: " + e.ToString());
            }
        }