2 #include "udp_client_socket.h"
6 void udp_client_socket::receive(const ipv4_addr
&addr
, u16 sender_port
, const buffer
&data
) {
7 if (addr
!= server
|| sender_port
!= server_port
)
10 incoming_data
.push(data
.copy());
13 udp_client_socket::udp_client_socket(p
<transport_layer
> tl
) : client_socket(tl
) { }
15 udp_client_socket::~udp_client_socket() {
19 void udp_client_socket::connect(const ipv4_addr
&addr
, int port
) {
23 client_port
= down
->acquire_port();
25 down
.cast
<udp
>()->listen(client_port
, udp::port_listener::method(this, &udp_client_socket::receive
));
28 void udp_client_socket::write(const buffer
&data
) {
29 down
.cast
<udp
>()->send(server
, server_port
, client_port
, data
);
32 void udp_client_socket::read(buffer
&data
) {
33 buffer buf
= incoming_data
.pop();
37 void udp_client_socket::close() {
38 if (client_port
!= 0) {
39 down
->release_port(client_port
);
40 down
.cast
<udp
>()->remove_listener(client_port
, udp::port_listener::method(this, &udp_client_socket::receive
));