Commit 54549416 authored by Pavel Vainerman's avatar Pavel Vainerman

(UNet): added --unet-packsendpause and --unet-packsendpause-factor

parent 5d8d0a50
...@@ -79,6 +79,8 @@ UNetExchange::UNetExchange(uniset::ObjectId objId, uniset::ObjectId shmId, const ...@@ -79,6 +79,8 @@ UNetExchange::UNetExchange(uniset::ObjectId objId, uniset::ObjectId shmId, const
int evrunTimeout = conf->getArgPInt("--" + prefix + "-evrun-timeout", it.getProp("evrunTimeout"), 60000); int evrunTimeout = conf->getArgPInt("--" + prefix + "-evrun-timeout", it.getProp("evrunTimeout"), 60000);
int recvpause = conf->getArgPInt("--" + prefix + "-recvpause", it.getProp("recvpause"), 10); int recvpause = conf->getArgPInt("--" + prefix + "-recvpause", it.getProp("recvpause"), 10);
int sendpause = conf->getArgPInt("--" + prefix + "-sendpause", it.getProp("sendpause"), 100); int sendpause = conf->getArgPInt("--" + prefix + "-sendpause", it.getProp("sendpause"), 100);
int packsendpause = conf->getArgPInt("--" + prefix + "-packsendpause", it.getProp("packsendpause"), 5);
int packsendpauseFactor = conf->getArgPInt("--" + prefix + "-packsendpause-factor", it.getProp("packsendpauseFactor"), 0);
int updatepause = conf->getArgPInt("--" + prefix + "-updatepause", it.getProp("updatepause"), 100); int updatepause = conf->getArgPInt("--" + prefix + "-updatepause", it.getProp("updatepause"), 100);
int lostTimeout = conf->getArgPInt("--" + prefix + "-lost-timeout", it.getProp("lostTimeout"), 2 * updatepause); int lostTimeout = conf->getArgPInt("--" + prefix + "-lost-timeout", it.getProp("lostTimeout"), 2 * updatepause);
steptime = conf->getArgPInt("--" + prefix + "-steptime", it.getProp("steptime"), 1000); steptime = conf->getArgPInt("--" + prefix + "-steptime", it.getProp("steptime"), 1000);
...@@ -166,6 +168,8 @@ UNetExchange::UNetExchange(uniset::ObjectId objId, uniset::ObjectId shmId, const ...@@ -166,6 +168,8 @@ UNetExchange::UNetExchange(uniset::ObjectId objId, uniset::ObjectId shmId, const
unetinfo << myname << "(init): init sender.. my node " << n_it.getProp("name") << endl; unetinfo << myname << "(init): init sender.. my node " << n_it.getProp("name") << endl;
sender = make_shared<UNetSender>(h, p, shm, false, s_field, s_fvalue, "unet", prefix); sender = make_shared<UNetSender>(h, p, shm, false, s_field, s_fvalue, "unet", prefix);
sender->setSendPause(sendpause); sender->setSendPause(sendpause);
sender->setPackSendPause(packsendpause);
sender->setPackSendPauseFactor(packsendpauseFactor);
sender->setCheckConnectionPause(checkConnectionPause); sender->setCheckConnectionPause(checkConnectionPause);
loga->add(sender->getLog()); loga->add(sender->getLog());
......
...@@ -123,6 +123,13 @@ namespace uniset ...@@ -123,6 +123,13 @@ namespace uniset
При этом внутри одной группы датчики разбиваются по пакетам согласно заданному максимальному размеру пакета При этом внутри одной группы датчики разбиваются по пакетам согласно заданному максимальному размеру пакета
(см. конструктор класса UNetSender()). (см. конструктор класса UNetSender()).
\section pgUNetUDP_PackSendPause Пауза между посылкой пакетов
Параметр \b --prefix-packsendpause или \b packsendpause в настаройках позволяет задать паузу (в миллисекундах)
между посылками пакетов. Если итоговых пакетов с данными больше чем 1.
При этом параметр \b --prefix-packsendpause-factor или \b packsendpauseFactor позволяет указать,
что необходимо делать паузы не между каждым пакетом, а через каждый N пакет.
По умолчанию \b packsendpause=5 миллисекунд.
\section pgUNetUDP_Stat Статистика работы канала \section pgUNetUDP_Stat Статистика работы канала
Для возможности мониторинга работы имеются счётчики, которые можно привязать к датчикам, Для возможности мониторинга работы имеются счётчики, которые можно привязать к датчикам,
задав их для соответствующего узла в секции '<nodes>' конфигурационного файла. задав их для соответствующего узла в секции '<nodes>' конфигурационного файла.
......
...@@ -43,6 +43,7 @@ namespace uniset ...@@ -43,6 +43,7 @@ namespace uniset
saddr(_host, _port), saddr(_host, _port),
sendpause(150), sendpause(150),
packsendpause(5), packsendpause(5),
packsendpauseFactor(1),
activated(false), activated(false),
packetnum(1), packetnum(1),
lastcrc(0), lastcrc(0),
...@@ -259,7 +260,18 @@ namespace uniset ...@@ -259,7 +260,18 @@ namespace uniset
break; break;
real_send(pk[i]); real_send(pk[i]);
msleep(packsendpause);
if( packsendpause > 0 && size > 1 )
{
if( packsendpauseFactor <= 0 )
{
msleep(packsendpause);
}
else if( i > 0 && (i % packsendpauseFactor) == 0 )
{
msleep(packsendpause);
}
}
} }
} }
...@@ -565,6 +577,8 @@ namespace uniset ...@@ -565,6 +577,8 @@ namespace uniset
<< " lastpacknum=" << packetnum << " lastpacknum=" << packetnum
<< " lastcrc=" << setw(6) << lastcrc << " lastcrc=" << setw(6) << lastcrc
<< " items=" << items.size() << " maxAData=" << getADataSize() << " maxDData=" << getDDataSize() << " items=" << items.size() << " maxAData=" << getADataSize() << " maxDData=" << getDDataSize()
<< " packsendpause[factor=" << packsendpauseFactor << "]=" << packsendpause
<< " sendpause=" << sendpause
<< endl << endl
<< "\t packs([sendfactor]=num): " << "\t packs([sendfactor]=num): "
<< endl; << endl;
......
...@@ -142,6 +142,10 @@ namespace uniset ...@@ -142,6 +142,10 @@ namespace uniset
{ {
packsendpause = msec; packsendpause = msec;
} }
inline void setPackSendPauseFactor( int factor )
{
packsendpauseFactor = factor;
}
void setCheckConnectionPause( int msec ); void setCheckConnectionPause( int msec );
...@@ -204,6 +208,7 @@ namespace uniset ...@@ -204,6 +208,7 @@ namespace uniset
std::string myname = { "" }; std::string myname = { "" };
timeout_t sendpause = { 150 }; timeout_t sendpause = { 150 };
timeout_t packsendpause = { 5 }; timeout_t packsendpause = { 5 };
int packsendpauseFactor = { 1 };
timeout_t writeTimeout = { 1000 }; // msec timeout_t writeTimeout = { 1000 }; // msec
std::atomic_bool activated = { false }; std::atomic_bool activated = { false };
PassiveTimer ptCheckConnection; PassiveTimer ptCheckConnection;
......
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