GComm  0.2.3
asio_udp.hpp
1 /*
2  * Copyright (C) 2010 Codership Oy <info@codership.com>
3  */
4 
5 #ifndef GCOMM_ASIO_UDP_HPP
6 #define GCOMM_ASIO_UDP_HPP
7 
8 #include "socket.hpp"
9 #include "asio_protonet.hpp"
10 #include <boost/enable_shared_from_this.hpp>
11 #include <vector>
12 
13 namespace gcomm
14 {
15  class AsioUdpSocket;
16  class AsioProtonet;
17 }
18 
20  public gcomm::Socket,
21  public boost::enable_shared_from_this<AsioUdpSocket>
22 {
23 public:
24  AsioUdpSocket(AsioProtonet& net, const gu::URI& uri);
25  ~AsioUdpSocket();
26  void connect(const gu::URI& uri);
27  void close();
28  int send(const Datagram& dg);
29  void read_handler(const asio::error_code&, size_t);
30  void async_receive();
31  size_t mtu() const;
32  std::string local_addr() const;
33  std::string remote_addr() const;
34  State state() const { return state_; }
35  SocketId id() const { return &socket_; }
36 
37 private:
38  AsioProtonet& net_;
39  State state_;
40  asio::ip::udp::socket socket_;
41  asio::ip::udp::endpoint target_ep_;
42  asio::ip::udp::endpoint source_ep_;
43  std::vector<gu::byte_t> recv_buf_;
44 };
45 
46 #endif // GCOMM_ASIO_UDP_HPP
Definition: asio_udp.hpp:19
Definition: asio_protonet.hpp:29
Definition: socket.hpp:29
Datagram container.
Definition: datagram.hpp:151