- Net::StreamSocket *sock;
- IO::EventDispatcher *event_disp;
- std::string user_agent;
- Request *request;
- Response *response;
+ struct ResolveListener: public sigc::trackable
+ {
+ Client &client;
+
+ ResolveListener(Client &);
+
+ void address_resolved(unsigned, const Net::SockAddr &);
+ void resolve_failed(unsigned, const std::exception &);
+ };
+
+ std::unique_ptr<Net::StreamSocket> sock;
+ IO::EventDispatcher *event_disp = nullptr;
+ Net::Resolver *resolver = nullptr;
+ std::unique_ptr<ResolveListener> resolve_listener;
+ unsigned resolve_tag = 0;
+ std::string user_agent = "libmspnet/1.0";
+ std::unique_ptr<Request> request;
+ std::unique_ptr<Response> response;