00001 
00033 #ifndef LL_LLFILTERSD2XMLRPC_H
00034 #define LL_LLFILTERSD2XMLRPC_H
00035 
00043 #include <iosfwd>
00044 #include "lliopipe.h"
00045 
00053 class LLFilterSD2XMLRPC : public LLIOPipe
00054 {
00055 public:
00056         LLFilterSD2XMLRPC();
00057         virtual ~LLFilterSD2XMLRPC();
00058 
00059 protected:
00063         void streamOut(std::ostream& ostr, const LLSD& sd);
00064 };
00065 
00090 class LLFilterSD2XMLRPCResponse : public LLFilterSD2XMLRPC
00091 {
00092 public:
00093         
00094         LLFilterSD2XMLRPCResponse();
00095 
00096         
00097         virtual ~LLFilterSD2XMLRPCResponse();
00098 
00099         
00100 
00102 protected:
00106         virtual EStatus process_impl(
00107                 const LLChannelDescriptors& channels,
00108                 buffer_ptr_t& buffer,
00109                 bool& eos,
00110                 LLSD& context,
00111                 LLPumpIO* pump);
00113 };
00114 
00146 class LLFilterSD2XMLRPCRequest : public LLFilterSD2XMLRPC
00147 {
00148 public:
00149         
00150         LLFilterSD2XMLRPCRequest();
00151 
00152         
00153         LLFilterSD2XMLRPCRequest(const char* method);
00154 
00155         
00156         virtual ~LLFilterSD2XMLRPCRequest();
00157 
00158         
00159 
00161 protected:
00165         virtual EStatus process_impl(
00166                 const LLChannelDescriptors& channels,
00167                 buffer_ptr_t& buffer,
00168                 bool& eos,
00169                 LLSD& context,
00170                 LLPumpIO* pump);
00172 
00173 protected:
00174         
00175         std::string mMethod;
00176 };
00177 
00193 class LLFilterXMLRPCResponse2LLSD : public LLIOPipe
00194 {
00195 public:
00196         
00197         LLFilterXMLRPCResponse2LLSD();
00198 
00199         
00200         virtual ~LLFilterXMLRPCResponse2LLSD();
00201 
00202         
00203 
00205 protected:
00209         virtual EStatus process_impl(
00210                 const LLChannelDescriptors& channels,
00211                 buffer_ptr_t& buffer,
00212                 bool& eos,
00213                 LLSD& context,
00214                 LLPumpIO* pump);
00216 
00217 protected:
00218 };
00219 
00236 class LLFilterXMLRPCRequest2LLSD : public LLIOPipe
00237 {
00238 public:
00239         
00240         LLFilterXMLRPCRequest2LLSD();
00241 
00242         
00243         virtual ~LLFilterXMLRPCRequest2LLSD();
00244 
00245         
00246 
00248 protected:
00252         virtual EStatus process_impl(
00253                 const LLChannelDescriptors& channels,
00254                 buffer_ptr_t& buffer,
00255                 bool& eos,
00256                 LLSD& context,
00257                 LLPumpIO* pump);
00259 
00260 protected:
00261 };
00262 
00267 std::string xml_escape_string(const std::string& in);
00268 
00272 extern const char LLSDRPC_REQUEST_HEADER_1[];
00273 extern const char LLSDRPC_REQUEST_HEADER_2[];
00274 extern const char LLSDRPC_REQUEST_FOOTER[];
00275 
00276 #endif // LL_LLFILTERSD2XMLRPC_H