nsIStreamLoader.idl (2945B)
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 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/. */ 5 6 #include "nsIThreadRetargetableStreamListener.idl" 7 8 interface nsIRequest; 9 interface nsIStreamLoader; 10 11 [scriptable, uuid(359F7990-D4E9-11d3-A1A5-0050041CAF44)] 12 interface nsIStreamLoaderObserver : nsISupports 13 { 14 /** 15 * Called when the entire stream has been loaded. 16 * 17 * @param loader the stream loader that loaded the stream. 18 * @param ctxt the context parameter of the underlying channel 19 * @param status the status of the underlying channel 20 * @param resultLength the length of the data loaded 21 * @param result the data 22 * 23 * This method will always be called asynchronously by the 24 * nsIStreamLoader involved, on the thread that called the 25 * loader's init() method. 26 * 27 * If the observer wants to take over responsibility for the 28 * data buffer (result), it returns NS_SUCCESS_ADOPTED_DATA 29 * in place of NS_OK as its success code. The loader will then 30 * "forget" about the data and not free() it after 31 * onStreamComplete() returns; observer must call free() 32 * when the data is no longer required. 33 */ 34 void onStreamComplete(in nsIStreamLoader loader, 35 in nsISupports ctxt, 36 in nsresult status, 37 in unsigned long resultLength, 38 [const,array,size_is(resultLength)] in octet result); 39 }; 40 41 /** 42 * Asynchronously loads a channel into a memory buffer. 43 * 44 * To use this interface, first call init() with a nsIStreamLoaderObserver 45 * that will be notified when the data has been loaded. Then call asyncOpen() 46 * on the channel with the nsIStreamLoader as the listener. The context 47 * argument in the asyncOpen() call will be passed to the onStreamComplete() 48 * callback. 49 * 50 * XXX define behaviour for sizes >4 GB 51 */ 52 [scriptable, uuid(323bcff1-7513-4e1f-a541-1c9213c2ed1b)] 53 interface nsIStreamLoader : nsIThreadRetargetableStreamListener 54 { 55 /** 56 * Initialize this stream loader, and start loading the data. 57 * 58 * @param aStreamObserver 59 * An observer that will be notified when the data is complete. 60 * @param aRequestObserver 61 * An optional observer that will be notified when the request 62 * has started or stopped. 63 */ 64 void init(in nsIStreamLoaderObserver aStreamObserver, 65 [optional] in nsIRequestObserver aRequestObserver); 66 67 /** 68 * Gets the number of bytes read so far. 69 */ 70 readonly attribute unsigned long numBytesRead; 71 72 /** 73 * Gets the request that loaded this file. 74 * null after the request has finished loading. 75 */ 76 readonly attribute nsIRequest request; 77 };