コード例 #1
0
ファイル: rib-manager.cpp プロジェクト: MobinRanjbar/NFD
void
RibManager::sendErrorResponse(uint32_t code, const std::string& error,
                              const shared_ptr<const Interest>& request)
{
  NFD_LOG_ERROR("NFD returned an error: " << error << " (code: " << code << ")");

  if (!static_cast<bool>(request)) {
    return;
  }

  ControlResponse response;

  if (code == 404) {
    response.setCode(code);
    response.setText(error);
  }
  else {
    response.setCode(533);
    std::ostringstream os;
    os << "Failure to update NFD " << "(NFD Error: " << code << " " << error << ")";
    response.setText(os.str());
  }

  if (static_cast<bool>(request)) {
    sendResponse(request->getName(), response);
  }
}
コード例 #2
0
ファイル: limited-io.cpp プロジェクト: WeiqiJust/NDN-total
LimitedIo::StopReason
LimitedIo::run(int nOpsLimit, const time::nanoseconds& timeLimit)
{
    BOOST_ASSERT(!m_isRunning);

    if (nOpsLimit <= 0) {
        return EXCEED_OPS;
    }

    m_isRunning = true;

    m_reason = NO_WORK;
    m_nOpsRemaining = nOpsLimit;
    if (timeLimit >= time::nanoseconds::zero()) {
        m_timeout = scheduler::schedule(timeLimit, bind(&LimitedIo::afterTimeout, this));
    }

    try {
        getGlobalIoService().run();
    }
    catch (std::exception& ex) {
        m_reason = EXCEPTION;
        NFD_LOG_ERROR("g_io.run() exception: " << ex.what());
        m_lastException = ex;
    }

    getGlobalIoService().reset();
    scheduler::cancel(m_timeout);
    m_isRunning = false;
    return m_reason;
}
コード例 #3
0
void
FaceManager::createFace(const Interest& request,
                        ControlParameters& parameters)
{
  const Name& requestName = request.getName();
  ndn::nfd::FaceCreateCommand command;

  if (!validateParameters(command, parameters))
    {
      sendResponse(requestName, 400, "Malformed command");
      NFD_LOG_TRACE("invalid control parameters URI");
      return;
    }

  FaceUri uri;
  if (!uri.parse(parameters.getUri()))
    {
      sendResponse(requestName, 400, "Malformed command");
      NFD_LOG_TRACE("failed to parse URI");
      return;
    }

  if (!uri.isCanonical())
    {
      sendResponse(requestName, 400, "Non-canonical URI");
      NFD_LOG_TRACE("received non-canonical URI");
      return;
    }

  FactoryMap::iterator factory = m_factories.find(uri.getScheme());
  if (factory == m_factories.end())
    {
      sendResponse(requestName, 501, "Unsupported protocol");
      return;
    }

  try
    {
      factory->second->createFace(uri,
                                  bind(&FaceManager::onCreated,
                                       this, requestName, parameters, _1),
                                  bind(&FaceManager::onConnectFailed,
                                       this, requestName, _1));
    }
  catch (const std::runtime_error& error)
    {
      std::string errorMessage = "NFD error: ";
      errorMessage += error.what();

      NFD_LOG_ERROR(errorMessage);
      sendResponse(requestName, 500, errorMessage);
    }
  catch (const std::logic_error& error)
    {
      std::string errorMessage = "NFD error: ";
      errorMessage += error.what();

      NFD_LOG_ERROR(errorMessage);
      sendResponse(requestName, 500, errorMessage);
    }
}