Hybrid ICN (hICN) plugin  v21.06-rc0-4-g18fa668
index_manager_bytestream.h
1 /*
2  * Copyright (c) 2017-2019 Cisco and/or its affiliates.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at:
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #pragma once
17 
18 #include <protocols/incremental_indexer_bytestream.h>
19 
20 #include <list>
21 
22 namespace transport {
23 
24 namespace implementation {
25 class ConsumerSocket;
26 }
27 
28 namespace protocol {
29 
30 class TransportProtocol;
31 
33  public:
36 
37  uint32_t getNextSuffix() override { return indexer_->getNextSuffix(); }
38 
39  void setFirstSuffix(uint32_t suffix) override {
40  indexer_->setFirstSuffix(suffix);
41  }
42 
43  uint32_t getFirstSuffix() override { return indexer_->getFirstSuffix(); }
44 
45  uint32_t getNextReassemblySegment() override {
46  return indexer_->getNextReassemblySegment();
47  }
48 
49  bool isFinalSuffixDiscovered() override {
50  return indexer_->isFinalSuffixDiscovered();
51  }
52 
53  uint32_t getFinalSuffix() override { return indexer_->getFinalSuffix(); }
54 
55  uint32_t jumpToIndex(uint32_t index) override {
56  return indexer_->jumpToIndex(index);
57  }
58 
59  void setNFec(uint32_t n_fec) override { return indexer_->setNFec(n_fec); }
60  uint32_t getNFec() override { return indexer_->getNFec(); }
61 
62  void enableFec(fec::FECType fec_type) override {
63  return indexer_->enableFec(fec_type);
64  }
65 
66  double getFecOverhead() override { return indexer_->getFecOverhead(); }
67 
68  double getMaxFecOverhead() override { return indexer_->getMaxFecOverhead(); }
69 
70  void disableFec() override { return indexer_->disableFec(); }
71 
72  void reset() override;
73 
74  void setReassembly(Reassembly *reassembly) override {
75  Indexer::setReassembly(reassembly);
76  indexer_->setReassembly(reassembly);
77  }
78 
79  void onContentObject(core::Interest &interest,
80  core::ContentObject &content_object,
81  bool reassembly) override;
82 
83  private:
84  std::unique_ptr<Indexer> indexer_;
85  bool first_segment_received_;
86  std::set<std::pair<core::Interest::Ptr, core::ContentObject::Ptr>>
87  interest_data_set_;
88 };
89 
90 } // namespace protocol
91 } // namespace transport
transport::interface::ConsumerSocket
Main interface for consumer applications.
Definition: socket_consumer.h:48
transport::protocol::IndexManager::reset
void reset() override
transport::protocol::IndexManager
Definition: index_manager_bytestream.h:32
transport::protocol::IndexManager::setFirstSuffix
void setFirstSuffix(uint32_t suffix) override
Definition: index_manager_bytestream.h:39
transport::protocol::IncrementalIndexer
Definition: incremental_indexer_bytestream.h:38
transport::core::ContentObject
Definition: content_object.h:29
transport::protocol::IndexManager::setNFec
void setNFec(uint32_t n_fec) override
Definition: index_manager_bytestream.h:59
transport::core::Interest
Definition: interest.h:30
transport
Definition: forwarder_config.h:32
transport::protocol::IndexManager::isFinalSuffixDiscovered
bool isFinalSuffixDiscovered() override
Definition: index_manager_bytestream.h:49
transport::protocol::IndexManager::jumpToIndex
uint32_t jumpToIndex(uint32_t index) override
Definition: index_manager_bytestream.h:55
transport::protocol::Indexer::setReassembly
virtual void setReassembly(Reassembly *reassembly)
Definition: indexer.h:77
transport::protocol::IndexManager::getNextReassemblySegment
uint32_t getNextReassemblySegment() override
Definition: index_manager_bytestream.h:45
transport::protocol::TransportProtocol
Definition: transport_protocol.h:41
transport::protocol::Reassembly
Definition: reassembly.h:35
transport::protocol::IndexManager::setReassembly
void setReassembly(Reassembly *reassembly) override
Definition: index_manager_bytestream.h:74
transport::protocol::IndexManager::onContentObject
void onContentObject(core::Interest &interest, core::ContentObject &content_object, bool reassembly) override