package/inc/ZipOutputEntry.hxx | 15 ++----- package/source/zipapi/ZipOutputEntry.cxx | 50 +++++++------------------ package/source/zippackage/ZipPackageStream.cxx | 2 - 3 files changed, 20 insertions(+), 47 deletions(-)
New commits: commit 33a21d37f376abaaabdaceaa09160cab962038fc Author: Norbert Thiebaud <nthieb...@gmail.com> Date: Sun Jul 26 00:23:50 2015 -0500 Revert "Resolves: tdf#88314 close temp file after each thread completes" This reverts commit 738cf411e9315d17c7eb8be47ded643a00dfe5c5. It brokes windows in https://gerrit.libreoffice.org/#/c/17289/ as per http://ci.libreoffice.org/job/lo_gerrit_master/4465/Gerrit=Gerrit,Platform=Windows/ was pushed despite that.. :-( diff --git a/package/inc/ZipOutputEntry.hxx b/package/inc/ZipOutputEntry.hxx index d8d0ee6..2a5aa04 100644 --- a/package/inc/ZipOutputEntry.hxx +++ b/package/inc/ZipOutputEntry.hxx @@ -37,8 +37,7 @@ class ZipOutputEntry { ::com::sun::star::uno::Sequence< sal_Int8 > m_aDeflateBuffer; ZipUtils::Deflater m_aDeflater; - css::uno::Reference< css::uno::XComponentContext > m_xContext; - OUString m_aTempURL; + css::uno::Reference< css::io::XTempFile > m_xTempFile; css::uno::Reference< css::io::XOutputStream > m_xOutStream; ::com::sun::star::uno::Reference< ::com::sun::star::xml::crypto::XCipherContext > m_xCipherContext; @@ -59,18 +58,14 @@ public: ~ZipOutputEntry(); - /* This block of methods is for threaded zipping, where we compress to a temp stream, whose - data is retrieved via getData */ - void createBufferFile(); - void setParallelDeflateException(const ::css::uno::Any &rAny) { m_aParallelDeflateException = rAny; } - css::uno::Reference< css::io::XInputStream > getData() const; - ::css::uno::Any getParallelDeflateException() const { return m_aParallelDeflateException; } - void closeBufferFile(); - + css::uno::Reference< css::io::XInputStream > getData(); ZipEntry* getZipEntry() { return m_pCurrentEntry; } ZipPackageStream* getZipPackageStream() { return m_pCurrentStream; } bool isEncrypt() { return m_bEncryptCurrentEntry; } + void setParallelDeflateException(const ::css::uno::Any &rAny) { m_aParallelDeflateException = rAny; } + ::css::uno::Any getParallelDeflateException() const { return m_aParallelDeflateException; } + void closeEntry(); void write(const css::uno::Sequence< sal_Int8 >& rBuffer); diff --git a/package/source/zipapi/ZipOutputEntry.cxx b/package/source/zipapi/ZipOutputEntry.cxx index aa85b11..de44ae4 100644 --- a/package/source/zipapi/ZipOutputEntry.cxx +++ b/package/source/zipapi/ZipOutputEntry.cxx @@ -21,8 +21,6 @@ #include <com/sun/star/io/TempFile.hpp> #include <com/sun/star/packages/zip/ZipConstants.hpp> -#include <com/sun/star/ucb/SimpleFileAccess.hpp> -#include <com/sun/star/ucb/XSimpleFileAccess3.hpp> #include <comphelper/storagehelper.hxx> #include <osl/time.h> @@ -51,56 +49,38 @@ ZipOutputEntry::ZipOutputEntry( bool bEncrypt) : m_aDeflateBuffer(n_ConstBufferSize) , m_aDeflater(DEFAULT_COMPRESSION, true) -, m_xContext(rxContext) -, m_xOutStream(rxOutput) , m_pCurrentEntry(&rEntry) , m_nDigested(0) , m_bEncryptCurrentEntry(bEncrypt) , m_pCurrentStream(pStream) { + if (rxOutput.is()) + { + m_xOutStream = rxOutput; + } + else + { + m_xTempFile = io::TempFile::create(rxContext); + m_xOutStream = m_xTempFile->getOutputStream(); + } assert(m_pCurrentEntry->nMethod == DEFLATED && "Use ZipPackageStream::rawWrite() for STORED entries"); if (m_bEncryptCurrentEntry) { - m_xCipherContext = ZipFile::StaticGetCipher( m_xContext, pStream->GetEncryptionData(), true ); - m_xDigestContext = ZipFile::StaticGetDigestContextForChecksum( m_xContext, pStream->GetEncryptionData() ); + m_xCipherContext = ZipFile::StaticGetCipher( rxContext, pStream->GetEncryptionData(), true ); + m_xDigestContext = ZipFile::StaticGetDigestContextForChecksum( rxContext, pStream->GetEncryptionData() ); } } ZipOutputEntry::~ZipOutputEntry() { - if (!m_aTempURL.isEmpty()) - { - uno::Reference < ucb::XSimpleFileAccess3 > xAccess(ucb::SimpleFileAccess::create(m_xContext)); - xAccess->kill(m_aTempURL); - } } -void ZipOutputEntry::createBufferFile() -{ - assert(!m_xOutStream.is() && m_aTempURL.isEmpty() && - "should only be called in the threaded mode where there is no existing stream yet"); - uno::Reference < beans::XPropertySet > xTempFileProps( - io::TempFile::create(m_xContext), - uno::UNO_QUERY_THROW ); - xTempFileProps->setPropertyValue("RemoveFile", uno::makeAny(sal_False)); - uno::Any aUrl = xTempFileProps->getPropertyValue( "Uri" ); - aUrl >>= m_aTempURL; - assert(!m_aTempURL.isEmpty()); - - uno::Reference < ucb::XSimpleFileAccess3 > xTempAccess(ucb::SimpleFileAccess::create(m_xContext)); - m_xOutStream = xTempAccess->openFileWrite(m_aTempURL); -} - -void ZipOutputEntry::closeBufferFile() +uno::Reference< io::XInputStream > ZipOutputEntry::getData() { m_xOutStream->closeOutput(); - m_xOutStream.clear(); -} - -uno::Reference< io::XInputStream > ZipOutputEntry::getData() const -{ - uno::Reference < ucb::XSimpleFileAccess3 > xTempAccess(ucb::SimpleFileAccess::create(m_xContext)); - return xTempAccess->openFileRead(m_aTempURL); + uno::Reference< io::XSeekable > xTempSeek(m_xOutStream, UNO_QUERY_THROW); + xTempSeek->seek(0); + return m_xTempFile->getInputStream(); } void ZipOutputEntry::closeEntry() diff --git a/package/source/zippackage/ZipPackageStream.cxx b/package/source/zippackage/ZipPackageStream.cxx index f28d891..f3c5361 100644 --- a/package/source/zippackage/ZipPackageStream.cxx +++ b/package/source/zippackage/ZipPackageStream.cxx @@ -472,7 +472,6 @@ public: private: virtual void doWork() SAL_OVERRIDE { - mpEntry->createBufferFile(); try { deflateZipEntry(mpEntry, mxInStream); @@ -482,7 +481,6 @@ private: { mpEntry->setParallelDeflateException(::cppu::getCaughtException()); } - mpEntry->closeBufferFile(); } }; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits