예제 #1
0
        private object ЦиклАктивности() // активная активность -
        {
            while (Активен)
            {
                while (СписокСообщений.Count != 0)
                {
                    var сообщение = СписокСообщений.Dequeue();
                    ОбработайСообщение(сообщение);
                }
                // вариант один поток на все связи
                foreach (Связь связь in СписокСвязей)
                {
                    связь.ЦиклОбработкиВходящих();// запускается обработка входящих без "ожидания приема" правда
                    //либо логика здесь
                    // проверяется входящий буфер
                    if (связь.Канал.ДоступноБайт() > 0)
                    {
                        связь.МетодПриемаСообщения();// запустить метод приема сообщения
                        //или сразу выполнить
                        var сообщ = new Сообщение();
                        ОбработайСообщение(сообщ);
                    }
                }

                // если это источник то входящих сообщений не бывает
                if (СписокКомуОтдать.Список.Count == 0)
                {
                    // отослать сообщение настройщику о простое - поиск потребителей, или
                    // поиск цели существования, я должен выполнить свое предназначение, свою цель
                    // отослать широковещательное сообщение, должен быть в списке исходящих, широковещательная активность это на самом деле ОбщаяАктиность, где СписокИсходящих = Списку Входящих

                    ОтошлиСообщения("внутренние сообщения"); // может быть команда ПолучитьСообщение
                }
                Thread.Sleep(ВремяОжидания);                 // срабатывает после отправки всех сообщений
            }
            return(null);
        }
예제 #2
0
 void ДобавитьСообщение(Сообщение сообщение)
 {
     СписокСообщений.Enqueue(сообщение);
 }
예제 #3
0
 public virtual void ОбработайСообщение(Сообщение сообщение)
 {
 }
예제 #4
0
        public override void ПолучиСообщение(Связь связь, АМОбъект сообщение)
        {
            var сообщ = new Сообщение();

            ДобавитьСообщение(сообщ);
        }
예제 #5
0
        public override void ПолучиСообщение(Связь связь, ПримитивИлиАдрес сообщение)
        {
            var сообщ = new Сообщение();

            ДобавитьСообщение(сообщ);
        }