Commit 6bea90e7 authored by Pavel Vainerman's avatar Pavel Vainerman

(unet2): Добавил возможность задать broadcast адрес для всех узлов сразу.

Чуть подправил логи.
parent 6c825ca4
...@@ -48,15 +48,25 @@ sender(0) ...@@ -48,15 +48,25 @@ sender(0)
throw UniSetTypes::SystemError("(UNetExchange): Not found <nodes>"); throw UniSetTypes::SystemError("(UNetExchange): Not found <nodes>");
UniXML_iterator n_it(nodes); UniXML_iterator n_it(nodes);
string default_ip(n_it.getProp("unet_ip"));
if( !n_it.goChildren() ) if( !n_it.goChildren() )
throw UniSetTypes::SystemError("(UNetExchange): Items not found for <nodes>"); throw UniSetTypes::SystemError("(UNetExchange): Items not found for <nodes>");
for( ; n_it.getCurrent(); n_it.goNext() ) for( ; n_it.getCurrent(); n_it.goNext() )
{ {
// Если указано поле unet_ip непосредственно у узла - берём его
// если указано общий broadcast ip для всех узлов - берём его
// Иначе берём из поля "ip"
string h(n_it.getProp("ip")); string h(n_it.getProp("ip"));
if( !default_ip.empty() )
h = default_ip;
if( !n_it.getProp("unet_ip").empty() ) if( !n_it.getProp("unet_ip").empty() )
h = n_it.getProp("unet_ip"); h = n_it.getProp("unet_ip");
// Если указано поле unet_port - используем его
// Иначе port = идентификатору узла
int p = n_it.getIntProp("id"); int p = n_it.getIntProp("id");
if( !n_it.getProp("unet_port").empty() ) if( !n_it.getProp("unet_port").empty() )
p = n_it.getIntProp("unet_port"); p = n_it.getIntProp("unet_port");
...@@ -70,7 +80,7 @@ sender(0) ...@@ -70,7 +80,7 @@ sender(0)
continue; continue;
} }
if( !n_it.getProp("unet_ignore").empty() ) if( n_it.getIntProp("unet_ignore") )
{ {
dlog[Debug::INFO] << myname << "(init): unet_ignore.. for " << n_it.getProp("name") << endl; dlog[Debug::INFO] << myname << "(init): unet_ignore.. for " << n_it.getProp("name") << endl;
continue; continue;
......
...@@ -235,7 +235,7 @@ void UNetReceiver::real_update() ...@@ -235,7 +235,7 @@ void UNetReceiver::real_update()
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void UNetReceiver::receive() void UNetReceiver::receive()
{ {
cerr << "******************* receive start" << endl; cout << myname << ": ******************* receive start" << endl;
ptRecvTimeout.setTiming(recvTimeout); ptRecvTimeout.setTiming(recvTimeout);
while( activated ) while( activated )
{ {
...@@ -254,13 +254,13 @@ void UNetReceiver::receive() ...@@ -254,13 +254,13 @@ void UNetReceiver::receive()
} }
catch(...) catch(...)
{ {
cerr << myname << "(preceive): catch ..." << std::endl; cerr << myname << "(receive): catch ..." << std::endl;
} }
msleep(recvpause); msleep(recvpause);
} }
cerr << "************* execute FINISH **********" << endl; cout << myname << ": ************* receive FINISH **********" << endl;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
bool UNetReceiver::recv() bool UNetReceiver::recv()
......
...@@ -134,6 +134,10 @@ class UNetReceiver ...@@ -134,6 +134,10 @@ class UNetReceiver
IOController::AIOStateList::iterator ait; IOController::AIOStateList::iterator ait;
IOController::DIOStateList::iterator dit; IOController::DIOStateList::iterator dit;
UniversalIO::IOTypes iotype; UniversalIO::IOTypes iotype;
ItemInfo():
id(UniSetTypes::DefaultObjectId),
iotype(UniversalIO::UnknownIOType){}
}; };
typedef std::vector<ItemInfo> ItemVec; typedef std::vector<ItemInfo> ItemVec;
......
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