10 if (index >= numFaces_) {
13 return incomingFaces_[index];
17 for (
size_t i = 0; i < numFaces_; ++i) {
18 if (incomingFaces_[i] == faceId) {
32 incomingFaces_[numFaces_++] = faceId;
42 const uint32_t nonce = interest.
nonce().value_or(0);
45 for (
auto& entry : entries_) {
46 if (entry.inUse_ && entry.name_.equals(name)) {
48 if (entry.nonce_ == nonce) {
50 if (outEntry !=
nullptr) {
53 return PitInsertResult::Duplicate;
59 if (outEntry !=
nullptr) {
62 return PitInsertResult::Aggregated;
67 for (
auto& entry : entries_) {
73 entry.addFace(incomingFace);
77 if (outEntry !=
nullptr) {
80 return PitInsertResult::New;
85 return PitInsertResult::Full;
89 for (
auto& entry : entries_) {
90 if (entry.inUse_ && entry.name_.equals(name)) {
98 for (
const auto& entry : entries_) {
99 if (entry.inUse_ && entry.name_.equals(name)) {
107 if (entry !=
nullptr && entry->inUse_) {
108 entry->inUse_ =
false;
109 entry->numFaces_ = 0;
116 if (entry !=
nullptr) {
122 for (
auto& entry : entries_) {
123 if (entry.inUse_ && entry.expireTime_ <= now) {
127 entry.inUse_ =
false;
uint32_t lifetime() const
Get the InterestLifetime.
std::optional< uint32_t > nonce() const
Get the Nonce.
const Name & name() const
Get the Name (const reference)
bool hasFace(FaceId faceId) const
Check if a given Face is registered.
FaceId face(size_t index) const
Get the Face ID at a given index.
bool addFace(FaceId faceId)
Add a Face.
PitInsertResult insert(const Interest &interest, FaceId incomingFace, PitEntry **outEntry=nullptr)
Insert an Interest.
void processTimeouts(TimeMs now, TimeoutCallback callback=nullptr)
Process timed-out entries.
std::function< void(const PitEntry &)> TimeoutCallback
Timeout callback.
PitEntry * find(const Name &name)
Find an entry by Name.
void remove(PitEntry *entry)
Remove an entry.
TimeMs currentTimeMs()
Get current time (milliseconds)
uint64_t TimeMs
Timestamp type (milliseconds)
constexpr FaceId FACE_ID_INVALID
Invalid Face ID.
uint16_t FaceId
Face identifier.
Pending Interest Table (PIT)
PitInsertResult
PIT insertion result.
constexpr size_t PIT_MAX_FACES_PER_ENTRY
Maximum number of Faces per PIT entry.
uint32_t insertions
Number of new insertions.
uint32_t duplicates
Number of duplicate detections (loops)
uint32_t timeouts
Number of timeouts.
uint32_t aggregations
Number of aggregations.