forked from mirrors/gecko-dev
		
	 2afd829d0f
			
		
	
	
		2afd829d0f
		
	
	
	
	
		
			
			This patch is an automatic replacement of s/NS_NOTREACHED/MOZ_ASSERT_UNREACHABLE/. Reindenting long lines and whitespace fixups follow in patch 6b. MozReview-Commit-ID: 5UQVHElSpCr --HG-- extra : rebase_source : 4c1b2fc32b269342f07639266b64941e2270e9c4 extra : source : 907543f6eae716f23a6de52b1ffb1c82908d158a
		
			
				
	
	
		
			80 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 | |
|  *
 | |
|  * This Source Code Form is subject to the terms of the Mozilla Public
 | |
|  * License, v. 2.0. If a copy of the MPL was not distributed with this
 | |
|  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 | |
| 
 | |
| 
 | |
| #ifndef _nsDiskCacheStreams_h_
 | |
| #define _nsDiskCacheStreams_h_
 | |
| 
 | |
| #include "mozilla/MemoryReporting.h"
 | |
| #include "nsDiskCacheBinding.h"
 | |
| 
 | |
| #include "nsCache.h"
 | |
| 
 | |
| #include "nsIInputStream.h"
 | |
| #include "nsIOutputStream.h"
 | |
| 
 | |
| #include "mozilla/Atomics.h"
 | |
| 
 | |
| class nsDiskCacheDevice;
 | |
| 
 | |
| class nsDiskCacheStreamIO : public nsIOutputStream {
 | |
| public:
 | |
|     explicit nsDiskCacheStreamIO(nsDiskCacheBinding *   binding);
 | |
| 
 | |
|     NS_DECL_THREADSAFE_ISUPPORTS
 | |
|     NS_DECL_NSIOUTPUTSTREAM
 | |
| 
 | |
|     nsresult    GetInputStream(uint32_t offset, nsIInputStream ** inputStream);
 | |
|     nsresult    GetOutputStream(uint32_t offset, nsIOutputStream ** outputStream);
 | |
| 
 | |
|     nsresult    ClearBinding();
 | |
| 
 | |
|     void        IncrementInputStreamCount() { mInStreamCount++; }
 | |
|     void        DecrementInputStreamCount()
 | |
|                 {
 | |
|                     mInStreamCount--;
 | |
|                     NS_ASSERTION(mInStreamCount >= 0, "mInStreamCount has gone negative");
 | |
|                 }
 | |
| 
 | |
|     size_t     SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf);
 | |
| 
 | |
|     // GCC 2.95.2 requires this to be defined, although we never call it.
 | |
|     // and OS/2 requires that it not be private
 | |
|     nsDiskCacheStreamIO()
 | |
|         : mBinding(nullptr),
 | |
|           mDevice(nullptr),
 | |
|           mFD(nullptr),
 | |
|           mStreamEnd(0),
 | |
|           mBufSize(0),
 | |
|           mBuffer(nullptr),
 | |
|           mOutputStreamIsOpen(false)
 | |
|     {
 | |
|         MOZ_ASSERT_UNREACHABLE("oops");
 | |
|     }
 | |
| 
 | |
| private:
 | |
|     virtual ~nsDiskCacheStreamIO();
 | |
| 
 | |
|     nsresult    OpenCacheFile(int flags, PRFileDesc ** fd);
 | |
|     nsresult    ReadCacheBlocks(uint32_t bufferSize);
 | |
|     nsresult    FlushBufferToFile();
 | |
|     void        UpdateFileSize();
 | |
|     void        DeleteBuffer();
 | |
|     nsresult    CloseOutputStream();
 | |
|     nsresult    SeekAndTruncate(uint32_t offset);
 | |
| 
 | |
|     nsDiskCacheBinding *        mBinding;       // not an owning reference
 | |
|     nsDiskCacheDevice *         mDevice;
 | |
|     mozilla::Atomic<int32_t>                     mInStreamCount;
 | |
|     PRFileDesc *                mFD;
 | |
| 
 | |
|     uint32_t                    mStreamEnd;     // current size of data
 | |
|     uint32_t                    mBufSize;       // current end of buffer
 | |
|     char *                      mBuffer;
 | |
|     bool                        mOutputStreamIsOpen;
 | |
| };
 | |
| 
 | |
| #endif // _nsDiskCacheStreams_h_
 |