diff options
-rw-r--r-- | libtransport/src/io_modules/CMakeLists.txt | 1 | ||||
-rw-r--r-- | libtransport/src/io_modules/loopback/CMakeLists.txt | 30 | ||||
-rw-r--r-- | libtransport/src/io_modules/loopback/local_face.cc | 74 | ||||
-rw-r--r-- | libtransport/src/io_modules/loopback/local_face.h | 53 | ||||
-rw-r--r-- | libtransport/src/io_modules/loopback/loopback_module.cc | 89 | ||||
-rw-r--r-- | libtransport/src/io_modules/loopback/loopback_module.h | 72 |
6 files changed, 0 insertions, 319 deletions
diff --git a/libtransport/src/io_modules/CMakeLists.txt b/libtransport/src/io_modules/CMakeLists.txt index fcf69cd42..ce7ec221d 100644 --- a/libtransport/src/io_modules/CMakeLists.txt +++ b/libtransport/src/io_modules/CMakeLists.txt @@ -70,7 +70,6 @@ else() # Compile submodules ############################################################## add_subdirectory(hicn-light) - add_subdirectory(loopback) add_subdirectory(forwarder) if (__vpp__) diff --git a/libtransport/src/io_modules/loopback/CMakeLists.txt b/libtransport/src/io_modules/loopback/CMakeLists.txt deleted file mode 100644 index 817effb3b..000000000 --- a/libtransport/src/io_modules/loopback/CMakeLists.txt +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright (c) 2021-2022 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. - -list(APPEND MODULE_HEADER_FILES - ${CMAKE_CURRENT_SOURCE_DIR}/loopback_module.h -) - -list(APPEND MODULE_SOURCE_FILES - ${CMAKE_CURRENT_SOURCE_DIR}/loopback_module.cc -) - -build_module(loopback_module - SOURCES ${MODULE_SOURCE_FILES} - DEPENDS ${DEPENDENCIES} - COMPONENT ${LIBTRANSPORT_COMPONENT} - INCLUDE_DIRS - PRIVATE ${LIBTRANSPORT_INTERNAL_INCLUDE_DIRS} ${Libhicn_INCLUDE_DIRS} - DEFINITIONS ${COMPILER_DEFINITIONS} - COMPILE_OPTIONS ${COMPILER_OPTIONS} -) diff --git a/libtransport/src/io_modules/loopback/local_face.cc b/libtransport/src/io_modules/loopback/local_face.cc deleted file mode 100644 index 30a46c93b..000000000 --- a/libtransport/src/io_modules/loopback/local_face.cc +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright (c) 2021-2022 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 <glog/logging.h> -#include <hicn/transport/core/asio_wrapper.h> -#include <hicn/transport/core/content_object.h> -#include <hicn/transport/core/interest.h> -#include <io_modules/loopback/local_face.h> - -namespace transport { -namespace core { - -Face::Face(Connector::PacketReceivedCallback &&receive_callback, - asio::io_service &io_service, const std::string &app_name) - : receive_callback_(std::move(receive_callback)), - io_service_(io_service), - name_(app_name) {} - -Face::Face(const Face &other) - : receive_callback_(other.receive_callback_), - io_service_(other.io_service_), - name_(other.name_) {} - -Face::Face(Face &&other) - : receive_callback_(std::move(other.receive_callback_)), - io_service_(other.io_service_), - name_(std::move(other.name_)) {} - -Face &Face::operator=(const Face &other) { - receive_callback_ = other.receive_callback_; - io_service_ = other.io_service_; - name_ = other.name_; - - return *this; -} - -Face &Face::operator=(Face &&other) { - receive_callback_ = std::move(other.receive_callback_); - io_service_ = std::move(other.io_service_); - name_ = std::move(other.name_); - - return *this; -} - -void Face::onPacket(const Packet &packet) { - DLOG_IF(INFO, VLOG_IS_ON(3)) << "Sending content to local socket."; - - switch (packet->getFormat()) { - case HICN_PACKET_FORMAT_INTEREST: - rescheduleOnIoService<Interest>(packet); - break; - case HICN_PACKET_FORMAT_DATA: - rescheduleOnIoService<ContentObject>(packet); - break; - default: - /* Should not occur */ - break; - } -} - -} // namespace core -} // namespace transport diff --git a/libtransport/src/io_modules/loopback/local_face.h b/libtransport/src/io_modules/loopback/local_face.h deleted file mode 100644 index f54f38afa..000000000 --- a/libtransport/src/io_modules/loopback/local_face.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#pragma once - -#include <hicn/transport/core/asio_wrapper.h> -#include <hicn/transport/core/connector.h> -#include <hicn/transport/core/global_object_pool.h> -#include <hicn/transport/utils/move_wrapper.h> - -namespace transport { -namespace core { - -class Face { - public: - Face(Connector::PacketReceivedCallback &&receive_callback, - asio::io_service &io_service, const std::string &app_name); - - Face(const Face &other); - Face(Face &&other); - void onPacket(const Packet &packet); - Face &operator=(Face &&other); - Face &operator=(const Face &other); - - private: - template <typename T> - void rescheduleOnIoService(const Packet &packet) { - auto p = core::PacketManager<T>::getInstance().getPacket(); - p->replace(packet.data(), packet.length()); - io_service_.get().post([this, p]() mutable { - receive_callback_(nullptr, *p, make_error_code(0)); - }); - } - - Connector::PacketReceivedCallback receive_callback_; - std::reference_wrapper<asio::io_service> io_service_; - std::string name_; -}; - -} // namespace core -} // namespace transport diff --git a/libtransport/src/io_modules/loopback/loopback_module.cc b/libtransport/src/io_modules/loopback/loopback_module.cc deleted file mode 100644 index a7f30eb26..000000000 --- a/libtransport/src/io_modules/loopback/loopback_module.cc +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (c) 2021 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 <glog/logging.h> -#include <hicn/transport/errors/not_implemented_exception.h> -#include <io_modules/loopback/loopback_module.h> - -namespace transport { - -namespace core { - -std::vector<std::unique_ptr<LocalConnector>> LoopbackModule::local_faces_; -std::atomic<uint32_t> LoopbackModule::global_counter_(0); - -LoopbackModule::LoopbackModule() : IoModule(), local_id_(~0) {} - -LoopbackModule::~LoopbackModule() {} - -void LoopbackModule::connect(bool is_consumer) {} - -bool LoopbackModule::isConnected() { return true; } - -void LoopbackModule::send(Packet &packet) { - IoModule::send(packet); - - DLOG_IF(INFO, VLOG_IS_ON(3)) << "LoopbackModule: sending from " << local_id_ - << " to " << 1 - local_id_; - - local_faces_.at(1 - local_id_)->send(packet); -} - -void LoopbackModule::send(const utils::MemBuf::Ptr &buffer) { - // not supported - throw errors::NotImplementedException(); -} - -void LoopbackModule::registerRoute(const Prefix &prefix) { - // For the moment we route packets from one socket to the other. - // Next step will be to introduce a FIB - return; -} - -void LoopbackModule::closeConnection() { - local_faces_.erase(local_faces_.begin() + local_id_); -} - -void LoopbackModule::init(Connector::PacketReceivedCallback &&receive_callback, - Connector::PacketSentCallback &&sent_callback, - Connector::OnCloseCallback &&close_callback, - Connector::OnReconnectCallback &&reconnect_callback, - asio::io_service &io_service, - const std::string &app_name) { - if (local_id_ == uint32_t(~0) && global_counter_ < 2) { - local_id_ = global_counter_++; - local_faces_.emplace( - local_faces_.begin() + local_id_, - new LocalConnector(io_service, std::move(receive_callback), - std::move(sent_callback), std::move(close_callback), - std::move(reconnect_callback))); - } -} - -void LoopbackModule::processControlMessageReply(utils::MemBuf &packet_buffer) { - return; -} - -std::uint32_t LoopbackModule::getMtu() { return interface_mtu; } - -bool LoopbackModule::isControlMessage(utils::MemBuf &packet_buffer) { - return false; -} - -extern "C" IoModule *create_module(void) { return new LoopbackModule(); } - -} // namespace core - -} // namespace transport diff --git a/libtransport/src/io_modules/loopback/loopback_module.h b/libtransport/src/io_modules/loopback/loopback_module.h deleted file mode 100644 index d51f237f4..000000000 --- a/libtransport/src/io_modules/loopback/loopback_module.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#pragma once - -#include <core/local_connector.h> -#include <hicn/transport/core/io_module.h> -#include <hicn/transport/core/prefix.h> - -#include <atomic> - -namespace transport { - -namespace core { - -class LoopbackModule : public IoModule { - static constexpr std::uint16_t interface_mtu = 1500; - - public: - LoopbackModule(); - - ~LoopbackModule(); - - void connect(bool is_consumer) override; - - void send(Packet &packet) override; - void send(const utils::MemBuf::Ptr &buffer) override; - - bool isConnected() override; - - void init(Connector::PacketReceivedCallback &&receive_callback, - Connector::PacketSentCallback &&sent_callback, - Connector::OnCloseCallback &&close_callback, - Connector::OnReconnectCallback &&reconnect_callback, - asio::io_service &io_service, - const std::string &app_name = "Libtransport") override; - - void registerRoute(const Prefix &prefix) override; - - std::uint32_t getMtu() override; - - bool isControlMessage(utils::MemBuf &packet_buffer) override; - - void processControlMessageReply(utils::MemBuf &packet_buffer) override; - - void closeConnection() override; - - private: - static std::vector<std::unique_ptr<LocalConnector>> local_faces_; - static std::atomic<uint32_t> global_counter_; - - private: - uint32_t local_id_; -}; - -extern "C" IoModule *create_module(void); - -} // namespace core - -} // namespace transport |