void Client::use_event_dispatcher(IO::EventDispatcher *ed)
{
+ if(event_disp && sock)
+ event_disp->remove(*sock);
event_disp=ed;
- if(sock)
+ if(event_disp && sock)
event_disp->add(*sock);
}
in_buf.clear();
}
-void Client::get_url(const std::string &url)
+const Response *Client::get_url(const std::string &url)
{
start_request(Request::from_url(url));
wait_response();
+ return response;
}
void Client::tick()
if(in_buf.find("\r\n\r\n")!=string::npos || in_buf.find("\n\n")!=string::npos)
{
response=new Response(Response::parse(in_buf));
+ response->set_user_data(request->get_user_data());
in_buf=string();
}
}
else
{
- len=response->parse_data(in_buf);
+ len=response->parse_content(in_buf);
in_buf.erase(0, len);
}