modules/libjar/zipwriter/src/nsZipWriter.h

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     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  */
     6 #ifndef _nsZipWriter_h_
     7 #define _nsZipWriter_h_
     9 #include "nsIZipWriter.h"
    10 #include "nsIFileStreams.h"
    11 #include "nsIBufferedStreams.h"
    12 #include "nsIRequestObserver.h"
    13 #include "nsZipHeader.h"
    14 #include "nsCOMPtr.h"
    15 #include "nsCOMArray.h"
    16 #include "nsTArray.h"
    17 #include "nsDataHashtable.h"
    18 #include "mozilla/Attributes.h"
    20 #define ZIPWRITER_CONTRACTID "@mozilla.org/zipwriter;1"
    21 #define ZIPWRITER_CID { 0x430d416c, 0xa722, 0x4ad1, \
    22            { 0xbe, 0x98, 0xd9, 0xa4, 0x45, 0xf8, 0x5e, 0x3f } }
    24 #define OPERATION_ADD 0
    25 #define OPERATION_REMOVE 1
    26 struct nsZipQueueItem
    27 {
    28 public:
    29     uint32_t mOperation;
    30     nsCString mZipEntry;
    31     nsCOMPtr<nsIFile> mFile;
    32     nsCOMPtr<nsIChannel> mChannel;
    33     nsCOMPtr<nsIInputStream> mStream;
    34     PRTime mModTime;
    35     int32_t mCompression;
    36     uint32_t mPermissions;
    37 };
    39 class nsZipWriter MOZ_FINAL : public nsIZipWriter,
    40                               public nsIRequestObserver
    41 {
    42 public:
    43     NS_DECL_ISUPPORTS
    44     NS_DECL_NSIZIPWRITER
    45     NS_DECL_NSIREQUESTOBSERVER
    47     nsZipWriter();
    48     nsresult EntryCompleteCallback(nsZipHeader *aHeader, nsresult aStatus);
    50 private:
    51     ~nsZipWriter();
    53     uint32_t mCDSOffset;
    54     bool mCDSDirty;
    55     bool mInQueue;
    57     nsCOMPtr<nsIFile> mFile;
    58     nsCOMPtr<nsIRequestObserver> mProcessObserver;
    59     nsCOMPtr<nsISupports> mProcessContext;
    60     nsCOMPtr<nsIOutputStream> mStream;
    61     nsCOMArray<nsZipHeader> mHeaders;
    62     nsTArray<nsZipQueueItem> mQueue;
    63     nsDataHashtable<nsCStringHashKey, int32_t> mEntryHash;
    64     nsCString mComment;
    66     nsresult SeekCDS();
    67     void Cleanup();
    68     nsresult ReadFile(nsIFile *aFile);
    69     nsresult InternalAddEntryDirectory(const nsACString & aZipEntry,
    70                                        PRTime aModTime, uint32_t aPermissions);
    71     nsresult BeginProcessingAddition(nsZipQueueItem* aItem, bool* complete);
    72     nsresult BeginProcessingRemoval(int32_t aPos);
    73     nsresult AddEntryStream(const nsACString & aZipEntry, PRTime aModTime,
    74                             int32_t aCompression, nsIInputStream *aStream,
    75                             bool aQueue, uint32_t aPermissions);
    76     void BeginProcessingNextItem();
    77     void FinishQueue(nsresult aStatus);
    78 };
    80 #endif

mercurial