diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2015-09-10 17:08:11 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2015-09-10 23:04:35 +0200 |
commit | 82285ab5c9778cc16a6976f4036ec7188037c6b9 (patch) | |
tree | fcd25e7e97588e2c8075e38d0ce3357de64ffd58 | |
parent | 4464e5dbca7cab6ec91d19914eddd934cb354aa7 (diff) |
Merge INetMessageIStream into INetMIMEMessageStream
Change-Id: Ic3d9cd117b3f911a7cb1317fc9d1d2e9d8f1ff42
-rw-r--r-- | forms/source/component/DatabaseForm.cxx | 4 | ||||
-rw-r--r-- | include/tools/inetstrm.hxx | 41 | ||||
-rw-r--r-- | tools/source/inet/inetstrm.cxx | 174 |
3 files changed, 92 insertions, 127 deletions
diff --git a/forms/source/component/DatabaseForm.cxx b/forms/source/component/DatabaseForm.cxx index 8f7d916cfd48..56dd4a99fcd4 100644 --- a/forms/source/component/DatabaseForm.cxx +++ b/forms/source/component/DatabaseForm.cxx @@ -545,9 +545,7 @@ Sequence<sal_Int8> ODatabaseForm::GetDataMultiPartEncoded(const Reference<XContr aSuccObjList.clear(); // Create MessageStream for parent - INetMIMEMessageStream aMessStream; - aMessStream.SetSourceMessage( &aParent ); - aMessStream.SetHeaderGenerated(); + INetMIMEMessageStream aMessStream(&aParent, true); // Copy MessageStream to SvStream SvMemoryStream aMemStream; diff --git a/include/tools/inetstrm.hxx b/include/tools/inetstrm.hxx index 83c5592a0c0a..90d376049725 100644 --- a/include/tools/inetstrm.hxx +++ b/include/tools/inetstrm.hxx @@ -38,8 +38,7 @@ enum INetMessageStreamState INETMSG_EOL_DONE }; -/// Message Generator Interface. -class INetMessageIStream +class TOOLS_DLLPUBLIC INetMIMEMessageStream { INetMIMEMessage *pSourceMsg; bool bHeaderGenerated; @@ -54,44 +53,28 @@ class INetMessageIStream sal_Char *pMsgRead; sal_Char *pMsgWrite; - INetMessageIStream (const INetMessageIStream& rStrm) SAL_DELETED_FUNCTION; - INetMessageIStream& operator= (const INetMessageIStream& rStrm) SAL_DELETED_FUNCTION; - -protected: - virtual int GetMsgLine (sal_Char *pData, sal_uIntPtr nSize); - -public: - INetMessageIStream (sal_uIntPtr nBufferSize = 2048); - virtual ~INetMessageIStream(); - - TOOLS_DLLPUBLIC int Read (sal_Char *pData, sal_uIntPtr nSize); - - INetMIMEMessage *GetSourceMessage() const { return pSourceMsg; } - void SetSourceMessage (INetMIMEMessage *pMsg) { pSourceMsg = pMsg; } - - void SetHeaderGenerated() { bHeaderGenerated = true; } - bool IsHeaderGenerated() const { return bHeaderGenerated; } -}; - -class TOOLS_DLLPUBLIC INetMIMEMessageStream - : public INetMessageIStream -{ int eState; sal_uIntPtr nChildIndex; INetMIMEMessageStream *pChildStrm; - SvMemoryStream *pMsgBuffer; - INetMIMEMessageStream (const INetMIMEMessageStream& rStrm) SAL_DELETED_FUNCTION; INetMIMEMessageStream& operator= (const INetMIMEMessageStream& rStrm) SAL_DELETED_FUNCTION; -protected: - virtual int GetMsgLine (sal_Char *pData, sal_uIntPtr nSize) SAL_OVERRIDE; + int GetInnerMsgLine(sal_Char *pData, sal_uIntPtr nSize); + int GetOuterMsgLine(sal_Char *pData, sal_uIntPtr nSize); public: INetMIMEMessageStream (sal_uIntPtr nBufferSize = 2048); - virtual ~INetMIMEMessageStream(); + ~INetMIMEMessageStream(); + + int Read (sal_Char *pData, sal_uIntPtr nSize); + + INetMIMEMessage *GetSourceMessage() const { return pSourceMsg; } + void SetSourceMessage (INetMIMEMessage *pMsg) { pSourceMsg = pMsg; } + + void SetHeaderGenerated() { bHeaderGenerated = true; } + bool IsHeaderGenerated() const { return bHeaderGenerated; } }; #endif diff --git a/tools/source/inet/inetstrm.cxx b/tools/source/inet/inetstrm.cxx index a3c76e754559..b984b3222b76 100644 --- a/tools/source/inet/inetstrm.cxx +++ b/tools/source/inet/inetstrm.cxx @@ -26,80 +26,7 @@ #include <ctype.h> -// INetMessageIStream - -INetMessageIStream::INetMessageIStream(sal_uIntPtr nBufferSize) - : pSourceMsg(NULL) - , bHeaderGenerated(false) - , nBufSiz(nBufferSize) - , pMsgStrm(NULL) - , pMsgBuffer(new SvMemoryStream) - , pMsgRead(NULL) - , pMsgWrite(NULL) -{ - pMsgBuffer->SetStreamCharSet(RTL_TEXTENCODING_ASCII_US); - pBuffer = new sal_Char[nBufSiz]; - pRead = pWrite = pBuffer; -} - -INetMessageIStream::~INetMessageIStream() -{ - delete [] pBuffer; - delete pMsgBuffer; - delete pMsgStrm; -} - -int INetMessageIStream::Read(sal_Char* pData, sal_uIntPtr nSize) -{ - if (pSourceMsg == NULL) return INETSTREAM_STATUS_ERROR; - - sal_Char* pWBuf = pData; - sal_Char* pWEnd = pData + nSize; - - while (pWBuf < pWEnd) - { - // Caller's buffer not yet filled. - sal_uIntPtr n = pRead - pWrite; - if (n > 0) - { - // Bytes still in buffer. - sal_uIntPtr m = pWEnd - pWBuf; - if (m < n) n = m; - for (sal_uIntPtr i = 0; i < n; i++) *pWBuf++ = *pWrite++; - } - else - { - // Buffer empty. Reset to <Begin-of-Buffer>. - pRead = pWrite = pBuffer; - - // Read next message line. - int nRead = GetMsgLine(pBuffer, nBufSiz); - if (nRead > 0) - { - // Set read pointer. - pRead = pBuffer + nRead; - } - else - { - if (!bHeaderGenerated) - { - // Header generated. Insert empty line. - bHeaderGenerated = true; - *pRead++ = '\r'; - *pRead++ = '\n'; - } - else - { - // Body generated. - return (pWBuf - pData); - } - } - } - } - return (pWBuf - pData); -} - -int INetMessageIStream::GetMsgLine(sal_Char* pData, sal_uIntPtr nSize) +int INetMIMEMessageStream::GetInnerMsgLine(sal_Char* pData, sal_uIntPtr nSize) { if (pSourceMsg == NULL) return INETSTREAM_STATUS_ERROR; @@ -158,25 +85,7 @@ int INetMessageIStream::GetMsgLine(sal_Char* pData, sal_uIntPtr nSize) return (pWBuf - pData); } -// INetMIMEMessageStream - -INetMIMEMessageStream::INetMIMEMessageStream(sal_uIntPtr nBufferSize) - : INetMessageIStream(nBufferSize), - eState (INETMSG_EOL_BEGIN), - nChildIndex (0), - pChildStrm (NULL), - pMsgBuffer (NULL) -{ -} - -INetMIMEMessageStream::~INetMIMEMessageStream() -{ - delete pChildStrm; - delete pMsgBuffer; -} - -/// Message Generator -int INetMIMEMessageStream::GetMsgLine(sal_Char* pData, sal_uIntPtr nSize) +int INetMIMEMessageStream::GetOuterMsgLine(sal_Char* pData, sal_uIntPtr nSize) { // Check for message container. INetMIMEMessage* pMsg = GetSourceMessage(); @@ -223,7 +132,7 @@ int INetMIMEMessageStream::GetMsgLine(sal_Char* pData, sal_uIntPtr nSize) } // Generate the message header. - int nRead = INetMessageIStream::GetMsgLine(pData, nSize); + int nRead = GetInnerMsgLine(pData, nSize); if (nRead <= 0) { // Reset state. @@ -310,9 +219,84 @@ int INetMIMEMessageStream::GetMsgLine(sal_Char* pData, sal_uIntPtr nSize) } // No Encoding. - return INetMessageIStream::GetMsgLine(pData, nSize); + return GetInnerMsgLine(pData, nSize); + } + } +} + +INetMIMEMessageStream::INetMIMEMessageStream(sal_uIntPtr nBufferSize): + pSourceMsg(NULL), + bHeaderGenerated(false), + nBufSiz(nBufferSize), + pMsgStrm(NULL), + pMsgBuffer(new SvMemoryStream), + pMsgRead(NULL), + pMsgWrite(NULL), + eState(INETMSG_EOL_BEGIN), + nChildIndex(0), + pChildStrm(NULL) +{ + pMsgBuffer->SetStreamCharSet(RTL_TEXTENCODING_ASCII_US); + pBuffer = new sal_Char[nBufSiz]; + pRead = pWrite = pBuffer; +} + +INetMIMEMessageStream::~INetMIMEMessageStream() +{ + delete pChildStrm; + delete [] pBuffer; + delete pMsgBuffer; + delete pMsgStrm; +} + +int INetMIMEMessageStream::Read(sal_Char* pData, sal_uIntPtr nSize) +{ + if (pSourceMsg == NULL) return INETSTREAM_STATUS_ERROR; + + sal_Char* pWBuf = pData; + sal_Char* pWEnd = pData + nSize; + + while (pWBuf < pWEnd) + { + // Caller's buffer not yet filled. + sal_uIntPtr n = pRead - pWrite; + if (n > 0) + { + // Bytes still in buffer. + sal_uIntPtr m = pWEnd - pWBuf; + if (m < n) n = m; + for (sal_uIntPtr i = 0; i < n; i++) *pWBuf++ = *pWrite++; + } + else + { + // Buffer empty. Reset to <Begin-of-Buffer>. + pRead = pWrite = pBuffer; + + // Read next message line. + int nRead = GetOuterMsgLine(pBuffer, nBufSiz); + if (nRead > 0) + { + // Set read pointer. + pRead = pBuffer + nRead; + } + else + { + if (!bHeaderGenerated) + { + // Header generated. Insert empty line. + bHeaderGenerated = true; + *pRead++ = '\r'; + *pRead++ = '\n'; + } + else + { + // Body generated. + return (pWBuf - pData); + } + } } } + return (pWBuf - pData); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |