Beispiel #1
0
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();
            }
        }
    }
}