예제 #1
0
        private SCADAUpdateModel TryGetConsumer(string mrid)
        {
            SCADAUpdateModel consumer = new SCADAUpdateModel();
            string           s        = Regex.Match(mrid.ToUpper().Trim(), @"\d+").Value;

            if (mrid.Contains("ec_") || mrid.Contains("EC_"))
            {
                foreach (ResourceDescription rd in DMSService.Instance.EnergyConsumersRD)
                {
                    if (rd.GetProperty(ModelCode.IDOBJ_MRID).AsString() == "EC_" + s)
                    {
                        consumer = new SCADAUpdateModel(rd.Id, false);
                        return(consumer);
                    }
                }
            }
            else if (mrid.Contains("ec") || mrid.Contains("EC"))
            {
                foreach (ResourceDescription rd in DMSService.Instance.EnergyConsumersRD)
                {
                    if (rd.GetProperty(ModelCode.IDOBJ_MRID).AsString() == "EC_" + s)
                    {
                        consumer = new SCADAUpdateModel(rd.Id, false);
                        return(consumer);
                    }
                }
            }
            return(consumer);
        }
예제 #2
0
 public void PublishCallIncident(SCADAUpdateModel call)
 {
     try
     {
         proxy.PublishCallIncident(call);
     }
     catch { }
 }
예제 #3
0
 // not used
 public void PublishCrew(SCADAUpdateModel update)
 {
     try
     {
         proxy.PublishCrewUpdate(update);
     }
     catch { }
 }
        public void PublishCallIncident(SCADAUpdateModel call)
        {
            foreach (IPublishing subscriber in PubSubscribeDB.Subscribers)
            {
                PublishThreadData threadObj = new PublishThreadData(subscriber, call, true);

                Thread thread = new Thread(threadObj.PublishCallIncidentDelta);
                thread.Start();
            }
        }
        public void PublishCrewUpdate(SCADAUpdateModel update)
        {
            foreach (IPublishing subscriber in PubSubscribeDB.Subscribers)
            {
                PublishThreadData threadObj = new PublishThreadData(subscriber, update);

                Thread thread = new Thread(threadObj.PublishCrewDelta);
                thread.Start();
            }
        }
 public PublishThreadData(IPublishing subscriber, SCADAUpdateModel update)
 {
     this.subscriber = subscriber;
     this.crewUpdate = update;
 }
 public PublishThreadData(IPublishing subscriber, SCADAUpdateModel call, bool isCall)
 {
     this.subscriber = subscriber;
     this.call       = call;
 }
예제 #8
0
        public void Process()
        {
            while (true)
            {
                LogIn();
                Message message;
                try
                {
                    var        fg             = client.GetMessageUids();
                    var        count          = client.GetMessageCount();
                    List <int> indexforDelete = new List <int>();
                    if (count > 0)
                    {
                        for (int i = 1; i <= count; i++)
                        {
                            message = client.GetMessage(i);
                            MessagePart mp = message.FindFirstPlainTextVersion();
                            messagesFormClents.Add(message.Headers.MessageId, message);

                            /*
                             * Console.WriteLine(mp.GetBodyAsText());
                             * Pronaci ec na osnovu MRID_ja
                             */
                            SCADAUpdateModel call = TryGetConsumer(mp.GetBodyAsText());
                            if (call.Gid > 0)
                            {
                                SendMailMessageToClient(message, true);
                                lock (sync)
                                {
                                    if (DMSService.Instance.Tree.Data[call.Gid].Marker == true)
                                    {
                                        clientsCall.Add(call.Gid);
                                        DMSService.Instance.Tree.Data[call.Gid].Marker = false;
                                    }
                                }
                                if (clientsCall.Count == 3)
                                {
                                    Thread t = new Thread(new ThreadStart(TraceUpAlgorithm));
                                    t.Start();
                                }
                                Publisher publisher = new Publisher();
                                publisher.PublishCallIncident(call);
                            }
                            else
                            {
                                SendMailMessageToClient(message, false);
                            }

                            indexforDelete.Add(i);
                        }
                        foreach (int item in indexforDelete)
                        {
                            client.DeleteMessage(item);
                        }
                        client.Disconnect();
                        LogIn();
                    }
                }
                catch (Exception)
                {
                    client.Disconnect();
                    LogIn();
                }
                //Console.WriteLine(message.Headers.Subject);
                Thread.Sleep(3000);
            }
        }
예제 #9
0
 public void PublishCallIncident(SCADAUpdateModel call)
 {
     publishCall?.Invoke(call);
 }
예제 #10
0
 public void PublishCrewUpdate(SCADAUpdateModel update)
 {
     publishCrewEvent?.Invoke(update);
 }