10#include <webclient/http_funcs.h>
28 servlet(servlet_list *whereToAdd);
33 virtual int AddToSelectSet(fd_set &rd_set, fd_set &wr_set, fd_set &er_set) = 0;
34 virtual void ProcessSelectResult(fd_set &rd_set, fd_set &wr_set, fd_set &er_set) = 0;
35 friend class servlet_list;
47 void add(servlet *ps);
48 void remove(servlet *ps);
49 void run_once_through_select_loop(
int max_timeout_ticks);
81const int HEADER_BUFFER_SIZE=256;
83class WebClientServlet:
public servlet,
public TimeOutElement
87 virtual int AddToSelectSet(fd_set &rd_set, fd_set &wr_set, fd_set &er_set);
88 virtual void ProcessSelectResult(fd_set &rd_set, fd_set &wr_set, fd_set &er_set);
90 virtual void TimeElementEvent();
93 eWebClientState_t m_cur_state;
94 eWebResponse_t m_resp_state;
95 ParsedURI m_cur_request;
96 ParsedURI *m_pActiveUri;
97 buffer_object * pDestinationBuffer;
100 NBString AdditionalHeaders;
102 const char *m_pMethodStr;
105 char HeaderBuffer[HEADER_BUFFER_SIZE];
109 uint32_t m_ResultCode;
111 TickTimeout m_waketime;
112 TickTimeout m_responsetimeout;
116 servlet_list * m_pWhoToReJoin;
121virtual bool ResponseReader(
int fd);
123virtual void StartQuery();
127virtual void ActionComplete(eWebClientAction_t action);
130 const char* ActionText(eWebClientAction_t action);
134void DisconnectTil(TickTimeout & tt);
137void CoreStart(
const char* pUrl,buffer_object * result_buffer, uint32_t timeout);
138void CoreStart(ParsedURI *pUri,buffer_object * result_buffer, uint32_t timeout);
143WebClientServlet(servlet_list * List_To_Join=0);
145uint32_t GetResultCode(){
return m_ResultCode; };
147void NewGet(
const char* pUrl,buffer_object * result_buffer, uint32_t timeout=0,
const char* additional_header=0);
148void NewGet(ParsedURI *pUri,buffer_object * result_buffer, uint32_t timeout=0,
const char* additional_header=0);
149void CommonPutPost(
const char * method,
const char * pUrl,
const char* pType, NBString & payload,buffer_object * result_buffer, uint32_t timeout=0,
const char* additional_header=0);
150void CommonPutPost(
const char * method,
const char * pUrl,
const char* pType,
const char* payload,buffer_object * result_buffer, uint32_t timeout=0,
const char* additional_header=0);
151void CommonPutPost(
const char * method, ParsedURI *pUri,
const char* pType, NBString & payload,buffer_object * result_buffer, uint32_t timeout=0,
const char* additional_header=0);
152void CommonPutPost(
const char * method, ParsedURI *pUri,
const char* pType,
const char* payload,buffer_object * result_buffer, uint32_t timeout=0,
const char* additional_header=0);
154inline void NewPost(
const char * pUrl,
const char* pType, NBString & payload,buffer_object * result_buffer, uint32_t timeout=0,
const char* additional_header=0)
155 { CommonPutPost(
"POST",pUrl,pType,payload,result_buffer,timeout,additional_header); }
156inline void NewPost(
const char * pUrl,
const char* pType,
const char* payload,buffer_object * result_buffer, uint32_t timeout=0,
const char* additional_header=0)
157 { CommonPutPost(
"POST",pUrl,pType,payload,result_buffer,timeout,additional_header); }
158inline void NewPost(ParsedURI *pUri,
const char* pType, NBString & payload,buffer_object * result_buffer, uint32_t timeout=0,
const char* additional_header=0)
159 { CommonPutPost(
"POST",pUri,pType,payload,result_buffer,timeout,additional_header); }
160inline void NewPost(ParsedURI *pUri,
const char* pType,
const char* payload,buffer_object * result_buffer, uint32_t timeout=0,
const char* additional_header=0)
161 { CommonPutPost(
"POST",pUri,pType,payload,result_buffer,timeout,additional_header); }
162inline void NewPut(
const char * pUrl,
const char* pType, NBString & payload,buffer_object * result_buffer, uint32_t timeout=0,
const char* additional_header=0)
163 { CommonPutPost(
"PUT",pUrl,pType,payload,result_buffer,timeout,additional_header); }
164inline void NewPut(
const char * pUrl,
const char* pType,
const char* payload,buffer_object * result_buffer, uint32_t timeout=0,
const char* additional_header=0)
165 { CommonPutPost(
"PUT",pUrl,pType,payload,result_buffer,timeout,additional_header); }
166inline void NewPut(ParsedURI *pUri,
const char* pType, NBString & payload,buffer_object * result_buffer, uint32_t timeout=0,
const char* additional_header=0)
167 { CommonPutPost(
"PUT",pUri,pType,payload,result_buffer,timeout,additional_header); }
168inline void NewPut(ParsedURI *pUri,
const char* pType,
const char* payload,buffer_object * result_buffer, uint32_t timeout=0,
const char* additional_header=0)
169 { CommonPutPost(
"PUT",pUri,pType,payload,result_buffer,timeout,additional_header); }