usb: getting string descriptors, minor improvements
[quarnos.git] / resources / net / udp.h
blobba72788c3bf30ad6c2f882bf2141e6c30f929750
1 #ifndef _UDP_H_
2 #define _UDP_H_
4 #include "transport_layer.h"
5 #include "ipv4_addr.h"
7 namespace net {
8 class udp : public transport_layer {
9 private:
10 list<int> ports;
11 list<delegate<void, const ipv4_addr&, u16, const buffer &> > listeners;
13 int last_port;
15 void receive(const ipv4_addr &, const buffer&);
16 public:
17 udp() : last_port(49152) { }
19 typedef delegate<void, const ipv4_addr &, u16, const buffer &> port_listener;
20 void set_internet_layer(p<internet_layer> x) {
21 down = x;
22 down->listen(17, delegate<void, const ipv4_addr&, const buffer&>::method(this, &udp::receive));
25 void send(const ipv4_addr&, u16, u16, const buffer &);
26 void listen(u16, port_listener);
27 void remove_listener(u16, port_listener);
29 int acquire_port() {
30 return last_port++;
33 void release_port(int) { }
35 p<client_socket> create_client();
36 p<server_socket> create_server(int port);
40 #endif