summaryrefslogtreecommitdiff
path: root/package/inc/ZipOutputStream.hxx
diff options
context:
space:
mode:
authorMatúš Kukan <matus.kukan@collabora.com>2014-10-09 15:22:54 +0200
committerMatúš Kukan <matus.kukan@collabora.com>2014-10-23 14:30:30 +0200
commit3a8bddc18e4218210f74a9b0192f1528536a58a2 (patch)
treebdb7e732477621386a05b22224f04e875d44d613 /package/inc/ZipOutputStream.hxx
parent0c24faee6b622971d7d8f989da36029200cbd2a5 (diff)
package: Add ZipOutputEntry to isolate deflating of streams.
Preparation commit for deflating streams in parallel. We still use the same single XOutputStream (ByteChucker :-) for sequential writing but this can now be changed more easily. Change-Id: Idf26cc2187461660e31ac2e12c4708e761596fb2
Diffstat (limited to 'package/inc/ZipOutputStream.hxx')
-rw-r--r--package/inc/ZipOutputStream.hxx49
1 files changed, 5 insertions, 44 deletions
diff --git a/package/inc/ZipOutputStream.hxx b/package/inc/ZipOutputStream.hxx
index 146e6427eebe..95c27f3a959a 100644
--- a/package/inc/ZipOutputStream.hxx
+++ b/package/inc/ZipOutputStream.hxx
@@ -21,75 +21,36 @@
#include <com/sun/star/uno/Reference.hxx>
#include <com/sun/star/io/XOutputStream.hpp>
-#include <com/sun/star/xml/crypto/XCipherContext.hpp>
-#include <com/sun/star/xml/crypto/XDigestContext.hpp>
-#include <package/Deflater.hxx>
#include <ByteChucker.hxx>
-#include <CRC32.hxx>
#include <vector>
struct ZipEntry;
-class ZipPackageStream;
class ZipOutputStream
{
-protected:
- ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext> m_xContext;
::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream > m_xStream;
-
::std::vector < ZipEntry * > m_aZipList;
- ::com::sun::star::uno::Sequence< sal_Int8 > m_aDeflateBuffer;
-
- OUString m_sComment;
- ZipUtils::Deflater m_aDeflater;
-
- ::com::sun::star::uno::Reference< ::com::sun::star::xml::crypto::XCipherContext > m_xCipherContext;
- ::com::sun::star::uno::Reference< ::com::sun::star::xml::crypto::XDigestContext > m_xDigestContext;
-
- CRC32 m_aCRC;
ByteChucker m_aChucker;
- ZipEntry *m_pCurrentEntry;
- sal_Int16 m_nDigested;
- bool m_bFinished, m_bEncryptCurrentEntry;
- ZipPackageStream* m_pCurrentStream;
+ bool m_bFinished;
public:
ZipOutputStream(
- const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& rxContext,
const ::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream > &xOStream );
~ZipOutputStream();
- // rawWrite to support a direct write to the output stream
- void SAL_CALL rawWrite( ::com::sun::star::uno::Sequence< sal_Int8 >& rBuffer, sal_Int32 nNewOffset, sal_Int32 nNewLength )
- throw(::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
- void SAL_CALL rawCloseEntry( )
+ void addEntry( ZipEntry *pZipEntry );
+ void finish()
throw(::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
+ ByteChucker& getChucker();
- // XZipOutputStream interfaces
- void SAL_CALL putNextEntry( ZipEntry& rEntry,
- ZipPackageStream* pStream,
- bool bEncrypt = false )
- throw(::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
- void SAL_CALL closeEntry( )
- throw(::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
- void SAL_CALL write( const ::com::sun::star::uno::Sequence< sal_Int8 >& rBuffer, sal_Int32 nNewOffset, sal_Int32 nNewLength )
- throw(::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
- void SAL_CALL finish( )
- throw(::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
- static sal_uInt32 getCurrentDosTime ( );
-protected:
- void doDeflate();
+private:
void writeEND(sal_uInt32 nOffset, sal_uInt32 nLength)
throw(::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
void writeCEN( const ZipEntry &rEntry )
throw(::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
- void writeEXT( const ZipEntry &rEntry )
- throw(::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
- sal_Int32 writeLOC( const ZipEntry &rEntry )
- throw(::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
};
#endif