77 lines
2.6 KiB
C++
77 lines
2.6 KiB
C++
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
|
|
/**
|
|
* Copyright (C) 2014 Named Data Networking Project
|
|
* See COPYING for copyright and distribution information.
|
|
*/
|
|
#include "face-status-publisher.hpp"
|
|
|
|
namespace nfd {
|
|
|
|
NFD_LOG_INIT("FaceStatusPublisher");
|
|
|
|
|
|
FaceStatusPublisher::FaceStatusPublisher(const FaceTable& faceTable,
|
|
shared_ptr<AppFace> face,
|
|
const Name& prefix)
|
|
: SegmentPublisher(face, prefix)
|
|
, m_faceTable(faceTable)
|
|
{
|
|
|
|
}
|
|
|
|
|
|
FaceStatusPublisher::~FaceStatusPublisher()
|
|
{
|
|
|
|
}
|
|
|
|
size_t
|
|
FaceStatusPublisher::generate(ndn::EncodingBuffer& outBuffer)
|
|
{
|
|
size_t totalLength = 0;
|
|
|
|
for (FaceTable::const_iterator i = m_faceTable.begin();
|
|
i != m_faceTable.end();
|
|
++i)
|
|
{
|
|
const shared_ptr<Face>& face = *i;
|
|
const FaceCounters& counters = face->getCounters();
|
|
const std::string uri = face->getUri().toString();
|
|
|
|
size_t statusLength = 0;
|
|
|
|
statusLength += prependNonNegativeIntegerBlock(outBuffer,
|
|
ndn::tlv::nfd::TotalOutgoingDataCounter,
|
|
counters.getOutData());
|
|
|
|
statusLength += prependNonNegativeIntegerBlock(outBuffer,
|
|
ndn::tlv::nfd::TotalOutgoingInterestCounter,
|
|
counters.getOutInterest());
|
|
|
|
statusLength += prependNonNegativeIntegerBlock(outBuffer,
|
|
ndn::tlv::nfd::TotalIncomingDataCounter,
|
|
counters.getInData());
|
|
|
|
statusLength += prependNonNegativeIntegerBlock(outBuffer,
|
|
ndn::tlv::nfd::TotalIncomingInterestCounter,
|
|
counters.getInInterest());
|
|
|
|
statusLength += prependByteArrayBlock(outBuffer,
|
|
ndn::tlv::nfd::Uri,
|
|
reinterpret_cast<const uint8_t*>(uri.c_str()),
|
|
uri.size());
|
|
|
|
statusLength += prependNonNegativeIntegerBlock(outBuffer,
|
|
ndn::tlv::nfd::FaceId,
|
|
face->getId());
|
|
|
|
statusLength += outBuffer.prependVarNumber(statusLength);
|
|
statusLength += outBuffer.prependVarNumber(ndn::tlv::nfd::FaceStatus);
|
|
|
|
totalLength += statusLength;
|
|
}
|
|
return totalLength;
|
|
}
|
|
|
|
} // namespace nfd
|