aboutsummaryrefslogtreecommitdiffstats
path: root/libtransport/src/interfaces
diff options
context:
space:
mode:
Diffstat (limited to 'libtransport/src/interfaces')
-rw-r--r--libtransport/src/interfaces/CMakeLists.txt2
-rw-r--r--libtransport/src/interfaces/callbacks.cc2
-rw-r--r--libtransport/src/interfaces/p2psecure_socket_consumer.cc2
-rw-r--r--libtransport/src/interfaces/p2psecure_socket_producer.cc11
-rw-r--r--libtransport/src/interfaces/portal.cc115
-rw-r--r--libtransport/src/interfaces/socket_consumer.cc43
-rw-r--r--libtransport/src/interfaces/socket_producer.cc44
-rw-r--r--libtransport/src/interfaces/tls_rtc_socket_producer.cc2
-rw-r--r--libtransport/src/interfaces/tls_rtc_socket_producer.h2
-rw-r--r--libtransport/src/interfaces/tls_socket_consumer.cc2
-rw-r--r--libtransport/src/interfaces/tls_socket_consumer.h2
-rw-r--r--libtransport/src/interfaces/tls_socket_producer.cc2
-rw-r--r--libtransport/src/interfaces/tls_socket_producer.h2
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: