Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/GAP/extern/gmp/printf/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 18.9.2025 mit Größe 1 kB image not shown  

Quelle  CacheFileInputStream.h   Sprache: C

 
/* 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 CacheFileInputStream__h__
#define CacheFileInputStream__h__

#include "nsIAsyncInputStream.h"
#include "nsISeekableStream.h"
#include "nsCOMPtr.h"
#include "CacheFileChunk.h"

namespace mozilla {
namespace net {

class CacheFile;

class CacheFileInputStream : public nsIAsyncInputStream,
                             public nsISeekableStream,
                             public CacheFileChunkListener {
  NS_DECL_THREADSAFE_ISUPPORTS
  NS_DECL_NSIINPUTSTREAM
  NS_DECL_NSIASYNCINPUTSTREAM
  NS_DECL_NSISEEKABLESTREAM
  NS_DECL_NSITELLABLESTREAM

 public:
  explicit CacheFileInputStream(CacheFile* aFile, nsISupports* aEntry,
                                bool aAlternativeData);

  NS_IMETHOD OnChunkRead(nsresult aResult, CacheFileChunk* aChunk) override;
  NS_IMETHOD OnChunkWritten(nsresult aResult, CacheFileChunk* aChunk) override;
  NS_IMETHOD OnChunkAvailable(nsresult aResult, uint32_t aChunkIdx,
                              CacheFileChunk* aChunk) override;
  NS_IMETHOD OnChunkUpdated(CacheFileChunk* aChunk) override;

  // Memory reporting
  size_t SizeOfIncludingThis(mozilla::MallocSizeOf mallocSizeOf) const;

  uint32_t GetPosition() const { return mPos; };
  bool IsAlternativeData() const { return mAlternativeData; };
  int64_t GetChunkIdx() const {
    return mChunk ? static_cast<int64_t>(mChunk->Index()) : -1;
  };

 private:
  virtual ~CacheFileInputStream();

  void CloseWithStatusLocked(nsresult aStatus);
  void CleanUp();
  void ReleaseChunk();
  void EnsureCorrectChunk(bool aReleaseOnly);

  // CanRead returns negative value when output stream truncates the data before
  // the input stream's mPos.
  int64_t CanRead(CacheFileChunkReadHandle* aHandle);
  void NotifyListener();
  void MaybeNotifyListener();

  RefPtr<CacheFile> mFile;
  RefPtr<CacheFileChunk> mChunk;
  int64_t mPos;
  nsresult mStatus;
  bool mClosed : 1;
  bool mInReadSegments : 1;
  bool mWaitingForUpdate : 1;
  bool const mAlternativeData : 1;
  int64_t mListeningForChunk;

  nsCOMPtr<nsIInputStreamCallback> mCallback;
  uint32_t mCallbackFlags;
  nsCOMPtr<nsIEventTarget> mCallbackTarget;
  // Held purely for referencing purposes
  RefPtr<nsISupports> mCacheEntryHandle;
};

}  // namespace net
}  // namespace mozilla

#endif

100%


¤ Dauer der Verarbeitung: 0.25 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.