1 // InOutTempBuffer.h
2 
3 #ifndef __IN_OUT_TEMP_BUFFER_H
4 #define __IN_OUT_TEMP_BUFFER_H
5 
6 #include "../../Common/MyCom.h"
7 #include "../../Windows/FileDir.h"
8 
9 #include "../IStream.h"
10 
11 class CInOutTempBuffer
12 {
13   NWindows::NFile::NDir::CTempFile _tempFile;
14   NWindows::NFile::NIO::COutFile _outFile;
15   Byte *_buf;
16   size_t _bufPos;
17   UInt64 _size;
18   UInt32 _crc;
19   bool _tempFileCreated;
20 
21   bool WriteToFile(const void *data, UInt32 size);
22 public:
23   CInOutTempBuffer();
24   ~CInOutTempBuffer();
25   void Create();
26 
27   void InitWriting();
28   bool Write(const void *data, UInt32 size);
29 
30   HRESULT WriteToStream(ISequentialOutStream *stream);
GetDataSize()31   UInt64 GetDataSize() const { return _size; }
32 };
33 
34 /*
35 class CSequentialOutTempBufferImp:
36   public ISequentialOutStream,
37   public CMyUnknownImp
38 {
39   CInOutTempBuffer *_buf;
40 public:
41   void Init(CInOutTempBuffer *buffer)  { _buf = buffer; }
42   MY_UNKNOWN_IMP
43 
44   STDMETHOD(Write)(const void *data, UInt32 size, UInt32 *processedSize);
45 };
46 */
47 
48 #endif
49