1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir #ifndef _TOOLS_INETSTRM_HXX 28*cdf0e10cSrcweir #define _TOOLS_INETSTRM_HXX 29*cdf0e10cSrcweir 30*cdf0e10cSrcweir #include "tools/toolsdllapi.h" 31*cdf0e10cSrcweir #include <sal/types.h> 32*cdf0e10cSrcweir #include <tools/string.hxx> 33*cdf0e10cSrcweir 34*cdf0e10cSrcweir class INetMessage; 35*cdf0e10cSrcweir class INetMIMEMessage; 36*cdf0e10cSrcweir class INetHTTPMessage; 37*cdf0e10cSrcweir class SvMemoryStream; 38*cdf0e10cSrcweir class SvStream; 39*cdf0e10cSrcweir 40*cdf0e10cSrcweir /*========================================================================= 41*cdf0e10cSrcweir * 42*cdf0e10cSrcweir * INetStream Interface. 43*cdf0e10cSrcweir * 44*cdf0e10cSrcweir *=======================================================================*/ 45*cdf0e10cSrcweir enum INetStreamStatus 46*cdf0e10cSrcweir { 47*cdf0e10cSrcweir INETSTREAM_STATUS_LOADED = -4, 48*cdf0e10cSrcweir INETSTREAM_STATUS_WOULDBLOCK = -3, 49*cdf0e10cSrcweir INETSTREAM_STATUS_OK = -2, 50*cdf0e10cSrcweir INETSTREAM_STATUS_ERROR = -1 51*cdf0e10cSrcweir }; 52*cdf0e10cSrcweir 53*cdf0e10cSrcweir /* 54*cdf0e10cSrcweir * INetIStream. 55*cdf0e10cSrcweir */ 56*cdf0e10cSrcweir class TOOLS_DLLPUBLIC INetIStream 57*cdf0e10cSrcweir { 58*cdf0e10cSrcweir // Not implemented. 59*cdf0e10cSrcweir INetIStream (const INetIStream& rStrm); 60*cdf0e10cSrcweir INetIStream& operator= (const INetIStream& rStrm); 61*cdf0e10cSrcweir 62*cdf0e10cSrcweir protected: 63*cdf0e10cSrcweir virtual int GetData (sal_Char *pData, sal_uIntPtr nSize) = 0; 64*cdf0e10cSrcweir 65*cdf0e10cSrcweir public: 66*cdf0e10cSrcweir INetIStream (); 67*cdf0e10cSrcweir virtual ~INetIStream (void); 68*cdf0e10cSrcweir 69*cdf0e10cSrcweir int Read (sal_Char *pData, sal_uIntPtr nSize); 70*cdf0e10cSrcweir 71*cdf0e10cSrcweir static void Decode64 (SvStream& rIn, SvStream& rOut); 72*cdf0e10cSrcweir static void Encode64 (SvStream& rIn, SvStream& rOut); 73*cdf0e10cSrcweir }; 74*cdf0e10cSrcweir 75*cdf0e10cSrcweir /* 76*cdf0e10cSrcweir * INetOStream. 77*cdf0e10cSrcweir */ 78*cdf0e10cSrcweir class INetOStream 79*cdf0e10cSrcweir { 80*cdf0e10cSrcweir // Not implemented. 81*cdf0e10cSrcweir INetOStream (const INetOStream& rStrm); 82*cdf0e10cSrcweir INetOStream& operator= (const INetOStream& rStrm); 83*cdf0e10cSrcweir 84*cdf0e10cSrcweir protected: 85*cdf0e10cSrcweir virtual int PutData ( 86*cdf0e10cSrcweir const sal_Char *pData, sal_uIntPtr nSize) = 0; 87*cdf0e10cSrcweir 88*cdf0e10cSrcweir public: 89*cdf0e10cSrcweir INetOStream (); 90*cdf0e10cSrcweir virtual ~INetOStream (void); 91*cdf0e10cSrcweir 92*cdf0e10cSrcweir int Write (const sal_Char *pData, sal_uIntPtr nSize); 93*cdf0e10cSrcweir }; 94*cdf0e10cSrcweir 95*cdf0e10cSrcweir /* 96*cdf0e10cSrcweir * INetIOStream. 97*cdf0e10cSrcweir */ 98*cdf0e10cSrcweir class INetIOStream : public INetIStream, public INetOStream 99*cdf0e10cSrcweir { 100*cdf0e10cSrcweir // Not implemented. 101*cdf0e10cSrcweir INetIOStream (const INetIOStream& rStrm); 102*cdf0e10cSrcweir INetIOStream& operator= (const INetIOStream& rStrm); 103*cdf0e10cSrcweir 104*cdf0e10cSrcweir public: 105*cdf0e10cSrcweir INetIOStream (sal_uIntPtr nIBufferSize = 0, sal_uIntPtr nOBufferSize = 0); 106*cdf0e10cSrcweir virtual ~INetIOStream (void); 107*cdf0e10cSrcweir }; 108*cdf0e10cSrcweir 109*cdf0e10cSrcweir /*========================================================================= 110*cdf0e10cSrcweir * 111*cdf0e10cSrcweir * INetMessageStream Interface. 112*cdf0e10cSrcweir * 113*cdf0e10cSrcweir *=======================================================================*/ 114*cdf0e10cSrcweir enum INetMessageStreamState 115*cdf0e10cSrcweir { 116*cdf0e10cSrcweir INETMSG_EOL_BEGIN, 117*cdf0e10cSrcweir INETMSG_EOL_DONE, 118*cdf0e10cSrcweir INETMSG_EOL_SCR, 119*cdf0e10cSrcweir INETMSG_EOL_FCR, 120*cdf0e10cSrcweir INETMSG_EOL_FLF, 121*cdf0e10cSrcweir INETMSG_EOL_FSP, 122*cdf0e10cSrcweir INETMSG_EOL_FESC 123*cdf0e10cSrcweir }; 124*cdf0e10cSrcweir 125*cdf0e10cSrcweir /* 126*cdf0e10cSrcweir * INetMessageIStream (Message Generator) Interface. 127*cdf0e10cSrcweir */ 128*cdf0e10cSrcweir class INetMessageIStream : public INetIStream 129*cdf0e10cSrcweir { 130*cdf0e10cSrcweir INetMessage *pSourceMsg; 131*cdf0e10cSrcweir sal_Bool bHeaderGenerated; 132*cdf0e10cSrcweir 133*cdf0e10cSrcweir sal_uIntPtr nBufSiz; 134*cdf0e10cSrcweir sal_Char *pBuffer; 135*cdf0e10cSrcweir sal_Char *pRead; 136*cdf0e10cSrcweir sal_Char *pWrite; 137*cdf0e10cSrcweir 138*cdf0e10cSrcweir SvStream *pMsgStrm; 139*cdf0e10cSrcweir SvMemoryStream *pMsgBuffer; 140*cdf0e10cSrcweir sal_Char *pMsgRead; 141*cdf0e10cSrcweir sal_Char *pMsgWrite; 142*cdf0e10cSrcweir 143*cdf0e10cSrcweir virtual int GetData (sal_Char *pData, sal_uIntPtr nSize); 144*cdf0e10cSrcweir 145*cdf0e10cSrcweir // Not implemented. 146*cdf0e10cSrcweir INetMessageIStream (const INetMessageIStream& rStrm); 147*cdf0e10cSrcweir INetMessageIStream& operator= (const INetMessageIStream& rStrm); 148*cdf0e10cSrcweir 149*cdf0e10cSrcweir protected: 150*cdf0e10cSrcweir virtual int GetMsgLine (sal_Char *pData, sal_uIntPtr nSize); 151*cdf0e10cSrcweir 152*cdf0e10cSrcweir public: 153*cdf0e10cSrcweir INetMessageIStream (sal_uIntPtr nBufferSize = 2048); 154*cdf0e10cSrcweir virtual ~INetMessageIStream (void); 155*cdf0e10cSrcweir 156*cdf0e10cSrcweir INetMessage *GetSourceMessage (void) const { return pSourceMsg; } 157*cdf0e10cSrcweir void SetSourceMessage (INetMessage *pMsg) { pSourceMsg = pMsg; } 158*cdf0e10cSrcweir 159*cdf0e10cSrcweir void GenerateHeader (sal_Bool bGen = sal_True) { bHeaderGenerated = !bGen; } 160*cdf0e10cSrcweir sal_Bool IsHeaderGenerated (void) const { return bHeaderGenerated; } 161*cdf0e10cSrcweir }; 162*cdf0e10cSrcweir 163*cdf0e10cSrcweir /* 164*cdf0e10cSrcweir * INetMessageOStream (Message Parser) Interface. 165*cdf0e10cSrcweir */ 166*cdf0e10cSrcweir class INetMessageOStream : public INetOStream 167*cdf0e10cSrcweir { 168*cdf0e10cSrcweir INetMessage *pTargetMsg; 169*cdf0e10cSrcweir sal_Bool bHeaderParsed; 170*cdf0e10cSrcweir 171*cdf0e10cSrcweir INetMessageStreamState eOState; 172*cdf0e10cSrcweir 173*cdf0e10cSrcweir SvMemoryStream *pMsgBuffer; 174*cdf0e10cSrcweir 175*cdf0e10cSrcweir virtual int PutData (const sal_Char *pData, sal_uIntPtr nSize); 176*cdf0e10cSrcweir 177*cdf0e10cSrcweir // Not implemented. 178*cdf0e10cSrcweir INetMessageOStream (const INetMessageOStream& rStrm); 179*cdf0e10cSrcweir INetMessageOStream& operator= (const INetMessageOStream& rStrm); 180*cdf0e10cSrcweir 181*cdf0e10cSrcweir protected: 182*cdf0e10cSrcweir virtual int PutMsgLine (const sal_Char *pData, sal_uIntPtr nSize); 183*cdf0e10cSrcweir 184*cdf0e10cSrcweir public: 185*cdf0e10cSrcweir INetMessageOStream (void); 186*cdf0e10cSrcweir virtual ~INetMessageOStream (void); 187*cdf0e10cSrcweir 188*cdf0e10cSrcweir INetMessage *GetTargetMessage (void) const { return pTargetMsg; } 189*cdf0e10cSrcweir void SetTargetMessage (INetMessage *pMsg) { pTargetMsg = pMsg; } 190*cdf0e10cSrcweir 191*cdf0e10cSrcweir void ParseHeader (sal_Bool bParse = sal_True) { bHeaderParsed = !bParse; } 192*cdf0e10cSrcweir sal_Bool IsHeaderParsed (void) const { return bHeaderParsed; } 193*cdf0e10cSrcweir }; 194*cdf0e10cSrcweir 195*cdf0e10cSrcweir /* 196*cdf0e10cSrcweir * INetMessageIOStream Interface. 197*cdf0e10cSrcweir */ 198*cdf0e10cSrcweir class INetMessageIOStream 199*cdf0e10cSrcweir : public INetMessageIStream, 200*cdf0e10cSrcweir public INetMessageOStream 201*cdf0e10cSrcweir { 202*cdf0e10cSrcweir // Not implemented. 203*cdf0e10cSrcweir INetMessageIOStream (const INetMessageIOStream& rStrm); 204*cdf0e10cSrcweir INetMessageIOStream& operator= (const INetMessageIOStream& rStrm); 205*cdf0e10cSrcweir 206*cdf0e10cSrcweir public: 207*cdf0e10cSrcweir INetMessageIOStream (sal_uIntPtr nBufferSize = 2048); 208*cdf0e10cSrcweir virtual ~INetMessageIOStream (void); 209*cdf0e10cSrcweir }; 210*cdf0e10cSrcweir 211*cdf0e10cSrcweir /*========================================================================= 212*cdf0e10cSrcweir * 213*cdf0e10cSrcweir * INetMIMEMessageStream Interface. 214*cdf0e10cSrcweir * 215*cdf0e10cSrcweir *=======================================================================*/ 216*cdf0e10cSrcweir enum INetMessageEncoding 217*cdf0e10cSrcweir { 218*cdf0e10cSrcweir INETMSG_ENCODING_7BIT, 219*cdf0e10cSrcweir INETMSG_ENCODING_8BIT, 220*cdf0e10cSrcweir INETMSG_ENCODING_BINARY, 221*cdf0e10cSrcweir INETMSG_ENCODING_QUOTED, 222*cdf0e10cSrcweir INETMSG_ENCODING_BASE64 223*cdf0e10cSrcweir }; 224*cdf0e10cSrcweir 225*cdf0e10cSrcweir class TOOLS_DLLPUBLIC INetMIMEMessageStream : public INetMessageIOStream 226*cdf0e10cSrcweir { 227*cdf0e10cSrcweir int eState; 228*cdf0e10cSrcweir 229*cdf0e10cSrcweir sal_uIntPtr nChildIndex; 230*cdf0e10cSrcweir INetMIMEMessageStream *pChildStrm; 231*cdf0e10cSrcweir 232*cdf0e10cSrcweir INetMessageEncoding eEncoding; 233*cdf0e10cSrcweir INetMessageIStream *pEncodeStrm; 234*cdf0e10cSrcweir INetMessageOStream *pDecodeStrm; 235*cdf0e10cSrcweir 236*cdf0e10cSrcweir SvMemoryStream *pMsgBuffer; 237*cdf0e10cSrcweir 238*cdf0e10cSrcweir static INetMessageEncoding GetMsgEncoding ( 239*cdf0e10cSrcweir const String& rContentType); 240*cdf0e10cSrcweir 241*cdf0e10cSrcweir // Not implemented. 242*cdf0e10cSrcweir INetMIMEMessageStream (const INetMIMEMessageStream& rStrm); 243*cdf0e10cSrcweir INetMIMEMessageStream& operator= (const INetMIMEMessageStream& rStrm); 244*cdf0e10cSrcweir 245*cdf0e10cSrcweir protected: 246*cdf0e10cSrcweir virtual int GetMsgLine (sal_Char *pData, sal_uIntPtr nSize); 247*cdf0e10cSrcweir virtual int PutMsgLine (const sal_Char *pData, sal_uIntPtr nSize); 248*cdf0e10cSrcweir 249*cdf0e10cSrcweir public: 250*cdf0e10cSrcweir INetMIMEMessageStream (sal_uIntPtr nBufferSize = 2048); 251*cdf0e10cSrcweir virtual ~INetMIMEMessageStream (void); 252*cdf0e10cSrcweir 253*cdf0e10cSrcweir using INetMessageIStream::SetSourceMessage; 254*cdf0e10cSrcweir void SetSourceMessage (INetMIMEMessage *pMsg) 255*cdf0e10cSrcweir { 256*cdf0e10cSrcweir INetMessageIStream::SetSourceMessage ((INetMessage *)pMsg); 257*cdf0e10cSrcweir } 258*cdf0e10cSrcweir INetMIMEMessage *GetSourceMessage (void) const 259*cdf0e10cSrcweir { 260*cdf0e10cSrcweir return ((INetMIMEMessage *)INetMessageIStream::GetSourceMessage()); 261*cdf0e10cSrcweir } 262*cdf0e10cSrcweir 263*cdf0e10cSrcweir using INetMessageOStream::SetTargetMessage; 264*cdf0e10cSrcweir void SetTargetMessage (INetMIMEMessage *pMsg) 265*cdf0e10cSrcweir { 266*cdf0e10cSrcweir INetMessageOStream::SetTargetMessage ((INetMessage *)pMsg); 267*cdf0e10cSrcweir } 268*cdf0e10cSrcweir INetMIMEMessage *GetTargetMessage (void) const 269*cdf0e10cSrcweir { 270*cdf0e10cSrcweir return ((INetMIMEMessage *)INetMessageOStream::GetTargetMessage()); 271*cdf0e10cSrcweir } 272*cdf0e10cSrcweir }; 273*cdf0e10cSrcweir 274*cdf0e10cSrcweir #endif /* !_TOOLS_INETSTRM_HXX */ 275*cdf0e10cSrcweir 276