void FallbackNameClient::run() { NameConfig nc; Contact call = FallbackNameServer::getAddress(); DgramTwoWayStream send; send.join(call, true); listen.join(call, false); if (!listen.isOk()) { YARP_ERROR(Logger::get(), ConstString("Multicast not available")); return; } ConstString msg = ConstString("NAME_SERVER query ") + nc.getNamespace(); send.beginPacket(); send.writeLine(msg.c_str(), (int)msg.length()); send.flush(); send.endPacket(); for (int i=0; i<5; i++) { listen.beginPacket(); ConstString txt = listen.readLine(); listen.endPacket(); if (closed) return; YARP_DEBUG(Logger::get(), ConstString("Fallback name client got ") + txt); if (txt.find("registration ")==0) { address = NameClient::extractAddress(txt); YARP_INFO(Logger::get(), ConstString("Received address ") + address.toURI()); return; } } }
void FallbackNameServer::run() { DgramTwoWayStream send; send.join(getAddress(),true); listen.join(getAddress(),false); YARP_DEBUG(Logger::get(),"Fallback server running"); while (listen.isOk()&&send.isOk()&&!closed) { YARP_DEBUG(Logger::get(),"Fallback server waiting"); String msg; listen.beginPacket(); msg = listen.readLine(); listen.endPacket(); YARP_DEBUG(Logger::get(),"Fallback server got something"); if (listen.isOk()&&!closed) { YARP_DEBUG(Logger::get(),String("Fallback server got ") + msg); if (msg.find("NAME_SERVER ") == 0) { Contact addr; String result = owner.apply(msg,addr); send.beginPacket(); send.writeLine(result.c_str(),(int)result.length()); send.flush(); send.endPacket(); } } } }