diff options
Diffstat (limited to 'libtransport/src/interfaces')
-rw-r--r-- | libtransport/src/interfaces/CMakeLists.txt | 2 | ||||
-rw-r--r-- | libtransport/src/interfaces/callbacks.cc | 2 | ||||
-rw-r--r-- | libtransport/src/interfaces/p2psecure_socket_consumer.cc | 2 | ||||
-rw-r--r-- | libtransport/src/interfaces/p2psecure_socket_producer.cc | 11 | ||||
-rw-r--r-- | libtransport/src/interfaces/portal.cc | 115 | ||||
-rw-r--r-- | libtransport/src/interfaces/socket_consumer.cc | 43 | ||||
-rw-r--r-- | libtransport/src/interfaces/socket_producer.cc | 44 | ||||
-rw-r--r-- | libtransport/src/interfaces/tls_rtc_socket_producer.cc | 2 | ||||
-rw-r--r-- | libtransport/src/interfaces/tls_rtc_socket_producer.h | 2 | ||||
-rw-r--r-- | libtransport/src/interfaces/tls_socket_consumer.cc | 2 | ||||
-rw-r--r-- | libtransport/src/interfaces/tls_socket_consumer.h | 2 | ||||
-rw-r--r-- | libtransport/src/interfaces/tls_socket_producer.cc | 2 | ||||
-rw-r--r-- | libtransport/src/interfaces/tls_socket_producer.h | 2 |
13 files changed, 149 insertions, 82 deletions
diff --git a/libtransport/src/interfaces/CMakeLists.txt b/libtransport/src/interfaces/CMakeLists.txt index 7ec024fec..0a0603ac8 100644 --- a/libtransport/src/interfaces/CMakeLists.txt +++ b/libtransport/src/interfaces/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (c) 2017-2019 Cisco and/or its affiliates. +# 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: diff --git a/libtransport/src/interfaces/callbacks.cc b/libtransport/src/interfaces/callbacks.cc index 6869ac3f7..776b4cbe7 100644 --- a/libtransport/src/interfaces/callbacks.cc +++ b/libtransport/src/interfaces/callbacks.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Cisco and/or its affiliates. + * 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: diff --git a/libtransport/src/interfaces/p2psecure_socket_consumer.cc b/libtransport/src/interfaces/p2psecure_socket_consumer.cc index e473a1e2e..e329a50f1 100644 --- a/libtransport/src/interfaces/p2psecure_socket_consumer.cc +++ b/libtransport/src/interfaces/p2psecure_socket_consumer.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Cisco and/or its affiliates. + * 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: diff --git a/libtransport/src/interfaces/p2psecure_socket_producer.cc b/libtransport/src/interfaces/p2psecure_socket_producer.cc index 10d8a1367..5f98302d0 100644 --- a/libtransport/src/interfaces/p2psecure_socket_producer.cc +++ b/libtransport/src/interfaces/p2psecure_socket_producer.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Cisco and/or its affiliates. + * 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: @@ -23,10 +23,11 @@ P2PSecureProducerSocket::P2PSecureProducerSocket() { socket_ = std::make_unique<implementation::P2PSecureProducerSocket>(this); } -P2PSecureProducerSocket::P2PSecureProducerSocket( - bool rtc, const std::shared_ptr<auth::Identity> &identity) { - socket_ = std::make_unique<implementation::P2PSecureProducerSocket>(this, rtc, - identity); +P2PSecureProducerSocket::P2PSecureProducerSocket(bool rtc, + std::string &keystore_path, + std::string &keystore_pwd) { + socket_ = std::make_unique<implementation::P2PSecureProducerSocket>( + this, rtc, keystore_path, keystore_pwd); } } // namespace interface diff --git a/libtransport/src/interfaces/portal.cc b/libtransport/src/interfaces/portal.cc index 9db0621f6..84634a282 100644 --- a/libtransport/src/interfaces/portal.cc +++ b/libtransport/src/interfaces/portal.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Cisco and/or its affiliates. + * 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: @@ -13,83 +13,106 @@ * limitations under the License. */ +#include <core/portal.h> #include <hicn/transport/interfaces/portal.h> -#include <implementation/socket.h> namespace transport { namespace interface { -Portal::Portal() { implementation_ = new core::Portal(); } +class Portal::Impl { + public: + Impl() : portal_(core::Portal::createShared()) {} + Impl(::utils::EventThread &worker) + : portal_(core::Portal::createShared(worker)) {} -Portal::Portal(asio::io_service &io_service) { - implementation_ = new core::Portal(io_service); -} + void registerTransportCallback(TransportCallback *transport_callback) { + portal_->registerTransportCallback(transport_callback); + } + + void connect(bool is_consumer) { portal_->connect(is_consumer); } + + bool interestIsPending(const core::Name &name) { + return portal_->interestIsPending(name); + } + + void sendInterest(core::Interest::Ptr &&interest, + OnContentObjectCallback &&on_content_object_callback, + OnInterestTimeoutCallback &&on_interest_timeout_callback) { + portal_->sendInterest(std::move(interest), + std::move(on_content_object_callback), + std::move(on_interest_timeout_callback)); + } + + void sendContentObject(core::ContentObject &content_object) { + portal_->sendContentObject(content_object); + } + + void killConnection() { portal_->killConnection(); } + + void clear() { portal_->clear(); } -Portal::~Portal() { delete reinterpret_cast<core::Portal *>(implementation_); } + utils::EventThread &getThread() { return portal_->getThread(); } -void Portal::setConsumerCallback(ConsumerCallback *consumer_callback) { - reinterpret_cast<core::Portal *>(implementation_) - ->setConsumerCallback(consumer_callback); + void registerRoute(core::Prefix &prefix) { portal_->registerRoute(prefix); } + + void sendMapme() { portal_->sendMapme(); } + + void setForwardingStrategy(core::Prefix &prefix, std::string &strategy) { + portal_->setForwardingStrategy(prefix, strategy); + } + + private: + std::shared_ptr<core::Portal> portal_; +}; + +Portal::Portal() { implementation_ = new Impl(); } + +Portal::Portal(::utils::EventThread &worker) { + implementation_ = new Impl(worker); } -void Portal::setProducerCallback(ProducerCallback *producer_callback) { - reinterpret_cast<core::Portal *>(implementation_) - ->setProducerCallback(producer_callback); +Portal::~Portal() { delete implementation_; } + +void Portal::registerTransportCallback(TransportCallback *transport_callback) { + implementation_->registerTransportCallback(transport_callback); } void Portal::connect(bool is_consumer) { - reinterpret_cast<core::Portal *>(implementation_)->connect(is_consumer); + implementation_->connect(is_consumer); } bool Portal::interestIsPending(const core::Name &name) { - return reinterpret_cast<core::Portal *>(implementation_) - ->interestIsPending(name); + return implementation_->interestIsPending(name); } void Portal::sendInterest( core::Interest::Ptr &&interest, OnContentObjectCallback &&on_content_object_callback, OnInterestTimeoutCallback &&on_interest_timeout_callback) { - reinterpret_cast<core::Portal *>(implementation_) - ->sendInterest(std::move(interest), std::move(on_content_object_callback), - std::move(on_interest_timeout_callback)); -} - -void Portal::bind(const BindConfig &config) { - reinterpret_cast<core::Portal *>(implementation_)->bind(config); -} - -void Portal::runEventsLoop() { - reinterpret_cast<core::Portal *>(implementation_)->runEventsLoop(); -} - -void Portal::runOneEvent() { - reinterpret_cast<core::Portal *>(implementation_)->runOneEvent(); + implementation_->sendInterest(std::move(interest), + std::move(on_content_object_callback), + std::move(on_interest_timeout_callback)); } void Portal::sendContentObject(core::ContentObject &content_object) { - reinterpret_cast<core::Portal *>(implementation_) - ->sendContentObject(content_object); + implementation_->sendContentObject(content_object); } -void Portal::stopEventsLoop() { - reinterpret_cast<core::Portal *>(implementation_)->stopEventsLoop(); -} +void Portal::killConnection() { implementation_->killConnection(); } -void Portal::killConnection() { - reinterpret_cast<core::Portal *>(implementation_)->killConnection(); -} +void Portal::clear() { implementation_->clear(); } -void Portal::clear() { - reinterpret_cast<core::Portal *>(implementation_)->clear(); -} +utils::EventThread &Portal::getThread() { return implementation_->getThread(); } -asio::io_service &Portal::getIoService() { - return reinterpret_cast<core::Portal *>(implementation_)->getIoService(); +void Portal::registerRoute(core::Prefix &prefix) { + implementation_->registerRoute(prefix); } -void Portal::registerRoute(core::Prefix &prefix) { - reinterpret_cast<core::Portal *>(implementation_)->registerRoute(prefix); +void Portal::sendMapme() { implementation_->sendMapme(); } + +void Portal::setForwardingStrategy(core::Prefix &prefix, + std::string &strategy) { + implementation_->setForwardingStrategy(prefix, strategy); } } // namespace interface diff --git a/libtransport/src/interfaces/socket_consumer.cc b/libtransport/src/interfaces/socket_consumer.cc index 4eee73cab..747dc0974 100644 --- a/libtransport/src/interfaces/socket_consumer.cc +++ b/libtransport/src/interfaces/socket_consumer.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Cisco and/or its affiliates. + * 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: @@ -23,23 +23,28 @@ ConsumerSocket::ConsumerSocket(int protocol) { socket_ = std::make_unique<implementation::ConsumerSocket>(this, protocol); } -ConsumerSocket::ConsumerSocket(int protocol, asio::io_service &io_service) { - socket_ = std::make_unique<implementation::ConsumerSocket>(this, protocol, - io_service); +ConsumerSocket::ConsumerSocket(int protocol, ::utils::EventThread &worker) { + socket_ = + std::make_unique<implementation::ConsumerSocket>(this, protocol, worker); } ConsumerSocket::ConsumerSocket() {} -ConsumerSocket::~ConsumerSocket() { socket_->stop(); } +ConsumerSocket::ConsumerSocket(ConsumerSocket &&other) noexcept + : socket_(std::move(other.socket_)) {} + +ConsumerSocket::~ConsumerSocket() { + if (socket_) { + socket_->stop(); + } +} void ConsumerSocket::connect() { socket_->connect(); } bool ConsumerSocket::isRunning() { return socket_->isRunning(); } -int ConsumerSocket::consume(const Name &name) { return socket_->consume(name); } - -int ConsumerSocket::asyncConsume(const Name &name) { - return socket_->asyncConsume(name); +int ConsumerSocket::consume(const Name &name, bool blocking) { + return socket_->consume(name); } void ConsumerSocket::stop() { socket_->stop(); } @@ -111,6 +116,16 @@ int ConsumerSocket::setSocketOption(int socket_option_key, return socket_->setSocketOption(socket_option_key, socket_option_value); } +int ConsumerSocket::setSocketOption(int socket_option_key, + StrategyCallback socket_option_value) { + return socket_->setSocketOption(socket_option_key, socket_option_value); +} + +int ConsumerSocket::setSocketOption(int socket_option_key, + Packet::Format socket_option_value) { + return socket_->setSocketOption(socket_option_key, socket_option_value); +} + int ConsumerSocket::getSocketOption(int socket_option_key, double &socket_option_value) { return socket_->getSocketOption(socket_option_key, socket_option_value); @@ -169,6 +184,16 @@ int ConsumerSocket::getSocketOption( return socket_->getSocketOption(socket_option_key, socket_option_value); } +int ConsumerSocket::getSocketOption(int socket_option_key, + StrategyCallback **socket_option_value) { + return socket_->getSocketOption(socket_option_key, socket_option_value); +} + +int ConsumerSocket::getSocketOption(int socket_option_key, + Packet::Format &socket_option_value) { + return socket_->getSocketOption(socket_option_key, socket_option_value); +} + } // namespace interface } // namespace transport diff --git a/libtransport/src/interfaces/socket_producer.cc b/libtransport/src/interfaces/socket_producer.cc index b04947dfd..10613c0e1 100644 --- a/libtransport/src/interfaces/socket_producer.cc +++ b/libtransport/src/interfaces/socket_producer.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Cisco and/or its affiliates. + * 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: @@ -33,14 +33,21 @@ ProducerSocket::ProducerSocket(int protocol) { socket_ = std::make_unique<implementation::ProducerSocket>(this, protocol); } -ProducerSocket::ProducerSocket(int protocol, asio::io_service &io_service) { - socket_ = std::make_unique<implementation::ProducerSocket>(this, protocol, - io_service); +ProducerSocket::ProducerSocket(int protocol, ::utils::EventThread &worker) { + socket_ = + std::make_unique<implementation::ProducerSocket>(this, protocol, worker); } +ProducerSocket::ProducerSocket(ProducerSocket &&other) noexcept + : socket_(std::move(other.socket_)) {} + ProducerSocket::ProducerSocket(bool) {} -ProducerSocket::~ProducerSocket() { socket_->stop(); } +ProducerSocket::~ProducerSocket() { + if (socket_) { + socket_->stop(); + } +} void ProducerSocket::connect() { socket_->connect(); } @@ -76,18 +83,14 @@ void ProducerSocket::produce(ContentObject &content_object) { return socket_->produce(content_object); } -void ProducerSocket::asyncProduce(Name content_name, - std::unique_ptr<utils::MemBuf> &&buffer, - bool is_last, uint32_t offset, - uint32_t **last_segment) { - return socket_->asyncProduce(content_name, std::move(buffer), is_last, offset, - last_segment); -} +void ProducerSocket::sendMapme() { return socket_->sendMapme(); } void ProducerSocket::registerPrefix(const Prefix &producer_namespace) { return socket_->registerPrefix(producer_namespace); } +void ProducerSocket::start() { return socket_->start(); } + void ProducerSocket::stop() { return socket_->stop(); } asio::io_service &ProducerSocket::getIoService() { @@ -95,6 +98,11 @@ asio::io_service &ProducerSocket::getIoService() { }; int ProducerSocket::setSocketOption(int socket_option_key, + Callback *socket_option_value) { + return socket_->setSocketOption(socket_option_key, socket_option_value); +} + +int ProducerSocket::setSocketOption(int socket_option_key, uint32_t socket_option_value) { return socket_->setSocketOption(socket_option_key, socket_option_value); } @@ -140,9 +148,14 @@ int ProducerSocket::setSocketOption( return socket_->setSocketOption(socket_option_key, socket_option_value); } +int ProducerSocket::setSocketOption(int socket_option_key, + Packet::Format socket_option_value) { + return socket_->setSocketOption(socket_option_key, socket_option_value); +} + int ProducerSocket::getSocketOption(int socket_option_key, uint32_t &socket_option_value) { - return socket_->setSocketOption(socket_option_key, socket_option_value); + return socket_->getSocketOption(socket_option_key, socket_option_value); } int ProducerSocket::setSocketOption(int socket_option_key, @@ -181,6 +194,11 @@ int ProducerSocket::getSocketOption( return socket_->getSocketOption(socket_option_key, socket_option_value); } +int ProducerSocket::getSocketOption(int socket_option_key, + Packet::Format &socket_option_value) { + return socket_->getSocketOption(socket_option_key, socket_option_value); +} + } // namespace interface } // namespace transport diff --git a/libtransport/src/interfaces/tls_rtc_socket_producer.cc b/libtransport/src/interfaces/tls_rtc_socket_producer.cc index 7326fcbcb..6bf1b011c 100644 --- a/libtransport/src/interfaces/tls_rtc_socket_producer.cc +++ b/libtransport/src/interfaces/tls_rtc_socket_producer.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Cisco and/or its affiliates. + * 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: diff --git a/libtransport/src/interfaces/tls_rtc_socket_producer.h b/libtransport/src/interfaces/tls_rtc_socket_producer.h index 3ea84095b..b8b6ec298 100644 --- a/libtransport/src/interfaces/tls_rtc_socket_producer.h +++ b/libtransport/src/interfaces/tls_rtc_socket_producer.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Cisco and/or its affiliates. + * 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: diff --git a/libtransport/src/interfaces/tls_socket_consumer.cc b/libtransport/src/interfaces/tls_socket_consumer.cc index 6c1c535b5..24060d1d8 100644 --- a/libtransport/src/interfaces/tls_socket_consumer.cc +++ b/libtransport/src/interfaces/tls_socket_consumer.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Cisco and/or its affiliates. + * 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: diff --git a/libtransport/src/interfaces/tls_socket_consumer.h b/libtransport/src/interfaces/tls_socket_consumer.h index 845a9181f..242dc91a5 100644 --- a/libtransport/src/interfaces/tls_socket_consumer.h +++ b/libtransport/src/interfaces/tls_socket_consumer.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Cisco and/or its affiliates. + * 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: diff --git a/libtransport/src/interfaces/tls_socket_producer.cc b/libtransport/src/interfaces/tls_socket_producer.cc index 037702f72..b2b9e723a 100644 --- a/libtransport/src/interfaces/tls_socket_producer.cc +++ b/libtransport/src/interfaces/tls_socket_producer.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Cisco and/or its affiliates. + * 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: diff --git a/libtransport/src/interfaces/tls_socket_producer.h b/libtransport/src/interfaces/tls_socket_producer.h index 3c662176a..9b31cb483 100644 --- a/libtransport/src/interfaces/tls_socket_producer.h +++ b/libtransport/src/interfaces/tls_socket_producer.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Cisco and/or its affiliates. + * 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: |