Симулятор для моделирования протоколов в сенсорной сети Никитин Павел, Академия Современного Программирования Руководитель – Линский Евгений Михайлович
Архитектура системы Active Object Message Gate Module Packet Simulator Network Sensor Network в UI GUICUITests MODELSMODELS Model 1 … etc … Model 2 User Extentions
Ядром системы является Dispatcher, который диспетчеризует сообщения IMessage между объектами ActiveObject. Стандартная реализация – NetObject, см. интерфейс INetObject. Mot является расширением этого класса, в который добавлены методы IMovingObject, мощность передатчика, порог приёма и стандартная линейная топология (топология - то, как соединены модули внутри него, см. Tutorial_Protocol). Основная функциональность NetObject – предоставляет возможность управлять наполнением его модулями и гейтами (для приёма сообщений). Гейт – некий «провод», соединяющий два модуля, см. Далее. Параметрами методов для работы с гейтами является «Class msgClass». Это значит, что диспетчер дифференцирует сообщения IMessage по принадлежности объекта его данных (IMessage содержит метод Object getData()) к тому или иному классу msgClass. Видно, что этот класс должен реализовывать интерфейс IPacket. Этот интерфейс – то, что можно пропускать через гейты и, соответственно, передавать между модулями внутри одного NetObject. Подробнее – в Tutorial_Protocol. Далее рассмотрим жизненный цикл при передаче сообщения IMessage в системе.
Передача сообщений Message Filter (Radio, Sensing, etc) Message Network Object –Gate –Module Packet Module 1 Module 2 Filter 1 Dispatcher Filter
На данной схеме изображена передача сообщения по шагам (подписаны цифрами): 1.Модуль2 мота1 отсылает сообщение IPacket типа «квадрат в очках». 2.Модуль1 мота1 формирует IMessage с полученным «квадратом» в качестве данных. 3.Диспетчер получает сообщение и отсылает его моту2 через фильтр. 4.Фильтр определяет, что сообщение является «квадратом» и производит соответствующие действия, затем пересылает адресату. 5.Мот2 принимает сообщение на соответствующий классу «квадрат» гейт. Предположим, что к нему присоединён модуль1. Он обрабатывает сообщение и передаёт модулю2.