summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2015-09-10 17:08:11 +0200
committerStephan Bergmann <sbergman@redhat.com>2015-09-10 23:04:35 +0200
commit82285ab5c9778cc16a6976f4036ec7188037c6b9 (patch)
treefcd25e7e97588e2c8075e38d0ce3357de64ffd58
parent4464e5dbca7cab6ec91d19914eddd934cb354aa7 (diff)
Merge INetMessageIStream into INetMIMEMessageStream
Change-Id: Ic3d9cd117b3f911a7cb1317fc9d1d2e9d8f1ff42
-rw-r--r--forms/source/component/DatabaseForm.cxx4
-rw-r--r--include/tools/inetstrm.hxx41
-rw-r--r--tools/source/inet/inetstrm.cxx174
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: */