[Libreoffice-commits] core.git: package/inc package/source

Norbert Thiebaud nthiebaud at gmail.com
Sat Jul 25 22:26:31 PDT 2015


 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 <nthiebaud at 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();
     }
 };
 


More information about the Libreoffice-commits mailing list