fallbacknameserver.cpp

来自「一个语言识别引擎」· C++ 代码 · 共 71 行

CPP
71
字号
// -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-

/*
 * Copyright (C) 2006 Paul Fitzpatrick
 * CopyPolicy: Released under the terms of the GNU GPL v2.0.
 *
 */



#include <yarp/FallbackNameServer.h>
#include <yarp/DgramTwoWayStream.h>
#include <yarp/NetType.h>
#include <yarp/NameServer.h>
#include <yarp/Bytes.h>

using namespace yarp;

const Address FallbackNameServer::mcastLastResort("224.2.1.1",10001,
                                                  "mcast","fallback");


void FallbackNameServer::run() {
    try {
        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;
            try {
                listen.beginPacket();
                msg = NetType::readLine(listen);
                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.strstr("NAME_SERVER ") == 0) {
                        String result = owner.apply(msg);
                        //Bytes b((char*)(result.c_str()),result.length());
                        send.beginPacket();
                        send.writeLine(result);
                        send.flush();
                        send.endPacket();
                    }
                }
            } catch (IOException e) {
                YARP_DEBUG(Logger::get(),e.toString() + " <<< fallback exception");
                listen.endPacket();
            }
        }
    } catch (IOException e) {
        YARP_DEBUG(Logger::get(), e.toString() + " <<< major fallback exception");
        YARP_ERROR(Logger::get(), "cannot run multi-cast service for name server");
    }
}


void FallbackNameServer::close() {
    closed = true;
    listen.interrupt();
}






⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?