18 #include <hicn/transport/core/asio_wrapper.h>
19 #include <hicn/transport/core/connector.h>
20 #include <hicn/transport/core/packet.h>
21 #include <hicn/transport/core/prefix.h>
22 #include <hicn/transport/portability/portability.h>
23 #include <hicn/transport/utils/chrono_typedefs.h>
24 #include <hicn/transport/utils/membuf.h>
49 output_interface_(
""),
50 content_store_reserved_(5000) {
51 inet_address_.v4.as_u32 = htonl(0x7f00001);
52 inet6_address_.v6.as_u8[15] = 0x01;
62 virtual void connect(
bool is_consumer =
true) = 0;
64 virtual bool isConnected() = 0;
66 virtual void init(Connector::PacketReceivedCallback &&receive_callback,
67 Connector::OnReconnectCallback &&reconnect_callback,
68 asio::io_service &io_service,
69 const std::string &app_name =
"Libtransport") = 0;
71 virtual void registerRoute(
const Prefix &prefix) = 0;
73 virtual std::uint32_t getMtu() = 0;
75 virtual bool isControlMessage(
const uint8_t *message) = 0;
77 virtual void processControlMessageReply(
utils::MemBuf &packet_buffer) = 0;
79 virtual void closeConnection() = 0;
81 virtual void send(
Packet &packet) {
82 counters_.tx_packets++;
83 counters_.tx_bytes += packet.payloadSize() + packet.headerSize();
85 if (_is_ipv4(packet.getFormat())) {
86 packet.setLocator(inet_address_);
88 packet.setLocator(inet6_address_);
92 virtual void send(
const uint8_t *packet, std::size_t len) = 0;
94 void setContentStoreSize(uint32_t cs_size) {
95 content_store_reserved_ = cs_size;
98 uint32_t getContentStoreSize()
const {
return content_store_reserved_; }
100 void setOutputInterface(
const std::string &interface) {
101 output_interface_ = interface;
104 const std::string &getOutputInterface() {
return output_interface_; }
115 std::string output_interface_;
116 uint32_t content_store_reserved_;
120 extern "C" IoModule *createModule();