aboutsummaryrefslogtreecommitdiffstats
path: root/libtransport/src/hicn/transport/core/raw_socket_connector.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libtransport/src/hicn/transport/core/raw_socket_connector.cc')
-rw-r--r--libtransport/src/hicn/transport/core/raw_socket_connector.cc32
1 files changed, 9 insertions, 23 deletions
diff --git a/libtransport/src/hicn/transport/core/raw_socket_connector.cc b/libtransport/src/hicn/transport/core/raw_socket_connector.cc
index 78241b2ea..12cc4e0fa 100644
--- a/libtransport/src/hicn/transport/core/raw_socket_connector.cc
+++ b/libtransport/src/hicn/transport/core/raw_socket_connector.cc
@@ -54,6 +54,7 @@ RawSocketConnector::~RawSocketConnector() {}
void RawSocketConnector::connect(const std::string &interface_name,
const std::string &mac_address_str) {
+ state_ = ConnectorState::CONNECTING;
memset(&ethernet_header_, 0, sizeof(ethernet_header_));
struct ifreq ifr;
struct ifreq if_mac;
@@ -112,8 +113,6 @@ void RawSocketConnector::connect(const std::string &interface_name,
doRecvPacket();
}
-void RawSocketConnector::state() { return; }
-
void RawSocketConnector::send(const uint8_t *packet, std::size_t len,
const PacketSentCallback &packet_sent) {
// asio::async_write(socket_, asio::buffer(packet, len),
@@ -124,30 +123,16 @@ void RawSocketConnector::send(const uint8_t *packet, std::size_t len,
}
void RawSocketConnector::send(const Packet::MemBufPtr &packet) {
- // Packet &p = const_cast<Packet &>(packet);
- // p.setTcpChecksum();
-
- // if (!p.checkIntegrity()) {
- // TRANSPORT_LOGW("Sending message with wrong checksum!!!");
- // }
-
- // std::shared_ptr<const Packet> ptr;
- // try {
- // ptr = packet.shared_from_this();
- // } catch (std::bad_weak_ptr& exc) {
- // TRANSPORT_LOGW("Sending interest which has not been created using a
- // shared PTR! A copy will be made."); ptr =
- // std::shared_ptr<Packet>(packet.clone());
- // }
-
io_service_.post([this, packet]() {
bool write_in_progress = !output_buffer_.empty();
output_buffer_.push_back(std::move(packet));
- if (!write_in_progress) {
- doSendPacket();
- } else {
- // Tell the handle connect it has data to write
- data_available_ = true;
+ if (TRANSPORT_EXPECT_TRUE(state_ == ConnectorState::CONNECTED)) {
+ if (!write_in_progress) {
+ doSendPacket();
+ } else {
+ // Tell the handle connect it has data to write
+ data_available_ = true;
+ }
}
});
}
@@ -202,6 +187,7 @@ void RawSocketConnector::doRecvPacket() {
}
void RawSocketConnector::doConnect() {
+ state_ = ConnectorState::CONNECTED;
socket_.bind(raw_endpoint(&link_layer_address_, sizeof(link_layer_address_)));
}