Commit a6552bd5 authored by Pavel Vainerman's avatar Pavel Vainerman

[http-resolver]: update docs

parent 386e8ed5
......@@ -27,7 +27,7 @@
<DocDir name="./"/>
<LockDir name="/tmp/"/>
<HttpResolver name="HttpResolver"/>
<LocalIOR name="1"/>
<LocalIOR name="0"/>
<Services>
<LocalTimeService AskLifeTimeSEC="10" MaxCountTimers="100" name="TimeService"/>
<LocalInfoServer dbrepeat="1" name="InfoServer">
......
......@@ -51,7 +51,6 @@ UniSetTypes::Message::TheLastFieldOfTypeOfMessage.
};
\endcode
\section sec_Concept_ObjectId Идентификатор объекта
Каждый объект, которому необходимо взаимодействовать с другими объектами
(в том числе датчиками см. \ref sec_Concept_Sensor) должен обладать уникальным
......@@ -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 Датчик
Датчик - это одно из базовых понятий при построении систем на основе libuniset.
......@@ -205,4 +210,4 @@ UniSetTypes::Message::TheLastFieldOfTypeOfMessage.
Если в документации речь идёт о "процессе", как последовательности
действий во времени, это должно быть очевидно из контекста.
*/
\ No newline at end of file
*/
......@@ -2,6 +2,8 @@
- \ref ConfigurationPage_secCommon
- \ref ConfigurationPage_secOmniORB
- \ref ConfigurationPage_secOmniNames
- \ref ConfigurationPage_secLocalIOR
\section ConfigurationPage_secCommon Общее описание
......@@ -55,4 +57,40 @@ int main(int argc, char **argv)
Помимо этого можно задать параметр \a ignore_checking="1", чтобы не происходило проверки доступности endPoint.
*/
\ No newline at end of file
\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
{
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() )
rlog->addLevel( Debug::value(logLevels) );
......@@ -86,11 +86,11 @@ HttpResolver::HttpResolver( const string& name, int argc, const char* const* arg
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"));
httpPort = uniset::getArgInt("--" + prefix + "http-port", argc, argv, it.getProp2("port", "8008"));
httpCORS_allow = uniset::getArgParam("--" + prefix + "httpresolver-cors-allow", argc, argv, it.getProp2("cors", httpCORS_allow));
httpHost = uniset::getArgParam("--" + prefix + "host", argc, argv, it.getProp2("host", "0.0.0.0"));
httpPort = uniset::getArgInt("--" + prefix + "port", argc, argv, it.getProp2("port", "8008"));
httpCORS_allow = uniset::getArgParam("--" + prefix + "cors-allow", argc, argv, it.getProp2("cors", httpCORS_allow));
rinfo << myname << "(init): http server parameters " << httpHost << ":" << httpPort << endl;
Poco::Net::SocketAddress sa(httpHost, httpPort);
......@@ -99,8 +99,8 @@ HttpResolver::HttpResolver( const string& name, int argc, const char* const* arg
{
Poco::Net::HTTPServerParams* httpParams = new Poco::Net::HTTPServerParams;
int maxQ = uniset::getArgPInt("--" + prefix + "http-max-queued", argc, argv, it.getProp("httpMaxQueued"), 100);
int maxT = uniset::getArgPInt("--" + prefix + "http-max-threads", argc, argv, it.getProp("httpMaxThreads"), 3);
int maxQ = uniset::getArgPInt("--" + prefix + "max-queued", argc, argv, it.getProp("maxQueued"), 100);
int maxT = uniset::getArgPInt("--" + prefix + "max-threads", argc, argv, it.getProp("maxThreads"), 3);
httpParams->setMaxQueued(maxQ);
httpParams->setMaxThreads(maxT);
......@@ -135,15 +135,12 @@ std::shared_ptr<HttpResolver> HttpResolver::init_resolver( int argc, const char*
// -----------------------------------------------------------------------------
void HttpResolver::help_print()
{
cout << "Default: prefix='logdb'" << endl;
cout << "--prefix-single-confile conf.xml - Отдельный конфигурационный файл (не требующий структуры uniset)" << endl;
cout << "--prefix-name name - Имя. Для поиска настроечной секции в configure.xml" << endl;
cout << "http: " << endl;
cout << "--prefix-http-host ip - IP на котором слушает http сервер. По умолчанию: localhost" << endl;
cout << "--prefix-http-port num - Порт на котором принимать запросы. По умолчанию: 8008" << 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;
cout << "Default: prefix='httpresolver'" << endl;
cout << "--prefix-host ip - IP на котором слушает http сервер. По умолчанию: 0.0.0.0" << endl;
cout << "--prefix-port num - Порт на котором принимать запросы. По умолчанию: 8008" << endl;
cout << "--prefix-max-queued num - Размер очереди запросов к http серверу. По умолчанию: 100" << endl;
cout << "--prefix-max-threads num - Разрешённое количество потоков для http-сервера. По умолчанию: 3" << endl;
cout << "--prefix-cors-allow addr - (CORS): Access-Control-Allow-Origin. Default: *" << endl;
}
// -----------------------------------------------------------------------------
void HttpResolver::run()
......
......@@ -34,15 +34,40 @@ namespace uniset
{
//------------------------------------------------------------------------------------------
/*!
\page page_HttpResolver Http-cервис для получения CORBA-ссылок на объекты (HttpResolver)
- \ref sec_HttpResolver_Comm
\page page_HttpResolver Http-cервис для получения CORBA-ссылок на объекты (HttpResolver)
- \ref sec_HttpResolver_Comm
- \ref sec_HttpResolver_Conf
\section sec_HttpResolver_Comm Общее описание работы HttpResolver
HttpResolver это сервис, который отдаёт CORBA-ссылки (в виде строки)
на объекты запущенные на данном узле в режиме 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:
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