/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set ts=8 sts=2 et sw=2 tw=80: */ /* 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/. */ #include "nsISupports.idl" interface nsISerialEventTarget; /** * nsIThreadRetargetableRequest * * Should be implemented by requests that support retargeting delivery of * data off the main thread. */ [uuid(27b84c48-5a73-4ba4-a8a4-8b5e649a145e)] interface nsIThreadRetargetableRequest : nsISupports { /** * Called to retarget delivery of OnDataAvailable to another thread. Should * only be called before AsyncOpen for nsIWebsocketChannels, or during * OnStartRequest for nsIChannels. * Note: For nsIChannels, OnStartRequest and OnStopRequest will still be * delivered on the main thread. * * @param aNewTarget New event target, e.g. thread or threadpool. * * Note: no return value is given. If the retargeting cannot be handled, * normal delivery to the main thread will continue. As such, listeners * should be ready to deal with OnDataAvailable on either the main thread or * the new target thread. */ void retargetDeliveryTo(in nsISerialEventTarget aNewTarget); /** * Returns the event target where OnDataAvailable events will be dispatched. * * This is only valid after OnStartRequest has been called. Any time before * that point, the value may be changed by `retargetDeliveryTo` calls. */ readonly attribute nsISerialEventTarget deliveryTarget; };