aboutsummaryrefslogtreecommitdiffstats
path: root/libtransport/src/hicn/transport/protocols/protocol.h
diff options
context:
space:
mode:
Diffstat (limited to 'libtransport/src/hicn/transport/protocols/protocol.h')
-rw-r--r--libtransport/src/hicn/transport/protocols/protocol.h37
1 files changed, 14 insertions, 23 deletions
diff --git a/libtransport/src/hicn/transport/protocols/protocol.h b/libtransport/src/hicn/transport/protocols/protocol.h
index 56c57e025..6a3b23753 100644
--- a/libtransport/src/hicn/transport/protocols/protocol.h
+++ b/libtransport/src/hicn/transport/protocols/protocol.h
@@ -16,8 +16,9 @@
#pragma once
#include <hicn/transport/interfaces/socket.h>
+#include <hicn/transport/protocols/packet_manager.h>
+#include <hicn/transport/protocols/statistics.h>
#include <hicn/transport/utils/object_pool.h>
-#include <hicn/transport/utils/sharable_vector.h>
namespace transport {
@@ -31,39 +32,28 @@ class TransportProtocolCallback {
virtual void onTimeout(const core::Interest &interest) = 0;
};
-class TransportProtocol : public interface::BasePortal::ConsumerCallback {
+class TransportProtocol : public interface::BasePortal::ConsumerCallback,
+ public PacketManager<Interest> {
static constexpr std::size_t interest_pool_size = 4096;
public:
- TransportProtocol(interface::BaseSocket *icn_socket);
+ TransportProtocol(interface::ConsumerSocket *icn_socket);
- virtual ~TransportProtocol();
+ virtual ~TransportProtocol() { stop(); };
- void updatePortal();
+ TRANSPORT_ALWAYS_INLINE bool isRunning() { return is_running_; }
- bool isRunning();
+ virtual int start();
- virtual void start(utils::SharableVector<uint8_t> &content_buffer) = 0;
+ virtual void stop();
- virtual void stop() = 0;
+ virtual void resume();
- virtual void resume() = 0;
+ virtual void scheduleNextInterests() = 0;
protected:
- virtual void increasePoolSize(std::size_t size = interest_pool_size);
-
- TRANSPORT_ALWAYS_INLINE Interest::Ptr getInterest() {
- auto result = interest_pool_.get();
-
- while (TRANSPORT_EXPECT_FALSE(!result.first)) {
- // Add packets to the pool
- increasePoolSize();
- result = interest_pool_.get();
- }
-
- return std::move(result.second);
- }
// Consumer Callback
+ virtual void reset() = 0;
virtual void onContentObject(Interest::Ptr &&i, ContentObject::Ptr &&c) = 0;
virtual void onTimeout(Interest::Ptr &&i) = 0;
@@ -71,7 +61,8 @@ class TransportProtocol : public interface::BasePortal::ConsumerCallback {
interface::ConsumerSocket *socket_;
std::shared_ptr<interface::BasePortal> portal_;
volatile bool is_running_;
- utils::ObjectPool<Interest> interest_pool_;
+ TransportStatistics stats_;
+ std::shared_ptr<std::vector<uint8_t>> content_buffer_;
};
} // end namespace protocol