tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

nsIAsyncStreamCopier.idl (2424B)


      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 "nsIRequest.idl"
      6 
      7 interface nsIInputStream;
      8 interface nsIOutputStream;
      9 interface nsIRequestObserver;
     10 interface nsIEventTarget;
     11 
     12 // You should prefer nsIAsyncStreamCopier2
     13 [scriptable, uuid(5a19ca27-e041-4aca-8287-eb248d4c50c0)]
     14 interface nsIAsyncStreamCopier : nsIRequest
     15 {
     16    /**
     17     * Initialize the stream copier.
     18     *
     19     * @param aSource
     20     *        contains the data to be copied.
     21     * @param aSink
     22     *        specifies the destination for the data.
     23     * @param aTarget
     24     *        specifies the thread on which the copy will occur.  a null value
     25     *        is permitted and will cause the copy to occur on an unspecified
     26     *        background thread.
     27     * @param aSourceBuffered
     28     *        true if aSource implements ReadSegments.
     29     * @param aSinkBuffered
     30     *        true if aSink implements WriteSegments.
     31     * @param aChunkSize
     32     *        specifies how many bytes to read/write at a time.  this controls
     33     *        the granularity of the copying.  it should match the segment size
     34     *        of the "buffered" streams involved.
     35     * @param aCloseSource
     36     *        true if aSource should be closed after copying.
     37     * @param aCloseSink
     38     *        true if aSink should be closed after copying.
     39     *
     40     * NOTE: at least one of the streams must be buffered. If you do not know
     41     * whether your streams are buffered, you should use nsIAsyncStreamCopier2
     42     * instead.
     43     */
     44    void init(in nsIInputStream    aSource,
     45              in nsIOutputStream   aSink,
     46              in nsIEventTarget    aTarget,
     47              in boolean           aSourceBuffered,
     48              in boolean           aSinkBuffered,
     49              in unsigned long     aChunkSize,
     50              in boolean           aCloseSource,
     51              in boolean           aCloseSink);
     52 
     53    /**
     54     * asyncCopy triggers the start of the copy.  The observer will be notified
     55     * when the copy completes.
     56     *
     57     * @param aObserver
     58     *        receives notifications.
     59     * @param aObserverContext
     60     *        passed to observer methods.
     61     */
     62    void asyncCopy(in nsIRequestObserver   aObserver,
     63                   in nsISupports          aObserverContext);
     64 };