Kaydet (Commit) 82285ab5 authored tarafından Stephan Bergmann's avatar Stephan Bergmann

Merge INetMessageIStream into INetMIMEMessageStream

Change-Id: Ic3d9cd117b3f911a7cb1317fc9d1d2e9d8f1ff42
üst 4464e5db
...@@ -545,9 +545,7 @@ Sequence<sal_Int8> ODatabaseForm::GetDataMultiPartEncoded(const Reference<XContr ...@@ -545,9 +545,7 @@ Sequence<sal_Int8> ODatabaseForm::GetDataMultiPartEncoded(const Reference<XContr
aSuccObjList.clear(); aSuccObjList.clear();
// Create MessageStream for parent // Create MessageStream for parent
INetMIMEMessageStream aMessStream; INetMIMEMessageStream aMessStream(&aParent, true);
aMessStream.SetSourceMessage( &aParent );
aMessStream.SetHeaderGenerated();
// Copy MessageStream to SvStream // Copy MessageStream to SvStream
SvMemoryStream aMemStream; SvMemoryStream aMemStream;
......
...@@ -38,8 +38,7 @@ enum INetMessageStreamState ...@@ -38,8 +38,7 @@ enum INetMessageStreamState
INETMSG_EOL_DONE INETMSG_EOL_DONE
}; };
/// Message Generator Interface. class TOOLS_DLLPUBLIC INetMIMEMessageStream
class INetMessageIStream
{ {
INetMIMEMessage *pSourceMsg; INetMIMEMessage *pSourceMsg;
bool bHeaderGenerated; bool bHeaderGenerated;
...@@ -54,44 +53,28 @@ class INetMessageIStream ...@@ -54,44 +53,28 @@ class INetMessageIStream
sal_Char *pMsgRead; sal_Char *pMsgRead;
sal_Char *pMsgWrite; 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; int eState;
sal_uIntPtr nChildIndex; sal_uIntPtr nChildIndex;
INetMIMEMessageStream *pChildStrm; INetMIMEMessageStream *pChildStrm;
SvMemoryStream *pMsgBuffer;
INetMIMEMessageStream (const INetMIMEMessageStream& rStrm) SAL_DELETED_FUNCTION; INetMIMEMessageStream (const INetMIMEMessageStream& rStrm) SAL_DELETED_FUNCTION;
INetMIMEMessageStream& operator= (const INetMIMEMessageStream& rStrm) SAL_DELETED_FUNCTION; INetMIMEMessageStream& operator= (const INetMIMEMessageStream& rStrm) SAL_DELETED_FUNCTION;
protected: int GetInnerMsgLine(sal_Char *pData, sal_uIntPtr nSize);
virtual int GetMsgLine (sal_Char *pData, sal_uIntPtr nSize) SAL_OVERRIDE; int GetOuterMsgLine(sal_Char *pData, sal_uIntPtr nSize);
public: public:
INetMIMEMessageStream (sal_uIntPtr nBufferSize = 2048); 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 #endif
......
...@@ -26,80 +26,7 @@ ...@@ -26,80 +26,7 @@
#include <ctype.h> #include <ctype.h>
// INetMessageIStream int INetMIMEMessageStream::GetInnerMsgLine(sal_Char* pData, sal_uIntPtr nSize)
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)
{ {
if (pSourceMsg == NULL) return INETSTREAM_STATUS_ERROR; if (pSourceMsg == NULL) return INETSTREAM_STATUS_ERROR;
...@@ -158,25 +85,7 @@ int INetMessageIStream::GetMsgLine(sal_Char* pData, sal_uIntPtr nSize) ...@@ -158,25 +85,7 @@ int INetMessageIStream::GetMsgLine(sal_Char* pData, sal_uIntPtr nSize)
return (pWBuf - pData); return (pWBuf - pData);
} }
// INetMIMEMessageStream int INetMIMEMessageStream::GetOuterMsgLine(sal_Char* pData, sal_uIntPtr nSize)
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)
{ {
// Check for message container. // Check for message container.
INetMIMEMessage* pMsg = GetSourceMessage(); INetMIMEMessage* pMsg = GetSourceMessage();
...@@ -223,7 +132,7 @@ int INetMIMEMessageStream::GetMsgLine(sal_Char* pData, sal_uIntPtr nSize) ...@@ -223,7 +132,7 @@ int INetMIMEMessageStream::GetMsgLine(sal_Char* pData, sal_uIntPtr nSize)
} }
// Generate the message header. // Generate the message header.
int nRead = INetMessageIStream::GetMsgLine(pData, nSize); int nRead = GetInnerMsgLine(pData, nSize);
if (nRead <= 0) if (nRead <= 0)
{ {
// Reset state. // Reset state.
...@@ -310,9 +219,84 @@ int INetMIMEMessageStream::GetMsgLine(sal_Char* pData, sal_uIntPtr nSize) ...@@ -310,9 +219,84 @@ int INetMIMEMessageStream::GetMsgLine(sal_Char* pData, sal_uIntPtr nSize)
} }
// No Encoding. // 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: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment