tor-browser

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

nsIStreamListenerTee.idl (1985B)


      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 "nsIThreadRetargetableStreamListener.idl"
      6 
      7 interface nsIOutputStream;
      8 interface nsIRequestObserver;
      9 interface nsIEventTarget;
     10 
     11 /**
     12 * As data "flows" into a stream listener tee, it is copied to the output stream
     13 * and then forwarded to the real listener.
     14 */
     15 [scriptable, uuid(62b27fc1-6e8c-4225-8ad0-b9d44252973a)]
     16 interface nsIStreamListenerTee : nsIThreadRetargetableStreamListener
     17 {
     18    /**
     19     * Initalize the tee.
     20     *
     21     * @param listener
     22     *    the original listener the tee will propagate onStartRequest,
     23     *    onDataAvailable and onStopRequest notifications to, exceptions from
     24     *    the listener will be propagated back to the channel
     25     * @param sink
     26     *    the stream the data coming from the channel will be written to,
     27     *    should be blocking
     28     * @param requestObserver
     29     *    optional parameter, listener that gets only onStartRequest and
     30     *    onStopRequest notifications; exceptions threw within this optional
     31     *    observer are also propagated to the channel, but exceptions from
     32     *    the original listener (listener parameter) are privileged
     33     */
     34    void init(in nsIStreamListener listener,
     35              in nsIOutputStream sink,
     36              [optional] in nsIRequestObserver requestObserver);
     37 
     38    /**
     39     * Initalize the tee like above, but with the extra parameter to make it
     40     * possible to copy the output asynchronously
     41     * @param anEventTarget
     42     *    if set, this event-target is used to copy data to the output stream,
     43     *    giving an asynchronous tee
     44    */
     45    void initAsync(in nsIStreamListener listener,
     46                   in nsIEventTarget eventTarget,
     47                   in nsIOutputStream sink,
     48                   [optional] in nsIRequestObserver requestObserver);
     49 
     50 };