diff options
author | Mauro <you@example.com> | 2021-06-30 07:57:22 +0000 |
---|---|---|
committer | Mauro Sardara <msardara@cisco.com> | 2021-07-06 16:16:04 +0000 |
commit | 08233d44a6cfde878d7e10bca38ae935ed1c8fd5 (patch) | |
tree | 7ecc534d55bdc7e8dd15ecab084720910bcdf4d9 /libtransport/src/utils/suffix_strategy.h | |
parent | 147ba39bed26887f5eba84757e2463ab8e370a9a (diff) |
[HICN-713] Transport Library Major Refactoring 2
Co-authored-by: Luca Muscariello <muscariello@ieee.org>
Co-authored-by: Michele Papalini <micpapal@cisco.com>
Co-authored-by: Olivier Roques <oroques+fdio@cisco.com>
Co-authored-by: Giulio Grassi <gigrassi@cisco.com>
Signed-off-by: Mauro Sardara <msardara@cisco.com>
Change-Id: I5b2c667bad66feb45abdb5effe22ed0f6c85d1c2
Diffstat (limited to 'libtransport/src/utils/suffix_strategy.h')
-rw-r--r-- | libtransport/src/utils/suffix_strategy.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/libtransport/src/utils/suffix_strategy.h b/libtransport/src/utils/suffix_strategy.h index 6c4dd2785..ee016308e 100644 --- a/libtransport/src/utils/suffix_strategy.h +++ b/libtransport/src/utils/suffix_strategy.h @@ -33,6 +33,8 @@ class SuffixStrategy { virtual ~SuffixStrategy() = default; + virtual uint32_t checkNextSuffix() = 0; + virtual uint32_t getNextSuffix() = 0; virtual uint32_t getFinalSuffix() { return final_suffix_; } @@ -43,8 +45,12 @@ class SuffixStrategy { } } + virtual uint32_t checkNextManifestSuffix() = 0; + virtual uint32_t getNextManifestSuffix() = 0; + virtual uint32_t checkNextContentSuffix() = 0; + virtual uint32_t getNextContentSuffix() = 0; virtual void reset(uint32_t offset = 0) = 0; @@ -74,15 +80,27 @@ class IncrementalSuffixStrategy : public SuffixStrategy { : SuffixStrategy(NextSegmentCalculationStrategy::INCREMENTAL), next_suffix_(start_offset) {} + TRANSPORT_ALWAYS_INLINE std::uint32_t checkNextSuffix() override { + return next_suffix_; + } + TRANSPORT_ALWAYS_INLINE std::uint32_t getNextSuffix() override { incrementTotalCount(); return next_suffix_++; } + TRANSPORT_ALWAYS_INLINE std::uint32_t checkNextContentSuffix() override { + return checkNextSuffix(); + } + TRANSPORT_ALWAYS_INLINE std::uint32_t getNextContentSuffix() override { return getNextSuffix(); } + TRANSPORT_ALWAYS_INLINE std::uint32_t checkNextManifestSuffix() override { + return checkNextSuffix(); + } + TRANSPORT_ALWAYS_INLINE std::uint32_t getNextManifestSuffix() override { return getNextSuffix(); } @@ -112,17 +130,30 @@ class CapacityBasedSuffixStrategy : public SuffixStrategy { segments_in_manifest_(manifest_capacity), current_manifest_iteration_(0) {} + TRANSPORT_ALWAYS_INLINE std::uint32_t checkNextSuffix() override { + return next_suffix_; + } + TRANSPORT_ALWAYS_INLINE std::uint32_t getNextSuffix() override { incrementTotalCount(); return next_suffix_++; } + TRANSPORT_ALWAYS_INLINE std::uint32_t checkNextContentSuffix() override { + return next_suffix_ % segments_in_manifest_ == 0 ? next_suffix_ + : (next_suffix_ + 1); + } + TRANSPORT_ALWAYS_INLINE std::uint32_t getNextContentSuffix() override { incrementTotalCount(); return next_suffix_ % segments_in_manifest_ == 0 ? next_suffix_++ : ++next_suffix_; } + TRANSPORT_ALWAYS_INLINE std::uint32_t checkNextManifestSuffix() override { + return (current_manifest_iteration_ + 1) * (segments_in_manifest_ + 1); + } + TRANSPORT_ALWAYS_INLINE std::uint32_t getNextManifestSuffix() override { incrementTotalCount(); return (current_manifest_iteration_++) * (segments_in_manifest_ + 1); |