@@ -84,61 +84,6 @@ void DatagramSocket::operator=(DatagramSocket&& other) {
8484 other.is_disconnected = true ;
8585}
8686
87- DatagramSocket::DatagramSocket (EthernetNode local_node,
88- EthernetNode remote_node)
89- : DatagramSocket(local_node.ip, local_node.port, remote_node.ip,
90- remote_node.port) {}
91-
92- DatagramSocket::~DatagramSocket () {
93- if (not is_disconnected) close ();
94- }
95- void DatagramSocket::create_udp_socket () {
96- udp_socket = socket (AF_INET, SOCK_DGRAM, 0 );
97- if (udp_socket < 0 ) {
98- LOG_ERROR (" Unable to create socket" );
99- }
100- struct sockaddr_in servaddr;
101- servaddr.sin_family = AF_INET;
102- servaddr.sin_port = htons (local_port);
103- servaddr.sin_addr .s_addr = local_ip.address ;
104- if (bind (udp_socket, (struct sockaddr *)&servaddr, sizeof (servaddr)) < 0 ) {
105- LOG_ERROR (std::format (" Unable to bind to address {} in port {}" ,
106- local_ip->string_address , local_port));
107- close (udp_socket);
108- is_disconnected = true ;
109- return ;
110- }
111- is_disconnected = false ;
112- // receiving callback
113- receiving_udp_thread = std::jthread ([&]() {
114- is_receiving = true ;
115- while (true ) {
116- uint8_t received_data[1024 ];
117- struct sockaddr_in src_addr;
118- socklen_t addr_len = sizeof (src_addr);
119- ssize_t size =
120- recvfrom (udp_socket, (uint8_t *)received_data, MAX_SIZE_PACKET,
121- 0 , (struct sockaddr *)&src_addr, &addr_len);
122- if (size < 0 ) {
123- LOG_ERROR (" Unable to receive data" );
124- is_receiving = false ;
125- return ;
126- }
127- // receive callback
128- Packet::parse_data (received_data);
129- }
130- });
131- Ethernet::update ();
132- }
133- void DatagramSocket::operator =(DatagramSocket&& other) {
134- udp_socket = move (other.udp_socket );
135- local_ip = move (other.local_ip );
136- local_port = move (other.local_port );
137- remote_ip = other.remote_ip ;
138- remote_port = other.remote_port ;
139- other.is_disconnected = true ;
140- }
141-
14287void DatagramSocket::close () {
14388 if (!is_disconnected) {
14489 if (::close (udp_socket)) {
@@ -150,13 +95,4 @@ void DatagramSocket::close() {
15095 }
15196 is_disconnected = true ;
15297 }
153- }
154-
155- void DatagramSocket::close () {
156- // check if receiving thread is on and delete it
157- if (is_receiving) {
158- receiving_udp_thread.~jthread ();
159- }
160- ::close (udp_socket);
161- is_disconnected = true ;
162- }
98+ }
0 commit comments