/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: UnixHTTPURLInputStream.hpp 568078 2007-08-21 11:43:25Z amassari $ */ #if !defined(UNIXHTTPURLINPUTSTREAM_HPP) #define UNIXHTTPURLINPUTSTREAM_HPP #include #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, const XMLNetHTTPInfo* httpInfo=0); ~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