00001
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef _SOCKETS_ResolvSocket_H
00031 #define _SOCKETS_ResolvSocket_H
00032 #include "sockets-config.h"
00033 #ifdef ENABLE_RESOLVER
00034 #include "TcpSocket.h"
00035
00036 #ifdef SOCKETS_NAMESPACE
00037 namespace SOCKETS_NAMESPACE {
00038 #endif
00039
00042 class ResolvSocket : public TcpSocket
00043 {
00044 public:
00045 ResolvSocket(ISocketHandler&,Socket *parent = NULL);
00046 ~ResolvSocket();
00047
00048 void OnAccept() { m_bServer = true; }
00049 void OnLine(const std::string& line);
00050 void OnDetached();
00051 void OnDelete();
00052
00053 void SetId(int x) { m_resolv_id = x; }
00054 void SetHost(const std::string& x) { m_resolv_host = x; }
00055 void SetAddress(ipaddr_t x) { m_resolv_address = x; }
00056 #ifdef ENABLE_IPV6
00057 void SetAddress(in6_addr& a) { m_resolv_address6 = a; m_resolve_ipv6 = true; }
00058 #endif
00059 void SetPort(port_t x) { m_resolv_port = x; }
00060 void OnConnect();
00061
00062 #ifdef ENABLE_IPV6
00063 void SetResolveIpv6(bool x = true) { m_resolve_ipv6 = x; }
00064 #endif
00065
00066 private:
00067 ResolvSocket(const ResolvSocket& s) : TcpSocket(s) {}
00068 ResolvSocket& operator=(const ResolvSocket& ) { return *this; }
00069
00070 std::string m_query;
00071 std::string m_data;
00072 bool m_bServer;
00073 Socket *m_parent;
00074 int m_resolv_id;
00075 std::string m_resolv_host;
00076 port_t m_resolv_port;
00077 ipaddr_t m_resolv_address;
00078 #ifdef ENABLE_IPV6
00079 bool m_resolve_ipv6;
00080 in6_addr m_resolv_address6;
00081 #endif
00082 };
00083
00084
00085
00086
00087 #ifdef SOCKETS_NAMESPACE
00088 }
00089 #endif
00090
00091 #endif // ENABLE_RESOLVER
00092 #endif // _SOCKETS_ResolvSocket_H