XMLNetAccessor.hpp

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 /*
00019  * $Id: XMLNetAccessor.hpp 673960 2008-07-04 08:50:12Z borisk $
00020  */
00021 
00022 #if !defined(XERCESC_INCLUDE_GUARD_XMLNETACCESSOR_HPP)
00023 #define XERCESC_INCLUDE_GUARD_XMLNETACCESSOR_HPP
00024 
00025 #include <xercesc/util/XercesDefs.hpp>
00026 #include <xercesc/util/XMLURL.hpp>
00027 #include <xercesc/util/XMLException.hpp>
00028 
00029 XERCES_CPP_NAMESPACE_BEGIN
00030 
00031 class BinInputStream;
00032 
00033 //  This class holds advanced informations about the HTTP connection
00034 class XMLUTIL_EXPORT XMLNetHTTPInfo
00035 {
00036 public:
00037     XMLNetHTTPInfo();
00038 
00039     typedef enum {
00040         GET,
00041         PUT,
00042         POST
00043     } HTTPMethod;
00044 
00045     // -----------------------------------------------------------------------
00046     //  Data members
00047     //
00048     //  fHTTPMethod
00049     //      The type of the HTTP request
00050     //
00051     //  fHeaders
00052     //      The extra headers that will be sent as part of the request; the format is
00053     //      Header1: Value\r\nHeader2: Value\r\n
00054     //
00055     //  fHeadersLen
00056     //      The length of the string pointed by fHeaders, in bytes
00057     //
00058     //  fPayload
00059     //      The extra data that will be sent after the headers; in the case of a PUT
00060     //      operation, this is the content of the resource being posted. It can be binary data
00061     //
00062     //  fPayloadLen
00063     //      The length of the binary buffer pointed by fPayload, in bytes
00064     //
00065     HTTPMethod      fHTTPMethod;
00066     const char*     fHeaders;
00067     XMLSize_t       fHeadersLen;
00068     const char*     fPayload;
00069     XMLSize_t       fPayloadLen;
00070 };
00071 
00072 inline XMLNetHTTPInfo::XMLNetHTTPInfo()
00073 :fHTTPMethod(XMLNetHTTPInfo::GET),
00074  fHeaders(0),
00075  fHeadersLen(0),
00076  fPayload(0),
00077  fPayloadLen(0)
00078 {
00079 }
00080 
00081 
00082 //
00083 //  This class is an abstract interface via which the URL class accesses
00084 //  net access services. When any source URL is not in effect a local file
00085 //  path, then the URL class is used to look at it. Then the URL class can
00086 //  be asked to make a binary input stream via which the referenced resource
00087 //  can be read in.
00088 //
00089 //  The URL class will use an object derived from this class to create a
00090 //  binary stream for the URL to return. The object it uses is provided by
00091 //  the platform utils, and is actually provided by the per-platform init
00092 //  code so each platform can decide what actual implementation it wants to
00093 //  use.
00094 //
00095 class XMLUTIL_EXPORT XMLNetAccessor : public XMemory
00096 {
00097 public :
00098     // -----------------------------------------------------------------------
00099     //  Virtual destructor
00100     // -----------------------------------------------------------------------
00101     virtual ~XMLNetAccessor()
00102     {
00103     }
00104 
00105 
00106     // -----------------------------------------------------------------------
00107     //  The virtual net accessor interface
00108     // -----------------------------------------------------------------------
00109     virtual const XMLCh* getId() const = 0;
00110 
00111     virtual BinInputStream* makeNew
00112     (
00113         const   XMLURL&                 urlSrc,
00114         const   XMLNetHTTPInfo*         httpInfo=0
00115     ) = 0;
00116 
00117 
00118 protected :
00119     // -----------------------------------------------------------------------
00120     //  Hidden constructors
00121     // -----------------------------------------------------------------------
00122     XMLNetAccessor()
00123     {
00124     }
00125 
00126 
00127 private :
00128     // -----------------------------------------------------------------------
00129     //  Unimplemented constructors and operators
00130     // -----------------------------------------------------------------------
00131     XMLNetAccessor(const XMLNetAccessor&);
00132     XMLNetAccessor& operator=(const XMLNetAccessor&);
00133 };
00134 
00135 MakeXMLException(NetAccessorException, XMLUTIL_EXPORT)
00136 
00137 XERCES_CPP_NAMESPACE_END
00138 
00139 #endif

Generated on Wed Sep 24 16:36:33 2008 for Xerces-C++ by  doxygen 1.5.4