1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 5 #include "mozilla/Attributes.h" 6 #include "msgCore.h" 7 #include "nsIInputStream.h" 8 #include "nsIOutputStream.h" 9 #include "nsISeekableStream.h" 10 #include "prio.h" 11 12 class nsMsgFileStream final : public nsIInputStream, 13 public nsIOutputStream, 14 public nsISeekableStream { 15 public: 16 nsMsgFileStream(); 17 18 NS_DECL_ISUPPORTS 19 20 NS_IMETHOD Available(uint64_t* _retval) override; 21 NS_IMETHOD Read(char* aBuf, uint32_t aCount, uint32_t* _retval) override; 22 NS_IMETHOD ReadSegments(nsWriteSegmentFun aWriter, void* aClosure, 23 uint32_t aCount, uint32_t* _retval) override; 24 NS_DECL_NSIOUTPUTSTREAM 25 NS_DECL_NSISEEKABLESTREAM 26 NS_DECL_NSITELLABLESTREAM 27 28 nsresult InitWithFile(nsIFile* localFile); 29 30 protected: 31 ~nsMsgFileStream(); 32 33 PRFileDesc* mFileDesc; 34 bool mSeekedToEnd; 35 }; 36