diff options
author | Mauro Sardara <msardara@cisco.com> | 2020-02-21 11:52:28 +0100 |
---|---|---|
committer | Mauro Sardara <msardara@cisco.com> | 2020-02-26 13:19:16 +0100 |
commit | f4433f28b509a9f67ca85d79000ccf9c2f4b7a24 (patch) | |
tree | 0f754bc9d8222f3ace11849165753acd85be3b38 /libtransport/src/hicn/transport/utils/content_store.cc | |
parent | 0e7669445b6be1163189521eabed7dd0124043c8 (diff) |
[HICN-534] Major rework on libtransport organization
Change-Id: I361b83a18b4fd59be136d5f0817fc28e17e89884
Signed-off-by: Mauro Sardara <msardara@cisco.com>
Diffstat (limited to 'libtransport/src/hicn/transport/utils/content_store.cc')
-rw-r--r-- | libtransport/src/hicn/transport/utils/content_store.cc | 122 |
1 files changed, 0 insertions, 122 deletions
diff --git a/libtransport/src/hicn/transport/utils/content_store.cc b/libtransport/src/hicn/transport/utils/content_store.cc deleted file mode 100644 index ba13bef41..000000000 --- a/libtransport/src/hicn/transport/utils/content_store.cc +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright (c) 2017-2019 Cisco and/or its affiliates. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at: - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <hicn/transport/core/content_object.h> -#include <hicn/transport/core/interest.h> -#include <hicn/transport/core/name.h> -#include <hicn/transport/utils/content_store.h> - -namespace utils { - -ContentStore::ContentStore(std::size_t max_packets) - : max_content_store_size_(max_packets) {} - -ContentStore::~ContentStore() {} - -void ContentStore::insert( - const std::shared_ptr<ContentObject> &content_object) { - if (max_content_store_size_ == 0) { - return; - } - - utils::SpinLock::Acquire locked(cs_mutex_); - - if (TRANSPORT_EXPECT_FALSE(content_store_hash_table_.size() != - fifo_list_.size())) { - TRANSPORT_LOGW("Inconsistent size!!!!"); - TRANSPORT_LOGW("Hash Table: %zu |||| FIFO List: %zu", - content_store_hash_table_.size(), fifo_list_.size()); - } - - if (content_store_hash_table_.size() >= max_content_store_size_) { - content_store_hash_table_.erase(fifo_list_.back()); - fifo_list_.pop_back(); - } - - // Insert new item - auto it = content_store_hash_table_.find(content_object->getName()); - if (it != content_store_hash_table_.end()) { - fifo_list_.erase(it->second.second); - content_store_hash_table_.erase(content_object->getName()); - } - - fifo_list_.push_front(std::cref(content_object->getName())); - auto pos = fifo_list_.begin(); - content_store_hash_table_[content_object->getName()] = ContentStoreEntry( - ObjectTimeEntry(content_object, std::chrono::steady_clock::now()), pos); -} - -const std::shared_ptr<ContentObject> ContentStore::find( - const Interest &interest) { - utils::SpinLock::Acquire locked(cs_mutex_); - - std::shared_ptr<ContentObject> ret = empty_reference_; - auto it = content_store_hash_table_.find(interest.getName()); - if (it != content_store_hash_table_.end()) { - - auto content_lifetime = it->second.first.first->getLifetime(); - auto time_passed_since_creation = - std::chrono::duration_cast<std::chrono::milliseconds>( - std::chrono::steady_clock::now() - it->second.first.second) - .count(); - - if (time_passed_since_creation > content_lifetime) { - fifo_list_.erase(it->second.second); - content_store_hash_table_.erase(it); - } - else { - ret = it->second.first.first; - } - } - - return ret; -} - -void ContentStore::erase(const Name &exact_name) { - utils::SpinLock::Acquire locked(cs_mutex_); - auto it = content_store_hash_table_.find(exact_name); - fifo_list_.erase(it->second.second); - content_store_hash_table_.erase(exact_name); -} - -void ContentStore::setLimit(size_t max_packets) { - utils::SpinLock::Acquire locked(cs_mutex_); - max_content_store_size_ = max_packets; -} - -std::size_t ContentStore::getLimit() const { - utils::SpinLock::Acquire locked(cs_mutex_); - return max_content_store_size_; -} - -std::size_t ContentStore::size() const { - utils::SpinLock::Acquire locked(cs_mutex_); - return content_store_hash_table_.size(); -} - -void ContentStore::printContent() { - for (auto &item : content_store_hash_table_) { - if (item.second.first.first->getPayloadType() == - transport::core::PayloadType::MANIFEST) { - TRANSPORT_LOGI("Manifest: %s", - item.second.first.first->getName().toString().c_str()); - } else { - TRANSPORT_LOGI("Data Packet: %s", - item.second.first.first->getName().toString().c_str()); - } - } -} - -} // end namespace utils
\ No newline at end of file |