Пример #1
0
 public System.Threading.Tasks.Task AddBusinessMessageAsync(RMS.Centralize.WebService.Proxy.MonitoringProxy.RmsReportMonitoringRaw rawMessage)
 {
     return(base.Channel.AddBusinessMessageAsync(rawMessage));
 }
Пример #2
0
        private void BroadcastAliveMessage(RmsClient client, int refID)
        {
            try
            {
                var    asc            = new AgentServiceClient();
                string clientEndpiont = ConfigurationManager.AppSettings["RMS.NetTcpBinding_AgentService"];
                clientEndpiont       = clientEndpiont.Replace("client_ip_address", client.IpAddress);
                asc.Endpoint.Address = new EndpointAddress(clientEndpiont);

                NetTcpBinding myBinding = new NetTcpBinding();
                myBinding.Security.Mode = SecurityMode.None;
                myBinding.Security.Transport.ClientCredentialType = TcpClientCredentialType.None;
                myBinding.OpenTimeout = new TimeSpan(0, 5, 0);
                asc.Endpoint.Binding  = myBinding;

                AddLogMonitoringClient(refID, client.ClientId, client.ClientCode, client.IpAddress, client.State, null);
                var result = asc.Monitoring(client.ClientCode);

                if (agentNotAliveHashtable.Contains(client.ClientCode))
                {
                    agentNotAliveHashtable.Remove(client.ClientCode);
                }
            }
            catch (Exception e)
            {
                try
                {
                    if (e.Message.IndexOf("AddLogMonitoringClient") > -1)
                    {
                        throw new RMSWebException(this, "0500", "BroadcastAliveMessage failed. " + e.Message, e, false);
                    }


                    // ถ้า Cleint State เป็น 1 (Normal) แสดงว่า Agent ผิดปกติ
                    if (client.State == 1)
                    {
                        using (var db = new MyDbContext())
                        {
                            var    rmsSystemConfig = db.RmsSystemConfigs.Find("AgentProcessName");
                            string agentProcessName;
                            if (rmsSystemConfig == null)
                            {
                                agentProcessName = "RMS.Agent.WPF";
                            }
                            else
                            {
                                agentProcessName = rmsSystemConfig.Value ?? rmsSystemConfig.DefaultValue;
                            }

                            rmsSystemConfig = db.RmsSystemConfigs.Find("DelayAlert.AgentNotAlive");
                            string dalayInSecond;
                            if (rmsSystemConfig == null)
                            {
                                dalayInSecond = "90";
                            }
                            else
                            {
                                dalayInSecond = rmsSystemConfig.Value ?? rmsSystemConfig.DefaultValue;
                            }

                            SqlParameter[] parameters = new SqlParameter[1];
                            SqlParameter   p1         = new SqlParameter("ClientID", client.ClientId);
                            parameters[0] = p1;

                            var lists = db.Database.SqlQuery <MonitoringProfileDeviceInfo>("RMS_GetMonitoringProfileDeviceByClientID "
                                                                                           + "@ClientID", parameters);
                            var device = lists.First(f => f.DeviceCode == "CLIENT" && f.DeviceTypeCode == Models.DeviceCode.Client &&
                                                     (string.IsNullOrEmpty(f.StringValue) || f.StringValue == agentProcessName));

                            if (device != null)
                            {
                                bool CanSendMessage = Convert.ToInt32(dalayInSecond) == 0;

                                if (agentNotAliveHashtable.Contains(client.ClientCode))
                                {
                                    DateTime a             = (DateTime)agentNotAliveHashtable[client.ClientCode];
                                    var      diffInSeconds = (DateTime.Now - a).TotalSeconds;
                                    if (diffInSeconds > Convert.ToInt32(dalayInSecond))
                                    {
                                        CanSendMessage = true;
                                    }
                                }
                                else
                                {
                                    agentNotAliveHashtable.Add(client.ClientCode, DateTime.Now);
                                }


                                if (CanSendMessage)
                                {
                                    var mp = new WebService.Proxy.MonitoringService().monitoringService;

                                    RmsReportMonitoringRaw rawMessage = new RmsReportMonitoringRaw
                                    {
                                        ClientCode                = client.ClientCode,
                                        DeviceCode                = "CLIENT",
                                        Message                   = "AGENT_NOT_ALIVE",
                                        MessageDateTime           = DateTime.Now,
                                        MonitoringProfileDeviceId = device.MonitoringProfileDeviceId
                                    };

                                    mp.AddMessage(rawMessage);

                                    if (agentNotAliveHashtable.Contains(client.ClientCode))
                                    {
                                        agentNotAliveHashtable.Remove(client.ClientCode);
                                    }
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    throw new RMSWebException(this, "0500", "BroadcastAliveMessage failed. " + ex.Message, ex, false);
                }
            }
        }
Пример #3
0
 public void AddBusinessMessage(RMS.Centralize.WebService.Proxy.MonitoringProxy.RmsReportMonitoringRaw rawMessage)
 {
     base.Channel.AddBusinessMessage(rawMessage);
 }