/*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999-2000 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Xerces" and "Apache Software Foundation" must
* not be used to endorse or promote products derived from this
* software without prior written permission. For written
* permission, please contact apache\@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* nor may "Apache" appear in their name, without prior written
* permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation, and was
* originally based on software copyright (c) 1999, International
* Business Machines, Inc., http://www.ibm.com . For more information
* on the Apache Software Foundation, please see
* .
*/
/*
* $Log: UnixHTTPURLInputStream.hpp,v $
* Revision 1.6 2004/01/29 11:51:20 cargilld
* Code cleanup changes to get rid of various compiler diagnostic messages.
*
* Revision 1.5 2003/12/24 15:24:13 cargilld
* More updates to memory management so that the static memory manager.
*
* Revision 1.4 2002/12/09 13:12:12 tng
* Fix compilation error.
*
* Revision 1.3 2002/12/09 09:57:27 gareth
* Fixed compile error by adding private member. Not very efficient. Should be looked at again.
*
* Revision 1.2 2002/11/04 15:11:38 tng
* C++ Namespace Support.
*
* Revision 1.1.1.1 2002/02/01 22:22:23 peiyongz
* sane_include
*
* Revision 1.3 2000/07/21 03:31:42 andyh
* Improved (but still weak) http access by the parser.
*
* Revision 1.2 2000/03/22 00:58:12 rahulj
* Now we throw exceptions when errors occur.
* Simplified code based on assumption that calling
* function will allocate enough storage to store the
* incoming data.
*
* Revision 1.1 2000/03/20 23:48:51 rahulj
* Added Socket based NetAccessor. This will enable one to
* use HTTP URL's for system id's. Default build options do
* not use this NetAccessor. Specify the '-n socket' option
* to 'runConfigure' to configure Xerces-C to use this new
* feature. The code works under Solaris 2.6, Linux, AIX
* and HPUX 11 with aCC.
* Todo's: enable proper error handling.
*
*/
#if !defined(UNIXHTTPURLINPUTSTREAM_HPP)
#define UNIXHTTPURLINPUTSTREAM_HPP
#include
#include
#include
XERCES_CPP_NAMESPACE_BEGIN
//
// This class implements the BinInputStream interface specified by the XML
// parser.
//
class XMLUTIL_EXPORT UnixHTTPURLInputStream : public BinInputStream
{
public :
UnixHTTPURLInputStream(const XMLURL& urlSource);
~UnixHTTPURLInputStream();
unsigned int curPos() const;
unsigned int readBytes
(
XMLByte* const toFill
, const unsigned int maxToRead
);
private :
// -----------------------------------------------------------------------
// Unimplemented constructors and operators
// -----------------------------------------------------------------------
UnixHTTPURLInputStream(const UnixHTTPURLInputStream&);
UnixHTTPURLInputStream& operator=(const UnixHTTPURLInputStream&);
// -----------------------------------------------------------------------
// Private data members
//
// fSocket
// The socket representing the connection to the remote file.
// fBytesProcessed
// Its a rolling count of the number of bytes processed off this
// input stream.
// fBuffer
// Holds the http header, plus the first part of the actual
// data. Filled at the time the stream is opened, data goes
// out to user in response to readBytes().
// fBufferPos, fBufferEnd
// Pointers into fBuffer, showing start and end+1 of content
// that readBytes must return.
// -----------------------------------------------------------------------
int fSocket;
unsigned int fBytesProcessed;
char fBuffer[4000];
char * fBufferEnd;
char * fBufferPos;
MemoryManager* fMemoryManager;
}; // UnixHTTPURLInputStream
inline unsigned int UnixHTTPURLInputStream::curPos() const
{
return fBytesProcessed;
}
XERCES_CPP_NAMESPACE_END
#endif // UNIXHTTPURLINPUTSTREAM_HPP