Example #1
0
 public override void SendCmd(Command cmd)
 {
     base.SendCmd(cmd);
     CalcCmdStats();
 }
Example #2
0
        /// <summary>
        /// Отправить команду ТУ
        /// </summary>
        public override void SendCmd(Command cmd)
        {
            base.SendCmd(cmd);
            lastCommSucc = false;

            if (fatalError)
            {
                WriteToLog(state);
            }
            else
            {
                if (cmd.CmdNum == 1 && cmd.CmdTypeID == BaseValues.CmdTypes.Binary)
                {
                    MailMessage message;
                    if (ParseCmd(cmd, out message))
                    {
                        if (SendMessage(message))
                            lastCommSucc = true;
                    }
                    else
                    {
                        WriteToLog(CommPhrases.IncorrectCmdData);
                    }
                }
                else
                {
                    WriteToLog(CommPhrases.IllegalCommand);
                }

                writeState = true;
            }

            CalcCmdStats();
        }
Example #3
0
        /// <summary>
        /// Преобразовать команду в список почтовых сообщений
        /// </summary>
        private bool ParseCmd(Command cmd, out MailMessage message)
        {
            string cmdDataStr = cmd.GetCmdDataStr();
            int ind1 = cmdDataStr.IndexOf(';');
            int ind2 = ind1 >= 0 ? cmdDataStr.IndexOf(';', ind1 + 1) : -1;

            if (ind1 >= 0 && ind2 >= 0)
            {
                string recipient = cmdDataStr.Substring(0, ind1);
                string subject = cmdDataStr.Substring(ind1 + 1, ind2 - ind1 - 1);
                string text = cmdDataStr.Substring(ind2 + 1);

                List<string> addresses = new List<string>();
                if (addressBook == null)
                {
                    // добавление адреса получателя из данных команды
                    addresses.Add(recipient);
                }
                else
                {
                    // поиск адресов получателей в адресной книге
                    AB.AddressBook.ContactGroup contactGroup = addressBook.FindContactGroup(recipient);
                    if (contactGroup == null)
                    {
                        AB.AddressBook.Contact contact = addressBook.FindContact(recipient);
                        if (contact == null)
                        {
                            // добавление адреса получателя из данных команды
                            addresses.Add(recipient);
                        }
                        else
                        {
                            // добавление адресов получателей из контакта
                            addresses.AddRange(contact.Emails);
                        }
                    }
                    else
                    {
                        // добавление адресов получателей из группы контактов
                        foreach (AB.AddressBook.Contact contact in contactGroup.Contacts)
                            addresses.AddRange(contact.Emails);
                    }
                }

                // создание сообщения
                message = CreateMessage(addresses, subject, text);
                return message != null;
            }
            else
            {
                message = null;
                return false;
            }
        }
Example #4
0
        /// <summary>
        /// Отправить команду ТУ
        /// </summary>
        public override void SendCmd(Command cmd)
        {
            base.SendCmd(cmd);
            lastCommSucc = false;

            if (fatalError)
            {
                WriteToLog(KpPhrases.CommunicationImpossible);
            }
            else
            {
                string varName;
                ObjectIdentifier varOid;

                if ((cmd.CmdTypeID == BaseValues.CmdTypes.Standard || cmd.CmdTypeID == BaseValues.CmdTypes.Binary) &&
                    FindVariableBySignal(cmd.CmdNum, out varName, out varOid))
                {
                    ISnmpData data = cmd.CmdTypeID == BaseValues.CmdTypes.Standard ?
                        new Integer32((int)cmd.CmdVal) :
                        EncodeVarData(cmd.GetCmdDataStr());

                    if (data == null)
                        WriteToLog(CommPhrases.IncorrectCmdData);
                    else
                        Command(varName, new Variable(varOid, data));
                }
                else
                {
                    WriteToLog(CommPhrases.IllegalCommand);
                }
            }

            CalcCmdStats();
        }