51struct in_addr *
atoaddr(
const char* address);
128 Wobbly(
const char* fmt, ... );
180 {
return !m_Outstanding.empty(); }
190 void request(
const char* method,
const char* url,
const char* headers[]=0,
191 const unsigned char* body=0,
int bodysize=0 );
200 void putrequest(
const char* method,
const char* url );
203 void putheader(
const char* header,
const char* value );
204 void putheader(
const char* header,
int numericvalue );
211 void send(
const unsigned char* buf,
int numbytes );
223 enum { IDLE, REQ_STARTED, REQ_SENT } m_State;
227 std::vector< std::string > m_Buffer;
229 std::deque< Response* > m_Outstanding;
250 const char*
getheader(
const char* name )
const;
253 {
return m_State == COMPLETE; }
264 {
return m_WillClose; }
274 int pump(
const unsigned char* data,
int datasize );
291 std::string m_Method;
294 std::string m_VersionString;
297 std::string m_Reason;
300 std::map<std::string,std::string> m_Headers;
308 std::string m_LineBuf;
309 std::string m_HeaderAccum;
313 void ProcessStatusLine( std::string
const& line );
314 void ProcessHeaderLine( std::string
const& line );
315 void ProcessTrailerLine( std::string
const& line );
316 void ProcessChunkLenLine( std::string
const& line );
318 int ProcessDataChunked(
const unsigned char* data,
int count );
319 int ProcessDataNonChunked(
const unsigned char* data,
int count );
ResponseBegin_CB m_ResponseBeginCB
void request(const char *method, const char *url, const char *headers[]=0, const unsigned char *body=0, int bodysize=0)
ResponseComplete_CB m_ResponseCompleteCB
void putheader(const char *header, const char *value)
ResponseData_CB m_ResponseDataCB
void setcallbacks(ResponseBegin_CB begincb, ResponseData_CB datacb, ResponseComplete_CB completecb, void *userdata)
void send(const unsigned char *buf, int numbytes)
void putrequest(const char *method, const char *url)
int pump(const unsigned char *data, int datasize)
void notifyconnectionclosed()
const char * getheader(const char *name) const
const char * getreason() const
const char * what() const
void(* ResponseBegin_CB)(const Response *r, void *userdata)
void BailOnSocketError(const char *context)
void(* ResponseData_CB)(const Response *r, void *userdata, const unsigned char *data, int numbytes)
@ PROXY_AUTHENTICATION_REQUIRED
@ NON_AUTHORITATIVE_INFORMATION
@ HTTP_VERSION_NOT_SUPPORTED
@ REQUEST_ENTITY_TOO_LARGE
@ REQUESTED_RANGE_NOT_SATISFIABLE
struct in_addr * atoaddr(const char *address)
void(* ResponseComplete_CB)(const Response *r, void *userdata)