netwerk/base/src/nsTemporaryFileInputStream.h

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
     2 /* This Source Code Form is subject to the terms of the Mozilla Public
     3  * License, v. 2.0. If a copy of the MPL was not distributed with this
     4  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     6 #ifndef nsTemporaryFileInputStream_h__
     7 #define nsTemporaryFileInputStream_h__
     9 #include "mozilla/Mutex.h"
    10 #include "nsIInputStream.h"
    11 #include "nsAutoPtr.h"
    12 #include "prio.h"
    14 class nsTemporaryFileInputStream : public nsIInputStream
    15 {
    16 public:
    17   //used to release a PRFileDesc
    18   class FileDescOwner
    19   {
    20     friend class nsTemporaryFileInputStream;
    21   public:
    22     NS_INLINE_DECL_THREADSAFE_REFCOUNTING(FileDescOwner)
    23     FileDescOwner(PRFileDesc* aFD)
    24       : mFD(aFD),
    25         mMutex("FileDescOwner::mMutex")
    26     {
    27       MOZ_ASSERT(aFD);
    28     }
    29     ~FileDescOwner()
    30     {
    31       PR_Close(mFD);
    32     }
    33     mozilla::Mutex& FileMutex() { return mMutex; }
    35   private:
    36     PRFileDesc* mFD;
    37     mozilla::Mutex mMutex;
    38   };
    40   nsTemporaryFileInputStream(FileDescOwner* aFileDescOwner, uint64_t aStartPos, uint64_t aEndPos);
    42   virtual ~nsTemporaryFileInputStream() { }
    44   NS_DECL_THREADSAFE_ISUPPORTS
    45   NS_DECL_NSIINPUTSTREAM
    47 private:
    48   nsRefPtr<FileDescOwner> mFileDescOwner;
    49   uint64_t mStartPos;
    50   uint64_t mEndPos;
    51   bool mClosed;
    52 };
    54 #endif // nsTemporaryFileInputStream_h__

mercurial