Commit a6552bd5 authored by Pavel Vainerman's avatar Pavel Vainerman

[http-resolver]: update docs

parent 386e8ed5
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
<DocDir name="./"/> <DocDir name="./"/>
<LockDir name="/tmp/"/> <LockDir name="/tmp/"/>
<HttpResolver name="HttpResolver"/> <HttpResolver name="HttpResolver"/>
<LocalIOR name="1"/> <LocalIOR name="0"/>
<Services> <Services>
<LocalTimeService AskLifeTimeSEC="10" MaxCountTimers="100" name="TimeService"/> <LocalTimeService AskLifeTimeSEC="10" MaxCountTimers="100" name="TimeService"/>
<LocalInfoServer dbrepeat="1" name="InfoServer"> <LocalInfoServer dbrepeat="1" name="InfoServer">
......
...@@ -51,7 +51,6 @@ UniSetTypes::Message::TheLastFieldOfTypeOfMessage. ...@@ -51,7 +51,6 @@ UniSetTypes::Message::TheLastFieldOfTypeOfMessage.
}; };
\endcode \endcode
\section sec_Concept_ObjectId Идентификатор объекта \section sec_Concept_ObjectId Идентификатор объекта
Каждый объект, которому необходимо взаимодействовать с другими объектами Каждый объект, которому необходимо взаимодействовать с другими объектами
(в том числе датчиками см. \ref sec_Concept_Sensor) должен обладать уникальным (в том числе датчиками см. \ref sec_Concept_Sensor) должен обладать уникальным
...@@ -165,7 +164,13 @@ UniSetTypes::Message::TheLastFieldOfTypeOfMessage. ...@@ -165,7 +164,13 @@ UniSetTypes::Message::TheLastFieldOfTypeOfMessage.
не сложными скриптами). не сложными скриптами).
\section sec_Concept_Repository Репозиторий объектов \section sec_Concept_Repository Сервис имён (Names service)
Сервис имён предназначен для получения ссылок на объекты (для возможности удалённого вызова)
по имени объекта. Все объекты и датчики регистрируются в этом сервисе и становятся доступны
для удалённого вызова. В данном проекте используется реализация службы имён входящая в состав
библиотеки omniORB. Сервис поставляется отдельной утилитой под названием omniNames.
см. \ref ConfigurationPage_secOmniNames
\section sec_Concept_Sensor Датчик \section sec_Concept_Sensor Датчик
Датчик - это одно из базовых понятий при построении систем на основе libuniset. Датчик - это одно из базовых понятий при построении систем на основе libuniset.
......
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
- \ref ConfigurationPage_secCommon - \ref ConfigurationPage_secCommon
- \ref ConfigurationPage_secOmniORB - \ref ConfigurationPage_secOmniORB
- \ref ConfigurationPage_secOmniNames
- \ref ConfigurationPage_secLocalIOR
\section ConfigurationPage_secCommon Общее описание \section ConfigurationPage_secCommon Общее описание
...@@ -55,4 +57,40 @@ int main(int argc, char **argv) ...@@ -55,4 +57,40 @@ int main(int argc, char **argv)
Помимо этого можно задать параметр \a ignore_checking="1", чтобы не происходило проверки доступности endPoint. Помимо этого можно задать параметр \a ignore_checking="1", чтобы не происходило проверки доступности endPoint.
\section ConfigurationPage_secOmniNames Сервис имён
Сервис имён предназначен для получения ссылок на объекты (для возможности удалённого вызова)
по имени объекта. В данном проекте используется реализация службы имён входящая в состав
библиотеки omniORB. Сервис поставляется отдельной утилитой под названием omniNames, которая запускается отдельно.
В файле настроек проекта необходимо указать адрес сервиса
\code
<UniSet>
...
<NameService host="localhost" port="2809"/>
</UniSet>
\endcode
Для большей надёжности рекомендуется запускать сервис имён на каждом узле отдельно, чтобы локальные объекты регистрировались в нём.
Но в общем случае сервис имён может быть запущен один на всю систему. Режим работы с использованием сервиса имён, позволяет
прозрачно обращаться к объектам где бы они не находились, на других узлах или локально.
\section ConfigurationPage_secLocalIOR Режим работы без сервиса имён
Режим работы без сервиса имён включается в настройках
\code
<UniSet>
...
<LocalIOR name="1"/>
<LockDir name="/var/lock/projectname/"/>
...
</<UniSet>
\endcode
или при запуске, при помощи аргумента командной строки `--localIOR 1`
Данный режим предназначен для работы без использования сервиса имён (omniNames). При этом IOR-ссылки на объекты и датчики
публикуются локально в файлах, в каталоге `LockDir`. Такой режим значительно ускоряет запуск приложений, т.к. регистрация большого
количества датчиков в сервисе имён занимает много времени. Но по умолчанию в данном режиме работы недоступны удалённые вызовы на другие узлы. Т.е. например такой вызов работать не будет
\code
uniset2-admin --confile xxx --getValue sensor1@node2
\endcode
Для того чтобы удалённые вызовы были доступны, необходимо на каждом узле запустить специальный сервис HttpResolver
(см. \ref page_HttpResolver).
*/ */
...@@ -40,7 +40,7 @@ HttpResolver::HttpResolver( const string& name, int argc, const char* const* arg ...@@ -40,7 +40,7 @@ HttpResolver::HttpResolver( const string& name, int argc, const char* const* arg
{ {
rlog = make_shared<DebugStream>(); rlog = make_shared<DebugStream>();
auto logLevels = uniset::getArgParam("--" + prefix + "log-add-levels", argc, argv, ""); auto logLevels = uniset::getArgParam("--" + prefix + "log-add-levels", argc, argv, "crit,warn");
if( !logLevels.empty() ) if( !logLevels.empty() )
rlog->addLevel( Debug::value(logLevels) ); rlog->addLevel( Debug::value(logLevels) );
...@@ -86,11 +86,11 @@ HttpResolver::HttpResolver( const string& name, int argc, const char* const* arg ...@@ -86,11 +86,11 @@ HttpResolver::HttpResolver( const string& name, int argc, const char* const* arg
iorfile = make_shared<IORFile>(dirIt.getProp("name")); iorfile = make_shared<IORFile>(dirIt.getProp("name"));
rinfo << myname << "(init): iot directory: " << dirIt.getProp("name") << endl; rinfo << myname << "(init): IOR directory: " << dirIt.getProp("name") << endl;
httpHost = uniset::getArgParam("--" + prefix + "http-host", argc, argv, it.getProp2("host", "localhost")); httpHost = uniset::getArgParam("--" + prefix + "host", argc, argv, it.getProp2("host", "0.0.0.0"));
httpPort = uniset::getArgInt("--" + prefix + "http-port", argc, argv, it.getProp2("port", "8008")); httpPort = uniset::getArgInt("--" + prefix + "port", argc, argv, it.getProp2("port", "8008"));
httpCORS_allow = uniset::getArgParam("--" + prefix + "httpresolver-cors-allow", argc, argv, it.getProp2("cors", httpCORS_allow)); httpCORS_allow = uniset::getArgParam("--" + prefix + "cors-allow", argc, argv, it.getProp2("cors", httpCORS_allow));
rinfo << myname << "(init): http server parameters " << httpHost << ":" << httpPort << endl; rinfo << myname << "(init): http server parameters " << httpHost << ":" << httpPort << endl;
Poco::Net::SocketAddress sa(httpHost, httpPort); Poco::Net::SocketAddress sa(httpHost, httpPort);
...@@ -99,8 +99,8 @@ HttpResolver::HttpResolver( const string& name, int argc, const char* const* arg ...@@ -99,8 +99,8 @@ HttpResolver::HttpResolver( const string& name, int argc, const char* const* arg
{ {
Poco::Net::HTTPServerParams* httpParams = new Poco::Net::HTTPServerParams; Poco::Net::HTTPServerParams* httpParams = new Poco::Net::HTTPServerParams;
int maxQ = uniset::getArgPInt("--" + prefix + "http-max-queued", argc, argv, it.getProp("httpMaxQueued"), 100); int maxQ = uniset::getArgPInt("--" + prefix + "max-queued", argc, argv, it.getProp("maxQueued"), 100);
int maxT = uniset::getArgPInt("--" + prefix + "http-max-threads", argc, argv, it.getProp("httpMaxThreads"), 3); int maxT = uniset::getArgPInt("--" + prefix + "max-threads", argc, argv, it.getProp("maxThreads"), 3);
httpParams->setMaxQueued(maxQ); httpParams->setMaxQueued(maxQ);
httpParams->setMaxThreads(maxT); httpParams->setMaxThreads(maxT);
...@@ -135,15 +135,12 @@ std::shared_ptr<HttpResolver> HttpResolver::init_resolver( int argc, const char* ...@@ -135,15 +135,12 @@ std::shared_ptr<HttpResolver> HttpResolver::init_resolver( int argc, const char*
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void HttpResolver::help_print() void HttpResolver::help_print()
{ {
cout << "Default: prefix='logdb'" << endl; cout << "Default: prefix='httpresolver'" << endl;
cout << "--prefix-single-confile conf.xml - Отдельный конфигурационный файл (не требующий структуры uniset)" << endl; cout << "--prefix-host ip - IP на котором слушает http сервер. По умолчанию: 0.0.0.0" << endl;
cout << "--prefix-name name - Имя. Для поиска настроечной секции в configure.xml" << endl; cout << "--prefix-port num - Порт на котором принимать запросы. По умолчанию: 8008" << endl;
cout << "http: " << endl; cout << "--prefix-max-queued num - Размер очереди запросов к http серверу. По умолчанию: 100" << endl;
cout << "--prefix-http-host ip - IP на котором слушает http сервер. По умолчанию: localhost" << endl; cout << "--prefix-max-threads num - Разрешённое количество потоков для http-сервера. По умолчанию: 3" << endl;
cout << "--prefix-http-port num - Порт на котором принимать запросы. По умолчанию: 8008" << endl; cout << "--prefix-cors-allow addr - (CORS): Access-Control-Allow-Origin. Default: *" << endl;
cout << "--prefix-http-max-queued num - Размер очереди запросов к http серверу. По умолчанию: 100" << endl;
cout << "--prefix-http-max-threads num - Разрешённое количество потоков для http-сервера. По умолчанию: 3" << endl;
cout << "--prefix-http-cors-allow addr - (CORS): Access-Control-Allow-Origin. Default: *" << endl;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void HttpResolver::run() void HttpResolver::run()
......
...@@ -37,12 +37,37 @@ namespace uniset ...@@ -37,12 +37,37 @@ namespace uniset
\page page_HttpResolver Http-cервис для получения CORBA-ссылок на объекты (HttpResolver) \page page_HttpResolver Http-cервис для получения CORBA-ссылок на объекты (HttpResolver)
- \ref sec_HttpResolver_Comm - \ref sec_HttpResolver_Comm
- \ref sec_HttpResolver_Conf
\section sec_HttpResolver_Comm Общее описание работы HttpResolver \section sec_HttpResolver_Comm Общее описание работы HttpResolver
HttpResolver это сервис, который отдаёт CORBA-ссылки (в виде строки) HttpResolver это сервис, который отдаёт CORBA-ссылки (в виде строки)
на объекты запущенные на данном узле в режиме LocalIOR. Т.е. когда ссылки на объекты запущенные на данном узле в режиме LocalIOR. Т.е. когда ссылки
публикуются в файлах. публикуются в файлах.
\sa \ref ConfigurationPage_secLocalIOR
\section sec_HttpResolver_Conf Настройка работы HttpResolver
Для запуска HttpResolver необходимо настроить на каком порту и сетевом интерфейсе будут приниматься запросы.
Для этого необходимо в настройках прописать следующую секцию
\code
<UniSet>
...
<HttpResolver name="HttpResolver" port="8008" host="0.0.0.0"/>
...
</UniSet>
\endcode
- 0.0.0.0 - слушать на всех доступных интерфейсах
Помимо этого, настройки можно указать в аргументах командной строки
- `--httpresolver-host` - интерфейс на котором слушать запросы. По умолчанию: 0.0.0.0
- `--httpresolver-port` - порт на котором слушать запросы. По умолчанию: 8008
Длполнительные параметры:
- `--httpresolver-max-queued num ` - Размер очереди запросов к http серверу. По умолчанию: 100.
- `--httpresolver-max-threads num` - Разрешённое количество потоков для http-сервера. По умолчанию: 3.
- `--httpresolver-cors-allow addr` - (CORS): Access-Control-Allow-Origin. Default: *
- `--httpresolver-logs-add-levels any` - Управление логами
- `--confile configure.xml` - Файл с настройками
*/ */
class HttpResolver: class HttpResolver:
public Poco::Net::HTTPRequestHandler public Poco::Net::HTTPRequestHandler
......
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