Commit 9f61b75d authored by Vitaly Lipatov's avatar Vitaly Lipatov Committed by Pavel Vainerman

fix spell errors (manually)

parent f319fda7
UniSet [![Build Status](https://travis-ci.org/Etersoft/uniset2.svg?branch=master)](https://travis-ci.org/Etersoft/uniset2) [![Coverity Scan Build Status](https://scan.coverity.com/projects/etersoft-uniset2/badge.svg)](https://scan.coverity.com/projects/etersoft-uniset2) UniSet [![Build Status](https://travis-ci.org/Etersoft/uniset2.svg?branch=master)](https://travis-ci.org/Etersoft/uniset2) [![Coverity Scan Build Status](https://scan.coverity.com/projects/etersoft-uniset2/badge.svg)](https://scan.coverity.com/projects/etersoft-uniset2)
====== ======
UniSet is a library for distributed control systems. UniSet is a library for distributed control systems development.
There are set of base components to construct this kind of systems: There are set of base components to construct this kind of systems:
* base interfaces for your implementation of control algorithms. * base interfaces for your implementation of control algorithms.
* algorithms for the discrete and analog input/output based on COMEDI interface. * algorithms for a discrete and analog input/output based on COMEDI interface.
* IPC mechanism based on CORBA (omniORB). * IPC mechanism based on CORBA (omniORB).
* logging system based on MySQL, SQLite, PostgreeSQL databases. * logging system based on MySQL, SQLite, PostgreSQL databases.
* Web interface to display logging and statistic information. * Web interface to display logging and statistic information.
* utilities for system's configuration based on XML. * utilities for system's configuration based on XML.
* python interface * python interface
...@@ -14,7 +14,7 @@ There are set of base components to construct this kind of systems: ...@@ -14,7 +14,7 @@ There are set of base components to construct this kind of systems:
UniSet have been written in C++ and IDL languages but you can use another languages in your UniSet have been written in C++ and IDL languages but you can use another languages in your
add-on components. The main principle of the UniSet library's design is a maximum integration add-on components. The main principle of the UniSet library's design is a maximum integration
with open source third-party libraries. UniSet provide the consistent interface for all with open source third-party libraries. UniSet provides the consistent interface for all
add-on components and third-party libraries. Python wrapper helps in using the library add-on components and third-party libraries. Python wrapper helps in using the library
in python scripts. in python scripts.
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
- uniset-codegen: добавить ключ --gen-sensor-name для генерирования name_Item.. (чтобы можно было в логах использовать текстовые названия) - uniset-codegen: добавить ключ --gen-sensor-name для генерирования name_Item.. (чтобы можно было в логах использовать текстовые названия)
- uniset-codegen: перенести инициализацию полей в header (c++11) и "разгрузить конструкторы" - uniset-codegen: перенести инициализацию полей в header (c++11) и "разгрузить конструкторы"
- unetudp: добавить возможость привязать номера текущего посылаемого и принимаемого пакетов к датчику - unetudp: добавить возможность привязать номера текущего посылаемого и принимаемого пакетов к датчику
- встроить различные сигналы (sigc).. в ModbusExchange и другие классы.. - встроить различные сигналы (sigc).. в ModbusExchange и другие классы..
- ModbusMaster: встроить возможность задать 'pulsar' (регистр сердцебиения) - ModbusMaster: встроить возможность задать 'pulsar' (регистр сердцебиения)
...@@ -116,4 +116,4 @@ UResolver (или ObjectRepository) позволяющего манипулир ...@@ -116,4 +116,4 @@ UResolver (или ObjectRepository) позволяющего манипулир
- resolve(name,node) // обращение к IResolver удалённого узла.. - resolve(name,node) // обращение к IResolver удалённого узла..
- create(rootname) - create(rootname)
- Перепроектировать OIndex и Configure.. Инициализироват для Configure(объектом OIndex) - Перепроектировать OIndex и Configure.. Инициализировать для Configure(объектом OIndex)
...@@ -83,10 +83,10 @@ namespace uniset ...@@ -83,10 +83,10 @@ namespace uniset
По умолчанию в качестве имени берётся name, но при необходимости можно указать определиться специальное имя. По умолчанию в качестве имени берётся name, но при необходимости можно указать определиться специальное имя.
Для этого достаточно задать поле tsdb_name="...". Для этого достаточно задать поле tsdb_name="...".
\section sec_OpenTSDB_Queue Буффер на запись в БД \section sec_OpenTSDB_Queue Буфер на запись в БД
В данной реализации встроен специальный буффер, который накапливает данные и скидывает их В данной реализации встроен специальный буфер, который накапливает данные и скидывает их
пачкой в БД. Так же он является защитным механизом на случай если БД временно недоступна. пачкой в БД. Так же он является защитным механизом на случай если БД временно недоступна.
Параметры буффера задаются аргументами командной строки или в конфигурационном файле. Параметры буфера задаются аргументами командной строки или в конфигурационном файле.
Доступны следующие параметры: Доступны следующие параметры:
- \b bufSize - размер буфера, при заполнении которого происходит посылка данных в БД - \b bufSize - размер буфера, при заполнении которого происходит посылка данных в БД
- \b bufSyncTimeout - период сброса данных в БД - \b bufSyncTimeout - период сброса данных в БД
......
...@@ -88,7 +88,7 @@ namespace uniset ...@@ -88,7 +88,7 @@ namespace uniset
\section sec_LogDB_DB LogDB: Работа с БД \section sec_LogDB_DB LogDB: Работа с БД
Для оптимизации, запись в БД сделана не по каждому сообщению, а через промежуточнй буффер. Для оптимизации, запись в БД сделана не по каждому сообщению, а через промежуточнй буфер.
Т.е. только после того как в буфере скапливается \a qbufSize сообщений (строк) буфер скидывается в базу. Т.е. только после того как в буфере скапливается \a qbufSize сообщений (строк) буфер скидывается в базу.
Помимо этого, встроен механизм "ротации БД". Если задан параметр maxRecords (--prefix-db-max-records), Помимо этого, встроен механизм "ротации БД". Если задан параметр maxRecords (--prefix-db-max-records),
то в БД будет поддерживаться ограниченное количество записей. При этом введён "гистерезис", то в БД будет поддерживаться ограниченное количество записей. При этом введён "гистерезис",
......
...@@ -48,7 +48,7 @@ namespace uniset ...@@ -48,7 +48,7 @@ namespace uniset
* Некоторые детали: * Некоторые детали:
* Т.к. evprepare необходимо вызывать из потока в котором крутится event loop (иначе libev не работает), * Т.к. evprepare необходимо вызывать из потока в котором крутится event loop (иначе libev не работает),
* а функция run() в общем случае вызывается "откуда угодно" и может быть вызвана в том числе уже после * а функция run() в общем случае вызывается "откуда угодно" и может быть вызвана в том числе уже после
* запуска event loop, то задействован механизм асинхронного уведомления (см. evprep, onPrepapre) и ожидания * запуска event loop, то задействован механизм асинхронного уведомления (см. evprep, onPrepare) и ожидания
* на condition_variable, когда произойдёт инициализация (см. реализацию evrun()). * на condition_variable, когда произойдёт инициализация (см. реализацию evrun()).
*/ */
class CommonEventLoop class CommonEventLoop
...@@ -109,7 +109,7 @@ namespace uniset ...@@ -109,7 +109,7 @@ namespace uniset
std::mutex wlist_mutex; std::mutex wlist_mutex;
std::vector<EvWatcher*> wlist; std::vector<EvWatcher*> wlist;
// готовящийся Watcher.н может быть только один в единицу времени // готовящийся Watcher. Он может быть только один в единицу времени
// это гарантирует prep_mutex // это гарантирует prep_mutex
EvWatcher* wprep = { nullptr }; EvWatcher* wprep = { nullptr };
ev::async evprep; ev::async evprep;
......
...@@ -250,7 +250,7 @@ namespace uniset ...@@ -250,7 +250,7 @@ namespace uniset
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
} // end of uniset namespace } // end of uniset namespace
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
// "синтаксический сахар"..для логов // "синтаксический сахар" для логов
#define uinfo if( uniset::ulog()->debugging(Debug::INFO) ) uniset::ulog()->info() #define uinfo if( uniset::ulog()->debugging(Debug::INFO) ) uniset::ulog()->info()
#define uwarn if( uniset::ulog()->debugging(Debug::WARN) ) uniset::ulog()->warn() #define uwarn if( uniset::ulog()->debugging(Debug::WARN) ) uniset::ulog()->warn()
#define ucrit if( uniset::ulog()->debugging(Debug::CRIT) ) uniset::ulog()->crit() #define ucrit if( uniset::ulog()->debugging(Debug::CRIT) ) uniset::ulog()->crit()
......
...@@ -40,7 +40,7 @@ namespace uniset ...@@ -40,7 +40,7 @@ namespace uniset
т.к. позволяет обходится без удалённого заказа таймеров у TimеService-а. т.к. позволяет обходится без удалённого заказа таймеров у TimеService-а.
Но следует помнить, что при этом объект использующий такие таймеры становится более ресурсоёмким, Но следует помнить, что при этом объект использующий такие таймеры становится более ресурсоёмким,
т.к. во время работы поток обработки сообщений не "спит", как у обычного UniSetObject-а, а тратит т.к. во время работы поток обработки сообщений не "спит", как у обычного UniSetObject-а, а тратит
время на проверку таймеров (правда при условии, что в списке есть хотябы один заказ) время на проверку таймеров (правда при условии, что в списке есть хотя бы один заказ)
\par Основной принцип \par Основной принцип
Проверяет список таймеров и при срабатывании формирует стандартное уведомление uniset::TimerMessage, Проверяет список таймеров и при срабатывании формирует стандартное уведомление uniset::TimerMessage,
...@@ -64,7 +64,7 @@ namespace uniset ...@@ -64,7 +64,7 @@ namespace uniset
// При реализации с использованием waitMessage() каждый раз при вызове askTimer() необходимо // При реализации с использованием waitMessage() каждый раз при вызове askTimer() необходимо
// проверять возвращаемое значение на UniSetTimers::WaitUpTime и вызывать termWaiting(), // проверять возвращаемое значение на UniSetTimers::WaitUpTime и вызывать termWaiting(),
// чтобы избежать ситуации, когда процесс до заказа таймера 'спал'(в функции waitMessage()) и после // чтобы избежать ситуации, когда процесс до заказа таймера 'спал'(в функции waitMessage()) и после
// заказа продолжит спать(т.е. обработчик вызван не будет)... // заказа продолжит спать (т.е. обработчик вызван не будет)...
try try
{ {
...@@ -89,7 +89,7 @@ namespace uniset ...@@ -89,7 +89,7 @@ namespace uniset
\endcode \endcode
\warning Точность работы определяется переодичностью вызова обработчика. \warning Точность работы определяется периодичностью вызова обработчика.
\sa TimerService \sa TimerService
\todo Подумать.. может перейти на unordered_map \todo Подумать.. может перейти на unordered_map
...@@ -104,7 +104,7 @@ namespace uniset ...@@ -104,7 +104,7 @@ namespace uniset
/*! заказ таймера /*! заказ таймера
\param timerid - идентификатор таймера \param timerid - идентификатор таймера
\param timeMS - период. 0 - означает отказ от таймера \param timeMS - период. 0 - означает отказ от таймера
\param ticks - количество уведомлений. "-1"- постоянно \param ticks - количество уведомлений. "-1" - постоянно
\param p - приоритет присылаемого сообщения \param p - приоритет присылаемого сообщения
\return Возвращает время [мсек] оставшееся до срабатывания очередного таймера \return Возвращает время [мсек] оставшееся до срабатывания очередного таймера
*/ */
...@@ -161,7 +161,7 @@ namespace uniset ...@@ -161,7 +161,7 @@ namespace uniset
/*! /*!
* текущий такт * текущий такт
* \note Если задано количество -1 то сообщения будут посылатся постоянно * \note Если задано количество -1 то сообщения будут посылаться постоянно
*/ */
clock_t curTick = { -1 }; clock_t curTick = { -1 };
...@@ -197,7 +197,7 @@ namespace uniset ...@@ -197,7 +197,7 @@ namespace uniset
private: private:
TimersList tlst; TimersList tlst;
/*! замок для блокирования совместного доступа к cписку таймеров */ /*! замок для блокирования совместного доступа к списку таймеров */
mutable uniset::uniset_rwmutex lstMutex; mutable uniset::uniset_rwmutex lstMutex;
PassiveTimer tmLast; PassiveTimer tmLast;
......
...@@ -39,11 +39,11 @@ namespace uniset ...@@ -39,11 +39,11 @@ namespace uniset
// работа с логами по умолчанию // работа с логами по умолчанию
cmdSaveLogLevel, /*!< запомнить текущее состояние логов (для восстановления при завершении сессии или команде Restore) */ cmdSaveLogLevel, /*!< запомнить текущее состояние логов (для восстановления при завершении сессии или команде Restore) */
cmdRestoreLogLevel, /*!< восстановить последнее запоненное (cmdSaveLogLevel) состояние логов (т.е. не восстанавливать как было, при завершении сессии) */ cmdRestoreLogLevel, /*!< восстановить последнее запомненное (cmdSaveLogLevel) состояние логов (т.е. не восстанавливать как было, при завершении сессии) */
// команды требующий ответа.. // команды требующий ответа..
cmdList, /*!< вывести список контролируемых логов */ cmdList, /*!< вывести список контролируемых логов */
cmdFilterMode, /*!< включить режим работы "фильтр" - вывод только от интересующих логов, заданных в lognmae (regexp) */ cmdFilterMode, /*!< включить режим работы "фильтр" - вывод только от интересующих логов, заданных в logname (regexp) */
cmdViewDefaultLogLevel /*!< вывести уровни логов сохранённых как умолчательный (cmdSaveLogLevel) */ cmdViewDefaultLogLevel /*!< вывести уровни логов сохранённых как умолчательный (cmdSaveLogLevel) */
// cmdSetLogFile // cmdSetLogFile
}; };
......
...@@ -38,7 +38,7 @@ namespace uniset ...@@ -38,7 +38,7 @@ namespace uniset
* \warning Очередь не универсальная и предназначена исключительно для использования в UniSetObject. * \warning Очередь не универсальная и предназначена исключительно для использования в UniSetObject.
* Т.к. подразумевает схему "МНОГО ПИСАТЕЛЕЙ" и "ОДИН ЧИТАТЕЛЬ". * Т.к. подразумевает схему "МНОГО ПИСАТЕЛЕЙ" и "ОДИН ЧИТАТЕЛЬ".
* *
* При этом место под очередь(буффер) резервируется сразу. * При этом место под очередь (буфер) резервируется сразу.
* Счётчики сделаны (ulong) монотонно растущими. * Счётчики сделаны (ulong) монотонно растущими.
* Основные идеи: * Основные идеи:
* - счётчики постоянно увеличиваются * - счётчики постоянно увеличиваются
...@@ -48,7 +48,7 @@ namespace uniset ...@@ -48,7 +48,7 @@ namespace uniset
* *
* Максимальное ограничение на размер очереди сообщений задаётся функцией setMaxSizeOfMessageQueue(). * Максимальное ограничение на размер очереди сообщений задаётся функцией setMaxSizeOfMessageQueue().
* *
* Контроль переполения очереди осуществляется в push и в top; * Контроль переполнения очереди осуществляется в push и в top;
* Если очередь переполняется, то сообщения ТЕРЯЮТСЯ! * Если очередь переполняется, то сообщения ТЕРЯЮТСЯ!
* При помощи функции setLostStrategy() можно установить стратегию что терять * При помощи функции setLostStrategy() можно установить стратегию что терять
* lostNewData - в случае переполнения теряются новые данные (т.е. не будут помещаться в очередь) * lostNewData - в случае переполнения теряются новые данные (т.е. не будут помещаться в очередь)
...@@ -76,7 +76,7 @@ namespace uniset ...@@ -76,7 +76,7 @@ namespace uniset
bool empty() const noexcept; bool empty() const noexcept;
// ----- Настройки ----- // ----- Настройки -----
// неявно подразумевается, что всё настривается до первого использования // неявно подразумевается, что всё настраивается до первого использования
// ---------------------- // ----------------------
void setMaxSizeOfMessageQueue( size_t s ); void setMaxSizeOfMessageQueue( size_t s );
size_t getMaxSizeOfMessageQueue() const noexcept; size_t getMaxSizeOfMessageQueue() const noexcept;
......
...@@ -33,7 +33,7 @@ namespace uniset ...@@ -33,7 +33,7 @@ namespace uniset
* Простая "многопоточная" очередь сообщений с использованием std::mutex. * Простая "многопоточная" очередь сообщений с использованием std::mutex.
* Максимальное ограничение на размер очереди сообщений задаётся функцией setMaxSizeOfMessageQueue(). * Максимальное ограничение на размер очереди сообщений задаётся функцией setMaxSizeOfMessageQueue().
* *
* Контроль переполения очереди осуществляется в push * Контроль переполнения очереди осуществляется в push
* Если очередь переполняется, то сообщения ТЕРЯЮТСЯ! * Если очередь переполняется, то сообщения ТЕРЯЮТСЯ!
* При помощи функции setLostStrategy() можно установить стратегию что терять * При помощи функции setLostStrategy() можно установить стратегию что терять
* lostNewData - в случае переполнения теряются новые данные (т.е. не будут помещаться в очередь) * lostNewData - в случае переполнения теряются новые данные (т.е. не будут помещаться в очередь)
......
...@@ -66,7 +66,7 @@ namespace uniset ...@@ -66,7 +66,7 @@ namespace uniset
Message() noexcept; Message() noexcept;
// для оптимизации, делаем конструктор который не будет инициализировать свойства класса // для оптимизации, делаем конструктор, который не будет инициализировать свойства класса
// это необходимо для VoidMessage, который конструируется при помощи memcpy // это необходимо для VoidMessage, который конструируется при помощи memcpy
explicit Message( int dummy_init ) noexcept {} explicit Message( int dummy_init ) noexcept {}
...@@ -94,7 +94,7 @@ namespace uniset ...@@ -94,7 +94,7 @@ namespace uniset
VoidMessage( const VoidMessage& ) noexcept = default; VoidMessage( const VoidMessage& ) noexcept = default;
VoidMessage& operator=( const VoidMessage& ) noexcept = default; VoidMessage& operator=( const VoidMessage& ) noexcept = default;
// для оптимизации, делаем конструктор который не будет инициализировать свойства класса // для оптимизации, делаем конструктор, который не будет инициализировать свойства класса
// это необходимо для VoidMessage, который конструируется при помощи memcpy // это необходимо для VoidMessage, который конструируется при помощи memcpy
VoidMessage( int dummy ) noexcept : Message(dummy) {} VoidMessage( int dummy ) noexcept : Message(dummy) {}
...@@ -255,7 +255,7 @@ namespace uniset ...@@ -255,7 +255,7 @@ namespace uniset
ObjectId sensor_id = { uniset::DefaultObjectId }; /* ID датчика (события) */ ObjectId sensor_id = { uniset::DefaultObjectId }; /* ID датчика (события) */
double sensor_value = { 0.0 }; /* значение датчика (события) */ double sensor_value = { 0.0 }; /* значение датчика (события) */
struct timespec sensor_time = { 0, 0 }; /* время срабатывания датчика(события), который квитируем */ struct timespec sensor_time = { 0, 0 }; /* время срабатывания датчика (события), который квитируем */
struct timespec confirm_time = { 0, 0 }; /* * время прошедшее до момента квитирования */ struct timespec confirm_time = { 0, 0 }; /* * время прошедшее до момента квитирования */
bool broadcast = { false }; bool broadcast = { false };
......
...@@ -33,7 +33,7 @@ namespace uniset ...@@ -33,7 +33,7 @@ namespace uniset
/*! /*!
* DEPRECATED! * DEPRECATED!
* \todo Проверить функции этого класса на повторную входимость * \todo Проверить функции этого класса на повторную входимость
* \bug При обращении к objectsMap[0].textName срабатывает исключение(видимо какое-то из std). * \bug При обращении к objectsMap[0].textName срабатывает исключение (видимо какое-то из std).
* Требуется дополнительное изучение. * Требуется дополнительное изучение.
* *
* \deprecated Этот класс нужен для совместимости с очень древними проектами. * \deprecated Этот класс нужен для совместимости с очень древними проектами.
......
...@@ -31,7 +31,7 @@ namespace uniset ...@@ -31,7 +31,7 @@ namespace uniset
{ {
/*! /*!
* Пасивный объект не имеющий самостоятельного потока обработки сообщений, но имеющий * Пассивный объект, не имеющий самостоятельного потока обработки сообщений, но имеющий
* уникальный идентификатор. Предназначен для работы под управлением ProxyManager. * уникальный идентификатор. Предназначен для работы под управлением ProxyManager.
* *
* \todo Перейти на shared_ptr, weak_ptr для взаимодействия с ProxyManager * \todo Перейти на shared_ptr, weak_ptr для взаимодействия с ProxyManager
......
...@@ -37,7 +37,7 @@ namespace uniset ...@@ -37,7 +37,7 @@ namespace uniset
typedef Poco::Timespan::TimeDiff timeout_t; typedef Poco::Timespan::TimeDiff timeout_t;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
/*! \class UniSetTimer /*! \class UniSetTimer
* \brief Базовый интерфейс пасивных таймеров * \brief Базовый интерфейс пассивных таймеров
* \author Pavel Vainerman * \author Pavel Vainerman
*/ */
class UniSetTimer class UniSetTimer
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
namespace uniset namespace uniset
{ {
/*! Класс реализующий формирование импульсов заданной длительности(t1) и заданных пауз между ними(t0). /*! Класс, реализующий формирование импульсов заданной длительности(t1) и заданных пауз между ними(t0).
Класс пассивный, для работы требует постоянного вызова функции step(). Класс пассивный, для работы требует постоянного вызова функции step().
Для получения текущего состояния "выхода" использовать out(). Для получения текущего состояния "выхода" использовать out().
Формирование импульсов включается функцией run() либо функцией set(true). Формирование импульсов включается функцией run() либо функцией set(true).
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
namespace uniset namespace uniset
{ {
// Шаблон для "универсальной инициализации объекта(процесса)". // Шаблон для "универсальной инициализации объекта (процесса)".
// Использование: // Использование:
// auto m = make_object<MyClass>("ObjectId","secname",...); // auto m = make_object<MyClass>("ObjectId","secname",...);
// -- // --
......
...@@ -43,7 +43,7 @@ namespace uniset ...@@ -43,7 +43,7 @@ namespace uniset
/*! /*!
* \class UInterface * \class UInterface
* Универсальный интерфейс для взаимодействия между объектами (процессами). * Универсальный интерфейс для взаимодействия между объектами (процессами).
* По сути является "фасадом" к реализации механизма взамиодействия * По сути является "фасадом" к реализации механизма взаимодействия
* в libuniset (основанном на CORBA) Хотя до конца скрыть CORBA-у пока не удалось. * в libuniset (основанном на CORBA) Хотя до конца скрыть CORBA-у пока не удалось.
* Для увеличения производительности в функции встроен cache обращений... * Для увеличения производительности в функции встроен cache обращений...
* *
...@@ -71,7 +71,7 @@ namespace uniset ...@@ -71,7 +71,7 @@ namespace uniset
void setValue ( const IOController_i::SensorInfo& si, long value, const uniset::ObjectId supplier ) const; void setValue ( const IOController_i::SensorInfo& si, long value, const uniset::ObjectId supplier ) const;
// fast - это удалённый вызов "без подтверждения", он быстрее, но менее надёжен // fast - это удалённый вызов "без подтверждения", он быстрее, но менее надёжен
// т.к. вызывающий никогда не узнает об ошибке, если она была (датчик такой не найдён и т.п.) // т.к. вызывающий никогда не узнает об ошибке, если она была (датчик такой не найден и т.п.)
void fastSetValue( const IOController_i::SensorInfo& si, long value, uniset::ObjectId supplier ) const; void fastSetValue( const IOController_i::SensorInfo& si, long value, uniset::ObjectId supplier ) const;
//! Получение состояния для списка указанных датчиков //! Получение состояния для списка указанных датчиков
......
...@@ -42,7 +42,7 @@ namespace uniset ...@@ -42,7 +42,7 @@ namespace uniset
* Создает POA менеджер и регистрирует в нем объекты. * Создает POA менеджер и регистрирует в нем объекты.
* Для обработки CORBA-запросов создается поток или передаются ресурсы * Для обработки CORBA-запросов создается поток или передаются ресурсы
* главного потока см. void activate(bool thread) * главного потока см. void activate(bool thread)
* \warning Авктиватор может быть создан только один. Для его создания используйте код: * \warning Активатор может быть создан только один. Для его создания используйте код:
\code \code
... ...
auto act = UniSetActivator::Instance() auto act = UniSetActivator::Instance()
...@@ -51,7 +51,7 @@ namespace uniset ...@@ -51,7 +51,7 @@ namespace uniset
* Активатор в свою очередь сам является менеджером(и объектом) и обладает всеми его свойствами * Активатор в свою очередь сам является менеджером(и объектом) и обладает всеми его свойствами
* *
* \section act_HttpAPI REST API * \section act_HttpAPI REST API
* UniSetActivator выступает в роли http-сервера и релизует первчиную обработку запросов * UniSetActivator выступает в роли http-сервера и реализует первичную обработку запросов
* и перенаправление их указанным объектам. Помимо этого UniSetActivator реализует обработку команд /conf/.. * и перенаправление их указанным объектам. Помимо этого UniSetActivator реализует обработку команд /conf/..
* Для запуска http-сервера необходимо в аргументах командной строки указать --activator-run-httpserver * Для запуска http-сервера необходимо в аргументах командной строки указать --activator-run-httpserver
* Помимо этого можно задать параметры --activator-httpserver-host и --activator-httpserver-port. * Помимо этого можно задать параметры --activator-httpserver-host и --activator-httpserver-port.
......
...@@ -38,7 +38,7 @@ namespace uniset ...@@ -38,7 +38,7 @@ namespace uniset
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
/*! \class UniSetManager /*! \class UniSetManager
* \par * \par
* Содержит в себе функции управления объектами. Их регистрации и т.п. * Содержит в себе функции управления объектами. их регистрации и т.п.
* Создается менеджер объектов, после чего вызывается initObjects() * Создается менеджер объектов, после чего вызывается initObjects()
* для инициализации объектов которыми управляет * для инициализации объектов которыми управляет
* данный менеджер... * данный менеджер...
...@@ -49,8 +49,8 @@ namespace uniset ...@@ -49,8 +49,8 @@ namespace uniset
* \par * \par
* У базового менеджера имеются базовые три функции см. UniSetManager_i. * У базового менеджера имеются базовые три функции см. UniSetManager_i.
* \note Только при вызове функции UniSetManager::broadcast() происходит * \note Только при вызове функции UniSetManager::broadcast() происходит
* формирование сообщения всем подчиненным объектам... Если команда проиходит * формирование сообщения всем подчиненным объектам... Если команда происходит
* при помощи push, то пересылки всем починённым объектам не происходит... * при помощи push, то пересылки всем подчинённым объектам не происходит...
* *
* *
*/ */
...@@ -76,7 +76,7 @@ namespace uniset ...@@ -76,7 +76,7 @@ namespace uniset
virtual bool add( const std::shared_ptr<UniSetObject>& obj ); virtual bool add( const std::shared_ptr<UniSetObject>& obj );
virtual bool remove( const std::shared_ptr<UniSetObject>& obj ); virtual bool remove( const std::shared_ptr<UniSetObject>& obj );
// -------------------------- // --------------------------
size_t objectsCount() const; // количество подчиненных объектов size_t objectsCount() const; // количество подчинённых объектов
// --------------- // ---------------
PortableServer::POA_ptr getPOA(); PortableServer::POA_ptr getPOA();
...@@ -102,15 +102,15 @@ namespace uniset ...@@ -102,15 +102,15 @@ namespace uniset
void initPOA( const std::weak_ptr<UniSetManager>& rmngr ); void initPOA( const std::weak_ptr<UniSetManager>& rmngr );
//! \note Переопределяя не забывайте вызвать базовую //! \note Переопределяя, не забывайте вызвать базовую
virtual bool activateObject() override; virtual bool activateObject() override;
//! \note Переопределяя не забывайте вызвать базовую //! \note Переопределяя, не забывайте вызвать базовую
virtual bool deactivateObject() override; virtual bool deactivateObject() override;
const std::shared_ptr<UniSetObject> findObject( const std::string& name ) const; const std::shared_ptr<UniSetObject> findObject( const std::string& name ) const;
const std::shared_ptr<UniSetManager> findManager( const std::string& name ) const; const std::shared_ptr<UniSetManager> findManager( const std::string& name ) const;
// рекурсивный поиск по всем объекам // рекурсивный поиск по всем объектам
const std::shared_ptr<UniSetObject> deepFindObject( const std::string& name ) const; const std::shared_ptr<UniSetObject> deepFindObject( const std::string& name ) const;
// рекурсивное наполнение списка объектов // рекурсивное наполнение списка объектов
...@@ -124,7 +124,7 @@ namespace uniset ...@@ -124,7 +124,7 @@ namespace uniset
PortableServer::POA_var poa; PortableServer::POA_var poa;
PortableServer::POAManager_var pman; PortableServer::POAManager_var pman;
// Функции для работы со списками подчиненных объектов // Функции для работы со списками подчинённых объектов
// --------------- // ---------------
typedef std::function<void(const std::shared_ptr<UniSetObject>&)> OFunction; typedef std::function<void(const std::shared_ptr<UniSetObject>&)> OFunction;
void apply_for_objects( OFunction f ); void apply_for_objects( OFunction f );
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
*/ */
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
/*! \file /*! \file
* \brief Реализация базового(фундаментального) класса для объектов системы * \brief Реализация базового (фундаментального) класса для объектов системы
* (процессов управления, элементов графического интерфейса и т.п.) * (процессов управления, элементов графического интерфейса и т.п.)
* \author Pavel Vainerman * \author Pavel Vainerman
*/ */
...@@ -58,7 +58,7 @@ namespace uniset ...@@ -58,7 +58,7 @@ namespace uniset
* Класс реализует работу uniset-объекта: работа с очередью сообщений, регистрация объекта, инициализация и т.п. * Класс реализует работу uniset-объекта: работа с очередью сообщений, регистрация объекта, инициализация и т.п.
* Обработка сообщений ведётся в специально создаваемом потоке. * Обработка сообщений ведётся в специально создаваемом потоке.
* Для ожидания сообщений используется функция waitMessage(msec), основанная на таймере. * Для ожидания сообщений используется функция waitMessage(msec), основанная на таймере.
* Ожидание прерывается либо по истечении указанного времени, либо по приходу сообщения, при помощи функциии * Ожидание прерывается либо по истечении указанного времени, либо по приходу сообщения, при помощи функции
* termWaiting() вызываемой из push(). * termWaiting() вызываемой из push().
* \note Если не будет задан ObjectId(-1), то поток обработки запущен не будет. * \note Если не будет задан ObjectId(-1), то поток обработки запущен не будет.
* Также создание потока можно принудительно отключить при помощи функции void thread(false). Ее необходимо вызвать до активации объекта * Также создание потока можно принудительно отключить при помощи функции void thread(false). Ее необходимо вызвать до активации объекта
...@@ -146,7 +146,7 @@ namespace uniset ...@@ -146,7 +146,7 @@ namespace uniset
/*! прервать ожидание сообщений */ /*! прервать ожидание сообщений */
void termWaiting(); void termWaiting();
/*! текущее количесво сообщений в очереди */ /*! текущее количество сообщений в очереди */
size_t countMessages(); size_t countMessages();
/*! количество потерянных сообщений */ /*! количество потерянных сообщений */
...@@ -155,7 +155,7 @@ namespace uniset ...@@ -155,7 +155,7 @@ namespace uniset
//! Активизация объекта (переопределяется для необходимых действий после активизации) //! Активизация объекта (переопределяется для необходимых действий после активизации)
virtual bool activateObject(); virtual bool activateObject();
//! Деактивиция объекта (переопределяется для необходимых действий при завершении работы) //! Деактивация объекта (переопределяется для необходимых действий при завершении работы)
virtual bool deactivateObject(); virtual bool deactivateObject();
// прерывание работы всей программы (с вызовом shutdown) // прерывание работы всей программы (с вызовом shutdown)
......
...@@ -58,7 +58,7 @@ namespace uniset ...@@ -58,7 +58,7 @@ namespace uniset
/*! Проверка на наличие недопустимых символов /*! Проверка на наличие недопустимых символов
* Запрещенные символы см. uniset::BadSymbols[] * Запрещенные символы см. uniset::BadSymbols[]
* \return Если не найдено запрещенных символов то будет возвращен 0, иначе найденный символ * \return Если не найдено запрещённых символов то будет возвращен 0, иначе найденный символ
*/ */
char checkBadSymbols(const std::string& str); char checkBadSymbols(const std::string& str);
...@@ -93,8 +93,8 @@ namespace uniset ...@@ -93,8 +93,8 @@ namespace uniset
typedef std::list<std::string> ListObjectName; /*!< Список объектов типа ObjectName */ typedef std::list<std::string> ListObjectName; /*!< Список объектов типа ObjectName */
typedef CORBA::Object_ptr ObjectPtr; /*!< Ссылка на объект регистрируемый в ObjectRepository */ typedef CORBA::Object_ptr ObjectPtr; /*!< Ссылка на объект, регистрируемый в ObjectRepository */
typedef CORBA::Object_var ObjectVar; /*!< Ссылка на объект регистрируемый в ObjectRepository */ typedef CORBA::Object_var ObjectVar; /*!< Ссылка на объект, регистрируемый в ObjectRepository */
UniversalIO::IOType getIOType( const std::string& s ) noexcept; UniversalIO::IOType getIOType( const std::string& s ) noexcept;
std::string iotype2str( const UniversalIO::IOType& t ) noexcept; std::string iotype2str( const UniversalIO::IOType& t ) noexcept;
...@@ -137,7 +137,7 @@ namespace uniset ...@@ -137,7 +137,7 @@ namespace uniset
std::list<ObjectId> getList() const noexcept; std::list<ObjectId> getList() const noexcept;
// за освобождение выделеной памяти // за освобождение выделенной памяти
// отвечает вызывающий! // отвечает вызывающий!
IDSeq* getIDSeq() const; IDSeq* getIDSeq() const;
......
...@@ -176,7 +176,7 @@ namespace uniset ...@@ -176,7 +176,7 @@ namespace uniset
\param begin - get from position \param begin - get from position
\param buf - buffer for data \param buf - buffer for data
\param len - size of buf \param len - size of buf
\return real data lenght ( must be <= len ) \return real data length ( must be <= len )
*/ */
virtual size_t getNextData( unsigned char* buf, size_t len ) = 0; virtual size_t getNextData( unsigned char* buf, size_t len ) = 0;
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
/*! \file /*! \file
* \author Pavel Vainerman * \author Pavel Vainerman
* \brief Всякие доп. функции расширяющие std:: * \brief Всякие доп. функции, расширяющие std::
*/ */
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
#ifndef UniSetCPP_H_ #ifndef UniSetCPP_H_
......
...@@ -44,7 +44,7 @@ static const string UniSetDefaultPort = "2809"; ...@@ -44,7 +44,7 @@ static const string UniSetDefaultPort = "2809";
static ostream& print_help( ostream& os, int width, const string& cmd, static ostream& print_help( ostream& os, int width, const string& cmd,
const string& help, const string& tab = "" ) const string& help, const string& tab = "" )
{ {
// чтобы не менчять параметры основного потока // чтобы не менять параметры основного потока
// создаём свой stream... // создаём свой stream...
ostringstream info; ostringstream info;
info.setf(ios::left, ios::adjustfield); info.setf(ios::left, ios::adjustfield);
...@@ -64,7 +64,7 @@ ostream& uniset::Configuration::help(ostream& os) ...@@ -64,7 +64,7 @@ ostream& uniset::Configuration::help(ostream& os)
print_help(os, 25, "--[debname]-del-levels", "удалить уровень вывода логов\n"); print_help(os, 25, "--[debname]-del-levels", "удалить уровень вывода логов\n");
print_help(os, 25, "--[debname]-show-microseconds", "Выводить время с микросекундами\n"); print_help(os, 25, "--[debname]-show-microseconds", "Выводить время с микросекундами\n");
print_help(os, 25, "--[debname]-show-milliseconds", "Выводить время с миллисекундами\n"); print_help(os, 25, "--[debname]-show-milliseconds", "Выводить время с миллисекундами\n");
print_help(os, 25, "--uniport num", "использовать заданный порт (переопеределяет 'defaultport' заданный в конф. файле в разделе <nodes>)\n"); print_help(os, 25, "--uniport num", "использовать заданный порт (переопределяет 'defaultport', заданный в конф. файле в разделе <nodes>)\n");
print_help(os, 25, "--localIOR {1,0}", "использовать локальные файлы для получения IOR (т.е. не использовать omniNames). Переопределяет параметр в конфигурационном файле.\n"); print_help(os, 25, "--localIOR {1,0}", "использовать локальные файлы для получения IOR (т.е. не использовать omniNames). Переопределяет параметр в конфигурационном файле.\n");
print_help(os, 25, "--transientIOR {1,0}", "использовать генерируемые IOR(не постоянные). Переопределяет параметр в конфигурационном файле. Default=1\n"); print_help(os, 25, "--transientIOR {1,0}", "использовать генерируемые IOR(не постоянные). Переопределяет параметр в конфигурационном файле. Default=1\n");
...@@ -332,7 +332,7 @@ namespace uniset ...@@ -332,7 +332,7 @@ namespace uniset
else else
{ {
// для endPoint надо отдельно проверить доступность адреса // для endPoint надо отдельно проверить доступность адреса
// иначе иницилизация omni не произойдёт, а нужно чтобы // иначе инициализация omni не произойдёт, а нужно чтобы
// всё запускалось даже если сеть не вся "поднялась" // всё запускалось даже если сеть не вся "поднялась"
if( p == "endPoint" ) if( p == "endPoint" )
{ {
...@@ -465,7 +465,7 @@ namespace uniset ...@@ -465,7 +465,7 @@ namespace uniset
for( int k = 0; k < onum; k++ ) for( int k = 0; k < onum; k++ )
{ {
// на самом деле последний элемент = {0,0} // на самом деле последний элемент = {0,0}
// но delete от 0 разрёшён и не приводит "к краху" // но delete от 0 разрешён и не приводит "к краху"
// так что отдельно не обрабатываем этот случай. // так что отдельно не обрабатываем этот случай.
delete[] omni_options[k][0]; // см. uni_strdup() delete[] omni_options[k][0]; // см. uni_strdup()
...@@ -1105,7 +1105,7 @@ namespace uniset ...@@ -1105,7 +1105,7 @@ namespace uniset
secServices = makeSecName(secRoot, getRepSectionName("services", xmlServicesSec)); secServices = makeSecName(secRoot, getRepSectionName("services", xmlServicesSec));
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
// второй параметр намеренно передаётся и переопредеяется // второй параметр намеренно передаётся и переопределяется
// это просто такой способ вернуть и строку и указатель на узел (одним махом) // это просто такой способ вернуть и строку и указатель на узел (одним махом)
string Configuration::getRepSectionName( const string& sec, xmlNode* secnode ) string Configuration::getRepSectionName( const string& sec, xmlNode* secnode )
{ {
......
...@@ -69,7 +69,7 @@ namespace uniset ...@@ -69,7 +69,7 @@ namespace uniset
void UInterface::init() void UInterface::init()
{ {
// пытаемся получить ссылку на NameSerivice // пытаемся получить ссылку на NameService
// в любом случае. даже если включён режим // в любом случае. даже если включён режим
// localIOR // localIOR
localctx = CosNaming::NamingContext::_nil(); localctx = CosNaming::NamingContext::_nil();
...@@ -112,7 +112,7 @@ namespace uniset ...@@ -112,7 +112,7 @@ namespace uniset
* \param id - идентификатор датчика * \param id - идентификатор датчика
* \return текущее значение датчика * \return текущее значение датчика
* \exception IOBadParam - генерируется если указано неправильное имя датчика или секции * \exception IOBadParam - генерируется если указано неправильное имя датчика или секции
* \exception IOTimeOut - генерируется если в течение времени timeout небыл получен ответ * \exception IOTimeOut - генерируется если в течение времени timeout не был получен ответ
*/ */
long UInterface::getValue( const uniset::ObjectId id, const uniset::ObjectId node ) const long UInterface::getValue( const uniset::ObjectId id, const uniset::ObjectId node ) const
{ {
...@@ -279,9 +279,9 @@ namespace uniset ...@@ -279,9 +279,9 @@ namespace uniset
// ------------------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------------------
/*! /*!
* \param id - идентификатор датчика * \param id - идентификатор датчика
* \param value - значение которое необходимо установить * \param value - значение, которое необходимо установить
* \return текущее значение датчика * \return текущее значение датчика
* \exception IOBadParam - генерируется если указано неправильное имя вывода или секции * \exception IOBadParam - генерируется, если указано неправильное имя вывода или секции
*/ */
void UInterface::setValue( const uniset::ObjectId id, long value, const uniset::ObjectId node, const uniset::ObjectId sup_id ) const void UInterface::setValue( const uniset::ObjectId id, long value, const uniset::ObjectId node, const uniset::ObjectId sup_id ) const
{ {
...@@ -383,7 +383,7 @@ namespace uniset ...@@ -383,7 +383,7 @@ namespace uniset
} }
// ------------------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------------------
// функция не вырабатывает исключий! // функция не вырабатывает исключений!
void UInterface::fastSetValue( const IOController_i::SensorInfo& si, long value, uniset::ObjectId sup_id ) const void UInterface::fastSetValue( const IOController_i::SensorInfo& si, long value, uniset::ObjectId sup_id ) const
{ {
if ( si.id == uniset::DefaultObjectId ) if ( si.id == uniset::DefaultObjectId )
...@@ -758,7 +758,7 @@ namespace uniset ...@@ -758,7 +758,7 @@ namespace uniset
// ------------------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------------------
void UInterface::registered( const uniset::ObjectId id, const uniset::ObjectPtr oRef, bool force ) const void UInterface::registered( const uniset::ObjectId id, const uniset::ObjectPtr oRef, bool force ) const
{ {
// если влючён режим использования локальных файлов // если включён режим использования локальных файлов
// то пишем IOR в файл // то пишем IOR в файл
if( uconf->isLocalIOR() ) if( uconf->isLocalIOR() )
{ {
...@@ -860,7 +860,7 @@ namespace uniset ...@@ -860,7 +860,7 @@ namespace uniset
catch( const uniset::ORepFailed& ex ) catch( const uniset::ORepFailed& ex )
{ {
// нет связи с этим узлом // нет связи с этим узлом
// пробуем связатся по другой сети // пробуем связаться по другой сети
// ПО ПРАВИЛАМ узел в другой должен иметь имя NodeName1...NodeNameX // ПО ПРАВИЛАМ узел в другой должен иметь имя NodeName1...NodeNameX
ostringstream s; ostringstream s;
s << bname << curNet; s << bname << curNet;
......
...@@ -52,7 +52,7 @@ static std::condition_variable g_doneevent; ...@@ -52,7 +52,7 @@ static std::condition_variable g_doneevent;
static std::shared_ptr<std::thread> g_finish_guard_thread; static std::shared_ptr<std::thread> g_finish_guard_thread;
static std::atomic_bool g_done = ATOMIC_VAR_INIT(0); static std::atomic_bool g_done = ATOMIC_VAR_INIT(0);
static const int TERMINATE_TIMEOUT_SEC = 15; // время отведенное на завершение процесса [сек] static const int TERMINATE_TIMEOUT_SEC = 15; // время, отведённое на завершение процесса [сек]
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
struct ORBThreadDeleter struct ORBThreadDeleter
{ {
...@@ -190,7 +190,7 @@ namespace uniset ...@@ -190,7 +190,7 @@ namespace uniset
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
/*! /*!
* Функция останавливает работу orb и завершает поток. А так же удаляет ссылку из репозитория. * Функция останавливает работу orb и завершает поток, а также удаляет ссылку из репозитория.
* \note Объект становится недоступен другим процессам * \note Объект становится недоступен другим процессам
*/ */
void UniSetActivator::shutdown() void UniSetActivator::shutdown()
......
...@@ -435,7 +435,7 @@ void UniSetManager::objects(OManagerCommand cmd) ...@@ -435,7 +435,7 @@ void UniSetManager::objects(OManagerCommand cmd)
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
/*! /*!
* Регистрирация объекта и всех его подобъектов в репозитории. * Регистрация объекта и всех его подобъектов в репозитории.
* \note Только после этого он (и они) становятся доступны другим процессам * \note Только после этого он (и они) становятся доступны другим процессам
*/ */
bool UniSetManager::activateObject() bool UniSetManager::activateObject()
...@@ -598,7 +598,7 @@ int UniSetManager::getObjectsInfo( const std::shared_ptr<UniSetManager>& mngr, S ...@@ -598,7 +598,7 @@ int UniSetManager::getObjectsInfo( const std::shared_ptr<UniSetManager>& mngr, S
{ {
auto ind = begin; auto ind = begin;
// получаем у самого менджера // получаем у самого менеджера
SimpleInfo_var msi = mngr->getInfo(userparam); SimpleInfo_var msi = mngr->getInfo(userparam);
(*seq)[ind] = msi; (*seq)[ind] = msi;
......
...@@ -96,7 +96,7 @@ namespace uniset ...@@ -96,7 +96,7 @@ namespace uniset
{ {
ui = make_shared<UInterface>(uniset::DefaultObjectId); ui = make_shared<UInterface>(uniset::DefaultObjectId);
/*! \warning UniverslalInterface не инициализируется идентификатором объекта */ /*! \warning UniversalInterface не инициализируется идентификатором объекта */
tmr = CREATE_TIMER; tmr = CREATE_TIMER;
myname = section + "/" + name; myname = section + "/" + name;
myid = ui->getIdByName(myname); myid = ui->getIdByName(myname);
...@@ -140,8 +140,8 @@ namespace uniset ...@@ -140,8 +140,8 @@ namespace uniset
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
/*! /*!
* \param om - указатель на менеджер управляющий объектом * \param om - указатель на менеджер, управляющий объектом
* \return Возращает \a true если инициализация прошла успешно, и \a false если нет * \return Возвращает \a true если инициализация прошла успешно, и \a false если нет
*/ */
bool UniSetObject::init( const std::weak_ptr<UniSetManager>& om ) bool UniSetObject::init( const std::weak_ptr<UniSetManager>& om )
{ {
...@@ -185,7 +185,7 @@ namespace uniset ...@@ -185,7 +185,7 @@ namespace uniset
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
/*! /*!
* \param vm - указатель на структуру, которая заполняется если есть сообщение * \param vm - указатель на структуру, которая заполняется, если есть сообщение
* \return Возвращает указатель VoidMessagePtr если сообщение есть, и shared_ptr(nullptr) если нет * \return Возвращает указатель VoidMessagePtr если сообщение есть, и shared_ptr(nullptr) если нет
*/ */
VoidMessagePtr UniSetObject::receiveMessage() VoidMessagePtr UniSetObject::receiveMessage()
...@@ -255,11 +255,11 @@ namespace uniset ...@@ -255,11 +255,11 @@ namespace uniset
/*! /*!
\warning По умолчанию объекты должны быть уникальны! Поэтому если идёт попытка повторной регистрации. \warning По умолчанию объекты должны быть уникальны! Поэтому если идёт попытка повторной регистрации.
Мы чистим существующую ссылку и заменяем её на новую. Мы чистим существующую ссылку и заменяем её на новую.
Это сделано для более надежной работы, иначе может получится, что если объект перед завершением Это сделано для более надёжной работы, иначе может получится, что если объект перед завершением
не очистил за собой ссылку(не разрегистрировался), то больше он никогда не сможет вновь зарегистрироваться. не очистил за собой ссылку (не разрегистрировался), то больше он никогда не сможет вновь зарегистрироваться.
Т.к. \b надёжной функции проверки "жив" ли объект пока нет... Т.к. \b надёжной функции проверки "жив" ли объект пока нет...
(так бы можно было проверить и если "не жив", то смело заменять ссылку на новую). Но существует обратная сторона: (так бы можно было проверить и если "не жив", то смело заменять ссылку на новую). Но существует обратная сторона:
если заменяемый объект "жив" и завершит свою работу, то он может почистить за собой ссылку и это тогда наш(новый) если заменяемый объект "жив" и завершит свою работу, то он может почистить за собой ссылку и это тогда наш (новый)
объект станет недоступен другим, а знать об этом не будет!!! объект станет недоступен другим, а знать об этом не будет!!!
*/ */
uwarn << myname << "(registration): replace object (ObjectNameAlready)" << endl; uwarn << myname << "(registration): replace object (ObjectNameAlready)" << endl;
......
...@@ -179,7 +179,7 @@ uniset::ObjectId uniset::IDList::getFirst() const noexcept ...@@ -179,7 +179,7 @@ uniset::ObjectId uniset::IDList::getFirst() const noexcept
return (*lst.begin()); return (*lst.begin());
} }
// за освобождение выделеной памяти // за освобождение выделенной памяти
// отвечает вызывающий! // отвечает вызывающий!
IDSeq* uniset::IDList::getIDSeq() const IDSeq* uniset::IDList::getIDSeq() const
{ {
...@@ -514,7 +514,7 @@ int uniset::uni_atoi( const char* str ) noexcept ...@@ -514,7 +514,7 @@ int uniset::uni_atoi( const char* str ) noexcept
} }
} }
n = std::atoll(str); // универсальнее получать unsigned..чтобы не потерять "большие числа".. n = std::atoll(str); // универсальнее получать unsigned, чтобы не потерять "большие числа"..
return n; // а возвращаем int.. return n; // а возвращаем int..
} }
//-------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------
......
...@@ -106,7 +106,7 @@ namespace uniset ...@@ -106,7 +106,7 @@ namespace uniset
// Копируем сперва себе список сессий.. // Копируем сперва себе список сессий..
// т.к при вызове terminate() // т.к при вызове terminate()
// у Session будет вызван сигнал "final" // у Session будет вызван сигнал "final"
// который приведёт к вызову sessionFinished()..в котором список будет меняться.. // который приведёт к вызову sessionFinished(), в котором список будет меняться..
for( const auto& s : lst ) for( const auto& s : lst )
{ {
try try
......
...@@ -76,7 +76,7 @@ namespace uniset ...@@ -76,7 +76,7 @@ namespace uniset
if( iaddr.host().toString().empty() ) if( iaddr.host().toString().empty() )
{ {
ostringstream err; ostringstream err;
err << "(LogSession): unknonwn ip(0.0.0.0) client disconnected?!"; err << "(LogSession): unknown ip(0.0.0.0) client disconnected?!";
if( mylog.is_crit() ) if( mylog.is_crit() )
mylog.crit() << err.str() << endl; mylog.crit() << err.str() << endl;
...@@ -496,7 +496,7 @@ namespace uniset ...@@ -496,7 +496,7 @@ namespace uniset
if( msg.cmd == LogServerTypes::cmdFilterMode ) if( msg.cmd == LogServerTypes::cmdFilterMode )
{ {
// отлючаем старый обработчик // отключаем старый обработчик
if( conn ) if( conn )
conn.disconnect(); conn.disconnect();
} }
......
...@@ -80,7 +80,7 @@ bool ObjectRepository::init() const ...@@ -80,7 +80,7 @@ bool ObjectRepository::init() const
* Пример: registration("sens1", oRef, "Root/SensorSection"); * Пример: registration("sens1", oRef, "Root/SensorSection");
* \param name - имя регистрируемого объекта * \param name - имя регистрируемого объекта
* \param oRef - ссылка на объект * \param oRef - ссылка на объект
* \param section - имя секции в которую заносится регистрационная запись * \param section - имя секции, в которую заносится регистрационная запись
* \exception ORepFailed - генерируется если произошла ошибка при регистрации * \exception ORepFailed - генерируется если произошла ошибка при регистрации
* \sa registration(const std::string& fullName, const CORBA::Object_ptr oRef) * \sa registration(const std::string& fullName, const CORBA::Object_ptr oRef)
*/ */
...@@ -133,7 +133,7 @@ void ObjectRepository::registration(const string& name, const ObjectPtr oRef, co ...@@ -133,7 +133,7 @@ void ObjectRepository::registration(const string& name, const ObjectPtr oRef, co
if( !force ) if( !force )
throw ObjectNameAlready(); throw ObjectNameAlready();
// разрегистриуем, перед повтроной попыткой // разрегистрируем перед повторной попыткой
if( !CORBA::is_nil(ctx) ) if( !CORBA::is_nil(ctx) )
ctx->unbind(oName); ctx->unbind(oName);
...@@ -141,7 +141,7 @@ void ObjectRepository::registration(const string& name, const ObjectPtr oRef, co ...@@ -141,7 +141,7 @@ void ObjectRepository::registration(const string& name, const ObjectPtr oRef, co
} }
catch( const ORepFailed& ex ) catch( const ORepFailed& ex )
{ {
string er("ObjectRepository(registrartion): (getContext) не смог зарегистрировать " + name); string er("ObjectRepository(registration): (getContext) не смог зарегистрировать " + name);
throw ORepFailed(er); throw ORepFailed(er);
} }
catch( const CosNaming::NamingContext::NotFound& ) catch( const CosNaming::NamingContext::NotFound& )
...@@ -154,15 +154,15 @@ void ObjectRepository::registration(const string& name, const ObjectPtr oRef, co ...@@ -154,15 +154,15 @@ void ObjectRepository::registration(const string& name, const ObjectPtr oRef, co
} }
catch( const CosNaming::NamingContext::CannotProceed& cp ) catch( const CosNaming::NamingContext::CannotProceed& cp )
{ {
err << "ObjectRepository(registrartion): catch CannotProced " << name << " bad part="; err << "ObjectRepository(registration): catch CannotProced " << name << " bad part=";
err << omniURI::nameToString(cp.rest_of_name); err << omniURI::nameToString(cp.rest_of_name);
} }
catch( const CORBA::SystemException& ex ) catch( const CORBA::SystemException& ex )
{ {
uwarn << "ObjectRepository(registrartion): поймали CORBA::SystemException: " uwarn << "ObjectRepository(registration): поймали CORBA::SystemException: "
<< ex.NP_minorString() << endl; << ex.NP_minorString() << endl;
err << "ObjectRepository(registrartion): поймали CORBA::SystemException: " << ex.NP_minorString(); err << "ObjectRepository(registration): поймали CORBA::SystemException: " << ex.NP_minorString();
} }
} }
...@@ -174,7 +174,7 @@ void ObjectRepository::registration(const string& name, const ObjectPtr oRef, co ...@@ -174,7 +174,7 @@ void ObjectRepository::registration(const string& name, const ObjectPtr oRef, co
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
/*! /*!
* Функция регистрирует объект с именем "fullName" в репозитории объектов и связывает это имя со сылкой "oRef". * Функция регистрирует объект с именем "fullName" в репозитории объектов и связывает это имя со ссылкой "oRef".
* \note При этом надо иметь ввиду, что задается полное имя объекта. * \note При этом надо иметь ввиду, что задается полное имя объекта.
* Пример: registration("Root/SensorSection/sens1", oRef); * Пример: registration("Root/SensorSection/sens1", oRef);
* \param fullName - полное имя регистрируемого объекта (т.е. включающее в себя имя секции) * \param fullName - полное имя регистрируемого объекта (т.е. включающее в себя имя секции)
...@@ -215,20 +215,20 @@ void ObjectRepository::unregistration( const string& name, const string& section ...@@ -215,20 +215,20 @@ void ObjectRepository::unregistration( const string& name, const string& section
} }
catch(const CosNaming::NamingContext::NotFound&) catch(const CosNaming::NamingContext::NotFound&)
{ {
err << "ObjectRepository(unregistrartion): не найден объект ->" << name; err << "ObjectRepository(unregistration): не найден объект ->" << name;
} }
catch(const CosNaming::NamingContext::InvalidName&) catch(const CosNaming::NamingContext::InvalidName&)
{ {
err << "ObjectRepository(unregistrartion): не корректное имя объекта -> " << name; err << "ObjectRepository(unregistration): не корректное имя объекта -> " << name;
} }
catch(const CosNaming::NamingContext::CannotProceed& cp) catch(const CosNaming::NamingContext::CannotProceed& cp)
{ {
err << "ObjectRepository(unregistrartion): catch CannotProced " << name << " bad part="; err << "ObjectRepository(unregistration): catch CannotProceed " << name << " bad part=";
err << omniURI::nameToString(cp.rest_of_name); err << omniURI::nameToString(cp.rest_of_name);
} }
if (err.str().empty()) if (err.str().empty())
err << "ObjectRepository(unregistrartion): не смог удалить " << name; err << "ObjectRepository(unregistration): не смог удалить " << name;
throw ORepFailed(err.str()); throw ORepFailed(err.str());
} }
...@@ -297,9 +297,9 @@ ObjectPtr ObjectRepository::resolve( const string& name, const string& NSName ) ...@@ -297,9 +297,9 @@ ObjectPtr ObjectRepository::resolve( const string& name, const string& NSName )
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
/*! /*!
* \param ls - указатель на список который надо заполнить * \param ls - указатель на список, который надо заполнить
* \param how_many - максимальное количество заносимых элементов * \param how_many - максимальное количество заносимых элементов
* \param section - полное имя секции начиная с Root. * \param section - полное имя секции, начиная с Root.
* \return Функция возвращает true, если в список были внесены не все элементы. Т.е. действительное * \return Функция возвращает true, если в список были внесены не все элементы. Т.е. действительное
* количество объектов в этой секции превышает заданное how_many. * количество объектов в этой секции превышает заданное how_many.
* \exception ORepFailed - генерируется если произошла при получении доступа к секции * \exception ORepFailed - генерируется если произошла при получении доступа к секции
...@@ -473,7 +473,7 @@ bool ObjectRepository::createSection(const string& name, const string& in_sectio ...@@ -473,7 +473,7 @@ bool ObjectRepository::createSection(const string& name, const string& in_sectio
// ------------------------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------------------------
/*! /*!
* \param fullName - полное имя создаваемой секции * \param fullName - полное имя создаваемой секции
* \exception ORepFailed - генерируется если произошла при получении доступа к секции * \exception ORepFailed - генерируется, если произошла при получении доступа к секции
*/ */
bool ObjectRepository::createSectionF( const string& fullName ) const bool ObjectRepository::createSectionF( const string& fullName ) const
{ {
...@@ -584,7 +584,7 @@ void ObjectRepository::printSection( const string& fullName ) const ...@@ -584,7 +584,7 @@ void ObjectRepository::printSection( const string& fullName ) const
// ----------------------------------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------------------------------
/*! /*!
* \param fullName - имя удаляемой секции * \param fullName - имя удаляемой секции
* \param recursive - удлаять рекурсивно все секции или возвращать не удалять и ошибку ( временно ) * \param recursive - удалять рекурсивно все секции или возвращать не удалять и ошибку ( временно )
* \warning Функция вынимает только первые 1000 объектов, остальные игнорируются... * \warning Функция вынимает только первые 1000 объектов, остальные игнорируются...
*/ */
bool ObjectRepository::removeSection( const string& fullName, bool recursive ) const bool ObjectRepository::removeSection( const string& fullName, bool recursive ) const
...@@ -694,7 +694,7 @@ bool ObjectRepository::removeSection( const string& fullName, bool recursive ) c ...@@ -694,7 +694,7 @@ bool ObjectRepository::removeSection( const string& fullName, bool recursive ) c
// ----------------------------------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------------------------------
/*! /*!
* \param newFName - полное имя новой секции * \param newFName - полное имя новой секции
* \param oldFName - полное имя удаляемрй секции * \param oldFName - полное имя удаляемой секции
*/ */
bool ObjectRepository::renameSection( const string& newFName, const string& oldFName ) const bool ObjectRepository::renameSection( const string& newFName, const string& oldFName ) const
{ {
......
...@@ -56,7 +56,7 @@ namespace uniset ...@@ -56,7 +56,7 @@ namespace uniset
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
bool CommonEventLoop::activateWatcher( EvWatcher* w, size_t waitTimeout_msec ) bool CommonEventLoop::activateWatcher( EvWatcher* w, size_t waitTimeout_msec )
{ {
// готовим "указатель" на объект требующий активации // готовим "указатель" на объект, требующий активации
std::unique_lock<std::mutex> locker(prep_mutex); std::unique_lock<std::mutex> locker(prep_mutex);
wprep = w; wprep = w;
......
...@@ -433,7 +433,7 @@ SimpleInfo* IONotifyController::getInfo( const char* userparam ) ...@@ -433,7 +433,7 @@ SimpleInfo* IONotifyController::getInfo( const char* userparam )
/*! /*!
* \param lst - список в который необходимо внести потребителя * \param lst - список в который необходимо внести потребителя
* \param name - имя вносимого потребителя * \param name - имя вносимого потребителя
* \note Добавление произойдет только если такого потребителя не существует в списке * \note Добавление произойдёт только если такого потребителя не существует в списке
*/ */
bool IONotifyController::addConsumer( ConsumerListInfo& lst, const ConsumerInfo& ci ) bool IONotifyController::addConsumer( ConsumerListInfo& lst, const ConsumerInfo& ci )
{ {
...@@ -481,7 +481,7 @@ bool IONotifyController::addConsumer( ConsumerListInfo& lst, const ConsumerInfo& ...@@ -481,7 +481,7 @@ bool IONotifyController::addConsumer( ConsumerListInfo& lst, const ConsumerInfo&
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
/*! /*!
* \param lst - указатель на список из которго происходит удаление потребителя * \param lst - указатель на список из которого происходит удаление потребителя
* \param name - имя удаляемого потребителя * \param name - имя удаляемого потребителя
*/ */
bool IONotifyController::removeConsumer( ConsumerListInfo& lst, const ConsumerInfo& cons ) bool IONotifyController::removeConsumer( ConsumerListInfo& lst, const ConsumerInfo& cons )
......
...@@ -60,7 +60,7 @@ namespace uniset ...@@ -60,7 +60,7 @@ namespace uniset
{ {
t_msec = msec; t_msec = msec;
// не знаю как по другому // TODO: не знаю как по-другому
// приходиться делать это через промежуточную переменную // приходиться делать это через промежуточную переменную
std::chrono::milliseconds ms(msec); std::chrono::milliseconds ms(msec);
std::swap(t_inner_msec, ms); std::swap(t_inner_msec, ms);
......
...@@ -121,7 +121,7 @@ VoidMessagePtr MQAtomic::top() noexcept ...@@ -121,7 +121,7 @@ VoidMessagePtr MQAtomic::top() noexcept
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
size_t MQAtomic::size() const noexcept size_t MQAtomic::size() const noexcept
{ {
// т.к. rpos корректируется только при фактическом вызое top() // т.к. rpos корректируется только при фактическом вызове top()
// то тут приходиться смотреть если у нас переполнение // то тут приходиться смотреть если у нас переполнение
// то надо просто вернуть размер очереди // то надо просто вернуть размер очереди
// (т.к. фактически циклический буфер никогда не переполняется) // (т.к. фактически циклический буфер никогда не переполняется)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment