private Request BuildGetRequest(EndPointInfo endPointInfo)
		{
			var uri = ConstructEndpoint(endPointInfo);
			var signedUrl = SignHttpGetUrl(uri, endPointInfo);
			var getRequest = new Request(signedUrl, endPointInfo.Headers);
			return getRequest;
		}
		private PostRequest BuildPostRequest(EndPointInfo endPointInfo)
		{
			var uri = ConstructEndpoint(endPointInfo);
			var signedParams = SignHttpPostParams(uri, endPointInfo);
			var postRequest = new PostRequest(uri, endPointInfo.Headers, signedParams);
			return postRequest;
		}
Exemplo n.º 3
0
        public bool Update(CorrelatedResSyncInfo info, IJetTransaction jetTransaction)
        {
            IEndPointTableAdapter EndPointTableAdapter = StoreEnvironment.Resolve <IEndPointTableAdapter>(this.Context);
            EndPointInfo          EndPointInfo         = EndPointTableAdapter.GetOrCreate(info.ResSyncInfo.EndPoint, jetTransaction);

            OleDbCommand oleDbCommand = jetTransaction.CreateOleCommand();

            string sqlQuery = string.Empty;

            // store only correlation data if tick is set to -1
            if (info.ResSyncInfo.Tick == -1)
            {
                sqlQuery = "UPDATE [{0}] SET  [LocalId]=@LocalId WHERE (Uuid=@Uuid);";

                oleDbCommand.CommandText = string.Format(sqlQuery, _correlatedResSyncTable.TableName);
                oleDbCommand.Parameters.AddWithValue("@LocalId", info.LocalId);
                oleDbCommand.Parameters.AddWithValue("@Uuid", info.ResSyncInfo.Uuid);
            }
            else
            {
                sqlQuery = "UPDATE [{0}] SET [tick]=@tick, [ModifiedStamp]=@ModifiedStamp, [Etag]=@Etag, [LocalId]=@LocalId , [FKEndPointId]=@EndPointId  WHERE (Uuid=@Uuid);";

                oleDbCommand.CommandText = string.Format(sqlQuery, _correlatedResSyncTable.TableName);

                oleDbCommand.Parameters.AddWithValue("@tick", info.ResSyncInfo.Tick);
                oleDbCommand.Parameters.AddWithValue("@ModifiedStamp", info.ResSyncInfo.ModifiedStamp.ToString());
                oleDbCommand.Parameters.AddWithValue("@Etag", info.ResSyncInfo.Etag);
                oleDbCommand.Parameters.AddWithValue("@LocalId", info.LocalId);
                oleDbCommand.Parameters.AddWithValue("@EndPointId", EndPointInfo.Id);
                oleDbCommand.Parameters.AddWithValue("@Uuid", info.ResSyncInfo.Uuid);
            }


            return(0 != oleDbCommand.ExecuteNonQuery());
        }
Exemplo n.º 4
0
        public EndPointInfo GetOrCreate(string EndPoint, IJetTransaction jetTransaction)
        {
            EndPointInfo resultInfo   = null;
            OleDbCommand oleDbCommand = jetTransaction.CreateOleCommand();

            oleDbCommand.CommandText = string.Format("SELECT [ID] FROM {0} WHERE [EndPoint]=@EndPoint;", _EndPointTable.TableName);
            oleDbCommand.Parameters.AddWithValue("@EndPoint", EndPoint);

            using (OleDbDataReader reader = oleDbCommand.ExecuteReader(CommandBehavior.SingleRow))
            {
                if (!reader.HasRows)
                {
                    resultInfo = this.Add(EndPoint, jetTransaction);
                }
                else
                {
                    reader.Read();

                    int id = Convert.ToInt32(reader["ID"]);
                    resultInfo = new EndPointInfo(id, EndPoint);
                }
            }

            return(resultInfo);
        }
		private string SignHttpGetUrl(string uri, EndPointInfo endPointInfo)
		{
			if (endPointInfo.IsSigned)
			{
				return _urlSigner.SignGetUrl(uri, endPointInfo.UserToken, endPointInfo.UserSecret, _oAuthCredentials);
			}
			return uri;
		}
		private IDictionary<string, string> SignHttpPostParams(string uri, EndPointInfo endPointInfo)
		{
			if (endPointInfo.IsSigned)
			{
				return _urlSigner.SignPostRequest(uri, endPointInfo.UserToken, endPointInfo.TokenSecret, _oAuthCredentials, endPointInfo.Parameters);
			}
			return endPointInfo.Parameters;
		}
Exemplo n.º 7
0
 public void IPChanged(string text)
 {
     if (!string.IsNullOrEmpty(text))
     {
         EndPointInfo ep = CardNetworkManager.Instance.CurrentEndPoint;
         ep.IP = text;
         CardNetworkManager.Instance.CurrentEndPoint = ep;
     }
 }
Exemplo n.º 8
0
    private void OnMasterServerFoundMatch(MasterServerAPI.ServerInstanceResultPacket serverinstance)
    {
        EndPointInfo ep = new EndPointInfo(GameInitializer.Master.Info.Address.IP, serverinstance.Port);

        ServerInstance    = ep;
        TimeStamp         = LastUpdateTimestamp;
        DisplayTimestamp  = false;
        UpdateQueueStatus = true;
        SetText("Found Match on Instance: " + serverinstance);
    }
		public virtual string ConstructEndpoint(EndPointInfo endPointInfo)
		{
			var apiUri = endPointInfo.UseHttps ? _apiUri.SecureUri : _apiUri.Uri;

			var newDictionary = endPointInfo.Parameters.ToDictionary(entry => entry.Key, entry => entry.Value);

			var uriString = string.Format("{0}/{1}", apiUri, SubstituteRouteParameters(endPointInfo.UriPath, newDictionary));

			uriString = uriString + AdditionalParameters(newDictionary);
			return uriString;
		}
Exemplo n.º 10
0
        /// <summary>
        /// 转发报警到上级
        /// </summary>
        /// <param name="alarmLog"></param>
        private void ForwardAlarmToTopOrganization(AlarmLog alarmLog)
        {
            Task.Run(() =>
            {
                using (var db = new AllInOneContext.AllInOneContext())
                {
                    string error             = "";
                    var topApplicationCenter = db.Organization.Include(t => t.Center).
                                               OrderBy(t => t.OrganizationFullName).
                                               Select(t => t.Center).
                                               FirstOrDefault();

                    if (topApplicationCenter != null &&
                        topApplicationCenter.EndPoints != null &&
                        topApplicationCenter.EndPoints.Count > 0)
                    {
                        _logger.LogInformation("开始推送{1}发生的{2}报警消息到上级系统...", alarmLog.AlarmSource.IPDeviceName, alarmLog.AlarmType.SystemOptionName);
                        EndPointInfo endPoint = topApplicationCenter.EndPoints.First();
                        string url            = string.Format("http://{0}:{1}/Alarm/AlarmLog/Publish", endPoint.IPAddress, endPoint.Port);
                        _logger.LogInformation("推送URL:{0}...", url);
                        var result = HttpClientHelper.Post <AlarmLog>(alarmLog, url, false);
                        if (result.Success)
                        {
                            alarmLog.UploadStatus = 1;
                            db.SaveChanges();
                            _logger.LogInformation("报警消息推送到上级系统成功");
                        }
                        else
                        {
                            _logger.LogInformation("报警消息推送到上级系统失败,原因:{0},将推送添加到报警转发队列", result);
                            ForwardAlarmLogTask.Instance.ForwardAlarmLog(alarmLog);
                        }
                    }
                    else
                    {
                        error = "未配置上级应用服务";
                    }

                    if (!string.IsNullOrEmpty(error))
                    {
                        error = string.Format("由于{0},推送{1}发生的{2}报警消息到上级系统失败!", error,
                                              alarmLog.AlarmSource.IPDeviceName, alarmLog.AlarmType.SystemOptionName);
                        ForwardAlarmLogError forwardErr = new ForwardAlarmLogError()
                        {
                            ErrorDesc  = error,
                            CreateTime = DateTime.Now
                        };
                        MQPulish.PublishMessage("ForwardAlarmLogError", forwardErr);  //改为提示.....
                    }
                }
            });
        }
Exemplo n.º 11
0
 /// <summary>
 /// key节点名称,nodecount虚拟节点个数
 /// </summary>
 /// <param name="endPoint"></param>
 /// <param name="nodecount"></param>
 protected virtual void AddNode(EndPointInfo endPoint, int nodecount)
 {
     nodecount = nodecount / 4;
     for (int i = 0; i < nodecount; i++)
     {
         byte[] temp = ComputeMd5(string.Format("{0}{1}", endPoint.Name, i));
         for (int k = 0; k < 4; k++)
         {
             int m = Hash(temp, k);
             Nodes[m] = endPoint;
         }
     }
 }
 public AuthenticationForm(EndPointInfo endpointInfo)
 {
     _endpointInfo = endpointInfo;
     InitializeComponent();
     if (_endpointInfo.Url != null)
     {
         lblUrl.Text = _endpointInfo.Url.ToString();
     }
     if (_endpointInfo.Credentials != null)
     {
         this.txtUser.Text     = _endpointInfo.Credentials.User;
         this.txtPassword.Text = _endpointInfo.Credentials.Password;
     }
 }
Exemplo n.º 13
0
        public IActionResult Add([FromBody] AlarmProcessed processInfo)
        {
            if (processInfo == null)
            {
                return(BadRequest());
            }
            using (var db = new AllInOneContext.AllInOneContext())
            {
                try
                {
                    _logger.LogInformation("开始添加报警处理意见...");
                    db.AlarmProcessed.Add(processInfo);
                    db.SaveChanges();

                    //推送处理结果到上级服务
                    //获取上级服务器的依据:按组织机构长地址排序,取第一个组织机构的应用中心信息
                    var topApplicationCenter = db.Organization.Include(t => t.Center).
                                               OrderBy(t => t.OrganizationFullName).
                                               Select(t => t.Center).
                                               FirstOrDefault();
                    if (topApplicationCenter != null && topApplicationCenter.EndPoints != null && topApplicationCenter.EndPoints.Count > 0)
                    {
                        _logger.LogInformation("发送报警处理到上级平台...");
                        EndPointInfo endPoint = topApplicationCenter.EndPoints.First();
                        string       url      = string.Format("http://{0}:{1}/Alarm/AlarmProcessed/Publish", endPoint.IPAddress, endPoint.Port);
                        var          result   = HttpClientHelper.Post <AlarmProcessed>(processInfo, url);
                        _logger.LogInformation("发送报警处理到上级平台...result:{0}", result);
                    }
                    else
                    {
                        Console.WriteLine("未配置上级应用服务,未能完成发送报警处理到上级系统");
                    }

                    //本地广播报警处理消息
                    _logger.LogInformation("广播报警处理消息");
                    MQPulish.PublishMessage("AlarmProcess", processInfo);

                    _logger.LogInformation("完成添加报警处理意见...");
                    return(CreatedAtRoute("GetById", processInfo));
                }
                catch (Exception ex)
                {
                    _logger.LogError("添加报警处理意见异常,Message:{0}\r\n,StackTrace{1}", ex.Message, ex.StackTrace);
                    return(BadRequest(ex));
                }
            }
        }
Exemplo n.º 14
0
        private static async Task Go(EndPointInfo endpoint)
        {
            var           keys = GetAppCredentials(endpoint.Name);
            IDeviceOAuth2 auth = new DeviceOAuth(endpoint, (string)keys.scopes, (string)keys.client_id, (string)keys.client_secret);

            auth.WaitingForConfirmation += (o, e) =>
            {
                Console.CursorLeft = 0;
                Console.Write(e + " seconds left         ");
            };
            auth.PromptUser += (o, e) =>
            {
                Console.WriteLine("");
                Console.WriteLine("Go to this url on any computer:");
                Console.WriteLine(e.VerificationUri);
                Console.WriteLine("And enter this code:");
                Console.WriteLine(e.UserCode);
                Console.WriteLine("");
            };

            Console.WriteLine("Authenticating...");

            try
            {
                var token = await auth.Authorize(null);

                dynamic profile = await auth.GetProfile(token);

                Console.WriteLine("");
                Console.WriteLine("Name = " + profile.name);
            }
            catch (AggregateException e)
            {
                Console.WriteLine("Error:");
                foreach (var inner in e.InnerExceptions)
                {
                    Console.WriteLine(inner.Message);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Error:");
                Console.WriteLine(e.Message);
            }
        }
Exemplo n.º 15
0
        private bool CheckSyncDigest(HttpClient httpClient, string resource, EndPointInfo endpoint)
        {
            string tmpUrl = endpoint.GetResourceUri(resource).ToString();

            tmpUrl = string.Format("{0}/{1}?runName={2}&runStamp={3}", tmpUrl, "$syncDigest", "testDigest", this.RunStamp.ToUniversalTime());
            HttpResponseMessage respMsg = httpClient.Get(tmpUrl);

            respMsg.Content.LoadIntoBuffer();

            if (respMsg.StatusCode == HttpStatusCode.OK)
            {
                return(true);
            }

            this.Logger.Write(string.Format("The Resource {0} is not accessable", resource), Severity.Error);
            this.Logger.Write(string.Format("on following root url {0}", endpoint.UrlString), Severity.Error);
            return(false);
        }
Exemplo n.º 16
0
        public ICorrelatedResSyncInfoEnumerator GetSincetick(string resourceKind, string EndPoint, int tick)
        {
            CorrelatedResSyncInfo[] resultInfos;

            ICorrelatedResSyncTableAdapter correlatedResSyncTableAdapter = this.GetAdapter(resourceKind);
            IEndPointTableAdapter          EndPointTableAdapter          = StoreEnvironment.Resolve <IEndPointTableAdapter>(_context);

            using (IJetTransaction jetTransaction = _jetConnectionProvider.GetTransaction(false))
            {
                EndPointInfo EndPointInfo = EndPointTableAdapter.GetOrCreate(EndPoint, jetTransaction);

                resultInfos = correlatedResSyncTableAdapter.GetSincetick(EndPointInfo.Id, tick, jetTransaction);

                jetTransaction.Commit();
            }

            return((null != resultInfos) ? new CorrelatedResSyncInfoEnumerator(resultInfos) : new CorrelatedResSyncInfoEnumerator(new CorrelatedResSyncInfo[0]));
        }
        public SyncDigestEntryInfo Get(string resourceKind, string EndPoint)
        {
            SyncDigestEntryInfo       resultInfo               = null;
            ISyncDigestTableAdapter   syncDigestTableAdapter   = StoreEnvironment.Resolve <ISyncDigestTableAdapter>(_context);
            IResourceKindTableAdapter resourceKindTableAdapter = StoreEnvironment.Resolve <IResourceKindTableAdapter>(_context);
            IEndPointTableAdapter     EndPointTableAdapter     = StoreEnvironment.Resolve <IEndPointTableAdapter>(_context);

            using (IJetTransaction jetTransaction = _jetConnectionProvider.GetTransaction(false))
            {
                ResourceKindInfo resourceKindInfo = resourceKindTableAdapter.GetOrCreate(resourceKind, jetTransaction);
                EndPointInfo     EndPointInfo     = EndPointTableAdapter.GetOrCreate(EndPoint, jetTransaction);
                resultInfo = syncDigestTableAdapter.Get(resourceKindInfo.Id, EndPointInfo.Id, jetTransaction);

                jetTransaction.Commit();
            }

            return(resultInfo);
        }
Exemplo n.º 18
0
        private ServiceInfo GetServiceInfo(string wsdl)
        {
            var proxyFactoryGenerator = new ServiceClientProxyFactoryGenerator(
                new ServiceMetadataDownloader(),
                new ServiceMetadataImporter(
                    new CSharpCodeDomProviderFactory()),
                new ServiceClientProxyCompiler());
            var proxyFactory = proxyFactoryGenerator.GenerateProxyFactory(wsdl);
            var serviceInfo  = new ServiceInfo {
                Wsdl = wsdl, Config = proxyFactory.Config
            };
            var serviceEndpoints = proxyFactory.Endpoints;

            foreach (var serviceEndpoint in serviceEndpoints)
            {
                var contractDescription = serviceEndpoint.Contract;
                var contractName        = contractDescription.Name;

                var proxy = proxyFactory.CreateProxy(serviceEndpoint);

                var operationNames = contractDescription.Operations.Select(x => x.Name).ToArray();
                var contractInfo   = new ContractInfo {
                    Proxy = proxy, ContractName = contractName
                };
                var endPointInfo = new EndPointInfo {
                    BindingName = serviceEndpoint.Binding.Name, ContractInfo = contractInfo
                };

                foreach (var operationName in operationNames)
                {
                    var instance = proxy.CreateInstance();
                    using (instance as IDisposable)
                    {
                        var method = ReflectionUtils.GetMethodDefinition(instance, operationName);
                        contractInfo.Operations.Add(new OperationInfo {
                            Contract = contractInfo, Method = method
                        });
                    }
                }
                serviceInfo.EndPoints.Add(endPointInfo);
            }
            return(serviceInfo);
        }
        public void Should_fire_resolve_with_correct_values()
        {
            A.CallTo(() => _urlResolver.Resolve(A <Uri> .Ignored, A <string> .Ignored, A <WebHeaderCollection> .Ignored))
            .Returns("<response status=\"ok\" version=\"1.2\" ><serviceStatus><serverTime>2011-03-04T08:10:29Z</serverTime></serviceStatus></response>");

            const string expectedMethod  = "GET";
            var          expectedHeaders = new WebHeaderCollection();

            var endPointState = new EndPointInfo()
            {
                Uri = "test", HttpMethod = expectedMethod, Headers = expectedHeaders
            };
            var expected = new Uri(string.Format("{0}/test?oauth_consumer_key={1}", _apiUrl, _consumerKey));

            _endpointResolver.HitEndpoint(endPointState);

            A.CallTo(() => _urlResolver.Resolve(A <Uri> .That.Matches(x => x.PathAndQuery == expected.PathAndQuery), expectedMethod, A <WebHeaderCollection> .Ignored))
            .MustHaveHappened();
        }
        public void Can_get_an_artists_releases()
        {
            const string endpoint = "artist/releases";

            var endPointInfo = new EndPointInfo {
                Uri = endpoint, Parameters = new NameValueCollection {
                    { "artistId", "1" }
                }
            };

            string xml = _endpointResolver.GetRawXml(endPointInfo);

            dynamic dx = new DynamicXmlParser(xml);

            var name       = dx.releases.release[0].title.Value;
            var secondName = dx.releases.release[1].title.Value;

            Assert.That(name, Is.EqualTo("Night Train"));
            Assert.That(secondName, Is.EqualTo("Crystal Ball"));
        }
Exemplo n.º 21
0
        private HttpClient GetHttpClient(EndPointInfo endpoint, ProxyInfo proxy, string resource)
        {
            HttpClient result = new HttpClient();

            result.BaseAddress = endpoint.GetResourceUri(resource);
            if ((endpoint.Credentials != null) && (!String.IsNullOrEmpty(endpoint.Credentials.User)))
            {
                result.TransportSettings.Credentials = new NetworkCredential(endpoint.Credentials.User, endpoint.Credentials.Password);
            }
            if ((proxy != null) && (!String.IsNullOrEmpty(proxy.Host)))
            {
                WebProxy webProxy = new WebProxy(proxy.Host, proxy.Port);
                if ((proxy.Credentials != null) && (!String.IsNullOrEmpty(proxy.Credentials.User)))
                {
                    webProxy.Credentials = new NetworkCredential(proxy.Credentials.User, proxy.Credentials.Password);
                }
                result.TransportSettings.Proxy = webProxy;
            }
            result.TransportSettings.ConnectionTimeout = new TimeSpan(0, 5, 0);
            return(result);
        }
Exemplo n.º 22
0
        private EndPointInfo Add(string EndPoint, IJetTransaction jetTransaction)
        {
            EndPointInfo resultInfo   = null;
            OleDbCommand oleDbCommand = jetTransaction.CreateOleCommand();

            oleDbCommand.CommandText = string.Format("INSERT INTO [{0}] ([EndPoint]) VALUES (@EndPoint);", _EndPointTable.TableName);

            oleDbCommand.Parameters.AddWithValue("@EndPoint", EndPoint);

            oleDbCommand.ExecuteNonQuery();

            oleDbCommand.Parameters.Clear();
            oleDbCommand.CommandText = string.Format("SELECT @@IDENTITY FROM [{0}];", _EndPointTable.TableName);
            oleDbCommand.CommandType = CommandType.Text;

            int newId = (int)oleDbCommand.ExecuteScalar();

            resultInfo = new EndPointInfo(newId, EndPoint);

            return(resultInfo);
        }
Exemplo n.º 23
0
        public void Insert(CorrelatedResSyncInfo info, IJetTransaction jetTransaction)
        {
            IEndPointTableAdapter EndPointTableAdapter = StoreEnvironment.Resolve <IEndPointTableAdapter>(this.Context);
            EndPointInfo          EndPointInfo         = EndPointTableAdapter.GetOrCreate(info.ResSyncInfo.EndPoint, jetTransaction);

            OleDbCommand oleDbCommand = jetTransaction.CreateOleCommand();

            string sqlQuery = string.Empty;

            sqlQuery = "INSERT INTO {0} ([Uuid], [tick], [ModifiedStamp], [Etag], [LocalId], [FKEndPointId], [FKResourceKindId]) VALUES (@Uuid, @tick, @ModifiedStamp, @Etag, @LocalId, @EndPointId, @ResourceKindId);";
            oleDbCommand.CommandText = string.Format(sqlQuery, _correlatedResSyncTable.TableName);

            oleDbCommand.Parameters.AddWithValue("@Uuid", info.ResSyncInfo.Uuid);
            oleDbCommand.Parameters.AddWithValue("@tick", info.ResSyncInfo.Tick);
            oleDbCommand.Parameters.AddWithValue("@ModifiedStamp", info.ResSyncInfo.ModifiedStamp.ToString());
            oleDbCommand.Parameters.AddWithValue("@Etag", info.ResSyncInfo.Etag);
            oleDbCommand.Parameters.AddWithValue("@LocalId", info.LocalId);
            oleDbCommand.Parameters.AddWithValue("@EndPointId", EndPointInfo.Id);
            oleDbCommand.Parameters.AddWithValue("@ResourceKindId", _correlatedResSyncTable.ResourceKindId);

            oleDbCommand.ExecuteNonQuery();
        }
        public void Can_get_an_artist()
        {
            const string endpoint = "artist/details";

            var endPointInfo = new EndPointInfo {
                Uri = endpoint, Parameters = new NameValueCollection {
                    { "artistId", "1" }
                }
            };

            string xml = _endpointResolver.GetRawXml(endPointInfo);

            dynamic dx = new DynamicXmlParser(xml);

            var name     = dx.artist[0].name.Value;
            var sortName = dx.artist[0].sortName.Value;
            var url      = dx.artist[0].url.Value;

            Assert.That(name, Is.EqualTo("Keane"));
            Assert.That(sortName, Is.EqualTo("Keane"));
            Assert.That(url, Is.StringStarting("http://www.7digital.com/artists/keane/"));
        }
		public override IResponse HitEndpoint(EndPointInfo endPointInfo)
		{
			var getRequest = BuildGetRequest(endPointInfo);
			return HttpClient.Get(getRequest);
		}
Exemplo n.º 26
0
 /// <summary>
 /// key节点名称,nodecount虚拟节点个数
 /// </summary>
 /// <param name="endPoint"></param>
 protected virtual void AddNode(EndPointInfo endPoint)
 {
     Nodes.Add(Nodes.Count + 1, endPoint);
 }
		public override void HitEndpointAsync(EndPointInfo endPointInfo, Action<Response> action)
		{
			var postRequest = BuildPostRequest(endPointInfo);
			HttpClient.PostAsync(postRequest,response => action(response));
		}
		public abstract IResponse HitEndpoint(EndPointInfo endPointInfo);
		public abstract void HitEndpointAsync(EndPointInfo endPointInfo, Action<IResponse> action);
		public override Response HitEndpoint(EndPointInfo endPointInfo)
		{
			var postRequest = BuildPostRequest(endPointInfo);
			return HttpClient.Post(postRequest);
		}
Exemplo n.º 31
0
 EndPointInfo GetEndPointInfo(EndPoint remote)
 {
     EndPointInfo info;
     bool usePool = (_idleCheckThread != null);
     lock (_map) {
         if (!_map.TryGetValue (remote, out info)) {
             info = new EndPointInfo (remote, _maxConnectionsPerServer, _maxRequestsPerConnection, usePool);
             _map.Add (remote, info);
         }
     }
     return info;
 }
Exemplo n.º 32
0
 public Gateway(IEndPoint endPoint, Uri uri, ILogger logger)
 {
     _endPointInfo = new EndPointInfo(endPoint, uri, logger);
 }
		public override void HitEndpointAsync(EndPointInfo endPointInfo, Action<IResponse> action)
		{
			var getRequest = BuildGetRequest(endPointInfo);
			HttpClient.GetAsync(getRequest, response => action(response));
		}
Exemplo n.º 34
0
        public void Run()
        {
            Task.Factory.StartNew(() =>
            {
                _logger.LogInformation("Start forward alarmlog task......");
                while (true)
                {
                    if (m_alarmLogList.Count == 0)
                    {
                        m_forwardWaiter.WaitOne(-1);
                    }
                    using (var db = new AllInOneContext.AllInOneContext())
                    {
                        //默认第一个为本地应用中心节点()
                        var topApplicationCenter = db.Organization.Include(t => t.Center).
                                                   OrderBy(t => t.OrganizationFullName).Select(t => t.Center).
                                                   FirstOrDefault();

                        if (topApplicationCenter == null || topApplicationCenter.EndPoints == null || topApplicationCenter.EndPoints.Count == 0)
                        {
                            _logger.LogInformation("未配置上级服务器IP,报警上传等待10 min后再检测......");
                            m_forwardWaiter.WaitOne(10 * 60000);
                            continue;
                        }

                        EndPointInfo endPoint = topApplicationCenter.EndPoints.First();
                        string url            = string.Format("http://{0}:{1}/Alarm/AlarmLog/Publish", endPoint.IPAddress, endPoint.Port);
                        //上传报警记录
                        string error = "";
                        lock (m_logLockObj)
                        {
                            for (int i = m_alarmLogList.Count - 1; i >= 0; i--)
                            {
                                AlarmLog log = m_alarmLogList[i];
                                if (log.UploadCount < 10)
                                {
                                    var result = HttpClientHelper.Post <AlarmLog>(log, url);
                                    if (result.Success)
                                    {
                                        log.UploadStatus = 1;  //上传完成
                                    }
                                    else
                                    {
                                        log.UploadCount++;
                                    }
                                    db.AlarmLog.Update(log);
                                    db.SaveChanges();
                                    m_alarmLogList.RemoveAt(i);
                                }
                                else if (log.UploadCount == 10)
                                {
                                    //上传次数达到10次,记录....
                                    log.UploadCount++;
                                    db.AlarmLog.Update(log);
                                    db.SaveChanges();
                                    m_alarmLogList.Remove(log);
                                    //广播消息
                                    error = string.Format("多次尝试推送报警失败,取消推送{0}发生的{1}报警消息到上级系统!",
                                                          log.AlarmSource.IPDeviceName, log.AlarmType.SystemOptionName);
                                    ForwardAlarmLogError forwardErr = new ForwardAlarmLogError()
                                    {
                                        ErrorDesc  = error,
                                        CreateTime = DateTime.Now
                                    };
                                    MQPulish.PublishMessage("ForwardAlarmLogError", forwardErr);
                                }
                            }
                        }
                    }
                    // m_uploadWaiter.WaitOne(10 * 1000);
                }
            });
        }
Exemplo n.º 35
0
        void Setup(IMessagingSocket sock)
        {
            sock.InquirySuccess += delegate (object sender, InquiredEventArgs e) {
                IPEndPoint ipep = e.EndPoint as IPEndPoint;
                if (ipep == null)
                    return;

                lock (_messagingStatistics) {
                    EndPointInfo info;
                    if (!_messagingStatistics.TryGetValue (ipep, out info)) {
                        info = new EndPointInfo (ipep);
                        _messagingStatistics.Add (ipep, info);
                    }
                    info.SD.AddSample ((float)e.RTT.TotalMilliseconds);
                    info.Success ++;
                    info.Retries += e.Retries;
                }
            };
            sock.InquiryFailure += delegate (object sender, InquiredEventArgs e) {
                IPEndPoint ipep = e.EndPoint as IPEndPoint;
                if (ipep == null)
                    return;
                lock (_messagingStatistics) {
                    EndPointInfo info;
                    if (!_messagingStatistics.TryGetValue (ipep, out info)) {
                        info = new EndPointInfo (ipep);
                        _messagingStatistics.Add (ipep, info);
                    }
                    info.Fail ++;
                }
            };
        }