summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorbert Thiebaud <nthiebaud@gmail.com>2015-07-26 00:23:50 -0500
committerNorbert Thiebaud <nthiebaud@gmail.com>2015-07-26 00:23:50 -0500
commit33a21d37f376abaaabdaceaa09160cab962038fc (patch)
treea5716c31d385c37401408efeaba95adf64be9056
parent11f24bc2f032b31095663cb09ef948eee2c61f49 (diff)
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.. :-(
-rw-r--r--package/inc/ZipOutputEntry.hxx15
-rw-r--r--package/source/zipapi/ZipOutputEntry.cxx50
-rw-r--r--package/source/zippackage/ZipPackageStream.cxx2
3 files changed, 20 insertions, 47 deletions
diff --git a/package/inc/ZipOutputEntry.hxx b/package/inc/ZipOutputEntry.hxx
index d8d0ee65c6a6..2a5aa0483ce8 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 aa85b11ee717..de44ae46f6b4 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 f28d891a005a..f3c5361c57e5 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();
}
};