Титульная страница   Пространства имен   Иерархия классов   Алфавитный указатель   Классы   Файлы   Члены пространства имен   Члены классов   Члены файла  

Шаблон класса Subscriber< M >

Данный класс является подписчиком сообщений типа M, передаваемых издателем (класс Publisher). Подробнее...

#include <pubsub.hpp>

Полный список членов класса

Открытые члены

 Subscriber ()
 Создает объект.

virtual ~Subscriber ()
 Проходит по списку издателей и отписывается от каждого из них.

virtual bool regularMsg (const Publisher< M > &pub, const M &msg)
 Данная функция может быть переопределена пользователем для обработки сообщений издателя, посылаемых им из send().

virtual void subscribedMsg (const Publisher< M > &pub)
 Данная функция может быть переопределена пользователем для получения сообщений о подписке.

virtual void unsubscribedMsg (const Publisher< M > &pub)
 Данная функция может быть переопределена пользователем для получения сообщений о прекращении подписки.


Закрытые типы

typedef std::list< Publisher<
M > * > 
list_type
 определение типа для краткости


Закрытые члены

 Subscriber (const Subscriber &)
 запрещаем копирование.

Subscriber & operator= (const Subscriber &)
 запрещаем присваивание.


Закрытые данные

list_type pubs
 список издателей, на сообщения которых подписан данный подписчик


Друзья

class Publisher< M >


Подробное описание

template<class M>
class Subscriber< M >

Данный класс является подписчиком сообщений типа M, передаваемых издателем (класс Publisher).

Пользователь должен создать производный класс и переопределить виртуальные функции, соответствующие тем сообщениям, которые он хочет получать. Класс Subscriber автоматически ведет список всех издателей, на сообщения которых он подписан, для корректной отписки в деструкторе.

См. определение в файле pubsub.hpp строка 136


Определения типов

template<class M>
typedef std::list<Publisher<M>*> Subscriber< M >::list_type [private]
 

определение типа для краткости

См. определение в файле pubsub.hpp строка 140


Конструктор(ы)

template<class M>
Subscriber< M >::Subscriber const Subscriber< M > &   )  [private]
 

запрещаем копирование.

template<class M>
Subscriber< M >::Subscriber  )  [inline]
 

Создает объект.

См. определение в файле pubsub.hpp строка 153

00153 {}

template<class M>
Subscriber< M >::~Subscriber  )  [virtual]
 

Проходит по списку издателей и отписывается от каждого из них.

Переопределенная пользователем Функция unsubscribedMsg() при этом не вызывается.

См. определение в файле pubsub.hpp строка 255

Перекрестные ссылки Subscriber< M >::pubs.

00256 {
00257  for (typename list_type::const_iterator cit=pubs.begin(), cend=pubs.end();
00258       cit!=cend; ++cit) {
00259      (*cit)->impl.unsubscribe(this);
00260  }
00261 }


Методы

template<class M>
Subscriber& Subscriber< M >::operator= const Subscriber< M > &   )  [private]
 

запрещаем присваивание.

template<class M>
bool Subscriber< M >::regularMsg const Publisher< M > &  pub,
const M &  msg
[virtual]
 

Данная функция может быть переопределена пользователем для обработки сообщений издателя, посылаемых им из send().

Если она вернет false, то подписчик будет сразу же отписан (с вызовом unsubscribedMsg()). Объект-издатель передается по константной ссылке pub для предотвращения его изменения в процессе передачи сообщения подписчикам, т.к. это может привести к ошибкам. Все исключения, возбуженные regularMsg(), будут проигнорированы.

Переопределяется в Finder, Finder, Logger, Logger, Logger и Sub.

См. определение в файле pubsub.hpp строка 264

Используется в Publisher< M >::send().

00265 {
00266  return 1;
00267 }

template<class M>
void Subscriber< M >::subscribedMsg const Publisher< M > &  pub  )  [virtual]
 

Данная функция может быть переопределена пользователем для получения сообщений о подписке.

Объект-издатель передается по константной ссылке pub для предотвращения его изменения в процессе передачи сообщения подписчикам, т.к. это может привести к ошибкам. Все исключения, возбуженные subscribedMsg(), будут проигнорированы.

Переопределяется в Sub.

См. определение в файле pubsub.hpp строка 270

Используется в Publisher< M >::subscribe().

00271 {
00272 }

template<class M>
void Subscriber< M >::unsubscribedMsg const Publisher< M > &  pub  )  [virtual]
 

Данная функция может быть переопределена пользователем для получения сообщений о прекращении подписки.

Объект-издатель передается по константной ссылке pub для предотвращения его изменения в процессе передачи сообщения подписчикам, т.к. это может привести к ошибкам. Все исключения, возбуженные unsubscribedMsg(), будут проигнорированы.

Переопределяется в Sub.

См. определение в файле pubsub.hpp строка 275

Используется в Publisher< M >::unsubscribe() и Publisher< M >::~Publisher().

00276 {
00277 }


Данные класса

template<class M>
list_type Subscriber< M >::pubs [private]
 

список издателей, на сообщения которых подписан данный подписчик

См. определение в файле pubsub.hpp строка 142

Используется в Publisher< M >::subscribe(), Publisher< M >::unsubscribe(), Publisher< M >::~Publisher() и Subscriber< M >::~Subscriber().


Объявления и описания членов класса находятся в файле:
Документация по ftext. Последние изменения: Sat Mar 20 17:58:16 2004. Создано системой doxygen1.3