xsec/utils/XSECBinTXFMInputStream.hpp (25 lines of code) (raw):

/** * 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. */ /* * XSEC * * XSECBinTXFMInputStream := Implement the BinInputStream around Transforms. * * Author(s): Berin Lautenbach * * $ID$ * * $LOG$ * */ #ifndef XSECBINTXFMINPUTSTREAM_INCLUDE #define XSECBINTXFMINPUTSTREAM_INCLUDE #include <xsec/framework/XSECDefs.hpp> #include <xercesc/util/BinInputStream.hpp> class TXFMChain; class TXFMBase; /** * @defgroup interfaces Classes that interface applications to XML Security C. * * These classes and files provide interfaces to allow the XSEC library to link * to other libraries or to allow other libraries/applications to interface * to XSEC. * @{ */ /** * @brief BinInputSource wrapper for a TXFMChain. * * This class provides a wrapper for a TXFMChain. It can be used to either provide * a nice interface to applications wishing to read the BYTESTREAM output of a * TXFM chain, or, as it is derived from BinInputStream, provide an input to the * Xerces Parser. * */ class XSEC_EXPORT XSECBinTXFMInputStream : public XERCES_CPP_NAMESPACE_QUALIFIER BinInputStream { public : /** @name Constructors and Destructors */ //@{ /** * \brief Construct around an existing transform list * * @param lst The input TXFM chain. * @param deleteWhenDone Flag to instruct the class to delete the chain when * done. By default set to true. */ XSECBinTXFMInputStream(TXFMChain * lst, bool deleteWhenDone = true); /** * \brief Destructor * * Delete the object. If deleteWhenDone was set during construction, will * delete the chain if it has not already been done. */ virtual ~XSECBinTXFMInputStream(); //@} /** @name Stream management methods */ //@{ /** * \brief Reset the stream. * * @note At this time simply deletes the TXFM chain - many TXFMs do not * have an ability to reset. */ void reset(); //@} /** @name Interface */ //@{ /** * \brief Current position in stream. * * @returns Bytes already returned. */ virtual XMLFilePos curPos() const; /** * \brief Retrieve the required number of bytes and return * * Retrieve up to the requested number of bytes. Does not always * retrieve as much as requested, but will always retrieve something * until completed. * * @note When complete, will return 0 and delete the TXFM chain if * requested to do so in the constructor. * @param toFill The buffer that will be read into. * @param maxToRead Maximum number of bytes to return * @returns The number of bytes read or 0 if complete. */ virtual XMLSize_t readBytes(XMLByte* const toFill, const XMLSize_t maxToRead); const XMLCh* getContentType() const; private : TXFMBase * mp_txfm; // End point of list TXFMChain * mp_chain; // The actual chain bool m_deleteWhenDone; // Do we delete? bool m_deleted; // Have we deleted? bool m_done; // Are we done? XMLSize_t m_currentIndex; // How much read? }; #endif