aboutsummaryrefslogtreecommitdiffstats
path: root/libtransport/src/hicn/transport/core/portal.h
diff options
context:
space:
mode:
Diffstat (limited to 'libtransport/src/hicn/transport/core/portal.h')
-rw-r--r--libtransport/src/hicn/transport/core/portal.h33
1 files changed, 17 insertions, 16 deletions
diff --git a/libtransport/src/hicn/transport/core/portal.h b/libtransport/src/hicn/transport/core/portal.h
index 0932b56c6..7efbc2009 100644
--- a/libtransport/src/hicn/transport/core/portal.h
+++ b/libtransport/src/hicn/transport/core/portal.h
@@ -22,7 +22,7 @@
#include <hicn/transport/core/name.h>
#include <hicn/transport/core/pending_interest.h>
#include <hicn/transport/core/prefix.h>
-#include <hicn/transport/core/socket_connector.h>
+#include <hicn/transport/core/udp_socket_connector.h>
#include <hicn/transport/errors/errors.h>
#include <hicn/transport/portability/portability.h>
#include <hicn/transport/utils/log.h>
@@ -222,22 +222,25 @@ class Portal {
}
TRANSPORT_ALWAYS_INLINE void stopEventsLoop(bool kill_connection = false) {
- for (auto &pend_interest : pending_interest_hash_table_) {
- pend_interest.second->cancelTimer();
- }
-
- clear();
-
if (kill_connection) {
- connector_.close();
+ forwarder_interface_.closeConnection();
}
- io_service_.post([this]() { io_service_.stop(); });
+ io_service_.post([this]() {
+ clear();
+ io_service_.stop();
+ });
}
TRANSPORT_ALWAYS_INLINE void killConnection() { connector_.close(); }
- TRANSPORT_ALWAYS_INLINE void clear() { pending_interest_hash_table_.clear(); }
+ TRANSPORT_ALWAYS_INLINE void clear() {
+ for (auto &pend_interest : pending_interest_hash_table_) {
+ pend_interest.second->cancelTimer();
+ }
+
+ pending_interest_hash_table_.clear();
+ }
TRANSPORT_ALWAYS_INLINE asio::io_service &getIoService() {
return io_service_;
@@ -260,17 +263,16 @@ class Portal {
return;
}
- if (packet_buffer->data()[0] == ForwarderInt::ack_code) {
- // Hicn forwarder message
+ if (TRANSPORT_EXPECT_FALSE(
+ ForwarderInt::isControlMessage(packet_buffer->data()))) {
processControlMessage(std::move(packet_buffer));
return;
}
- bool is_interest = Packet::isInterest(packet_buffer->data());
Packet::Format format = Packet::getFormatFromBuffer(packet_buffer->data());
if (TRANSPORT_EXPECT_TRUE(_is_tcp(format))) {
- if (!is_interest) {
+ if (!Packet::isInterest(packet_buffer->data())) {
processContentObject(
ContentObject::Ptr(new ContentObject(std::move(packet_buffer))));
} else {
@@ -329,8 +331,7 @@ class Portal {
TRANSPORT_ALWAYS_INLINE void processControlMessage(
Packet::MemBufPtr &&packet_buffer) {
- // Control message as response to the route set by a producer.
- // Do nothing
+ forwarder_interface_.processControlMessageReply(std::move(packet_buffer));
}
private: