Created common base class for nsIStreamXXX proxies.
git-svn-id: svn://10.0.0.236/branches/DARIN_AsyncWrite_20001227_BRANCH@84245 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -10,9 +10,6 @@
|
||||
#define DEFAULT_BUFFER_SEGMENT_SIZE 2048
|
||||
#define DEFAULT_BUFFER_MAX_SIZE (4*2048)
|
||||
|
||||
#define GET_LISTENER_PROXY(p) \
|
||||
((nsStreamListenerProxy *) (nsIStreamObserverProxy *) p)
|
||||
|
||||
#ifdef DEBUG
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -119,7 +116,7 @@ nsStreamListenerProxy::~nsStreamListenerProxy()
|
||||
class nsOnDataAvailableEvent : public nsStreamObserverEvent
|
||||
{
|
||||
public:
|
||||
nsOnDataAvailableEvent(nsIStreamObserverProxy *aProxy,
|
||||
nsOnDataAvailableEvent(nsStreamProxyBase *aProxy,
|
||||
nsIChannel *aChannel,
|
||||
nsISupports *aContext,
|
||||
nsIInputStream *aSource,
|
||||
@@ -151,7 +148,8 @@ nsOnDataAvailableEvent::HandleEvent()
|
||||
{
|
||||
PRINTF("HandleEvent -- OnDataAvailable [event=%x]", this);
|
||||
|
||||
nsStreamListenerProxy *listenerProxy = GET_LISTENER_PROXY(mProxy);
|
||||
nsStreamListenerProxy *listenerProxy =
|
||||
NS_STATIC_CAST(nsStreamListenerProxy *, mProxy);
|
||||
|
||||
nsIStreamListener *listener = listenerProxy->GetListener();
|
||||
if (!listener) {
|
||||
@@ -179,15 +177,6 @@ nsOnDataAvailableEvent::HandleEvent()
|
||||
}
|
||||
#endif
|
||||
|
||||
//
|
||||
// If we are the only event at the moment and the pipe has extra data...
|
||||
// feed that to the client...
|
||||
//
|
||||
//if (listenerProxy->mChannelToResume && (avail > mCount)) {
|
||||
// NS_WARNING("pipe contains unread data");
|
||||
// mCount = avail; // this is potentially very bad
|
||||
//}
|
||||
|
||||
// Give the listener a chance to read some data.
|
||||
rv = listener->OnDataAvailable(mChannel, mContext, mSource, mOffset, mCount);
|
||||
|
||||
@@ -226,7 +215,7 @@ nsOnDataAvailableEvent::HandleEvent()
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
NS_IMPL_ISUPPORTS_INHERITED3(nsStreamListenerProxy,
|
||||
nsStreamObserverProxy,
|
||||
nsStreamProxyBase,
|
||||
nsIStreamListenerProxy,
|
||||
nsIStreamListener,
|
||||
nsIInputStreamObserver)
|
||||
@@ -241,7 +230,7 @@ nsStreamListenerProxy::OnStartRequest(nsIChannel *aChannel,
|
||||
nsISupports *aContext)
|
||||
{
|
||||
|
||||
return nsStreamObserverProxy::OnStartRequest(aChannel, aContext);
|
||||
return nsStreamProxyBase::OnStartRequest(aChannel, aContext);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
@@ -256,8 +245,8 @@ nsStreamListenerProxy::OnStopRequest(nsIChannel *aChannel,
|
||||
mPipeIn = 0;
|
||||
mPipeOut = 0;
|
||||
|
||||
return nsStreamObserverProxy::OnStopRequest(aChannel, aContext,
|
||||
aStatus, aStatusText);
|
||||
return nsStreamProxyBase::OnStopRequest(aChannel, aContext,
|
||||
aStatus, aStatusText);
|
||||
}
|
||||
|
||||
//
|
||||
@@ -304,21 +293,13 @@ nsStreamListenerProxy::OnDataAvailable(nsIChannel *aChannel,
|
||||
// inside the "C" monitor ensures that the resume will follow the
|
||||
// suspend.
|
||||
//
|
||||
PRUint32 count, bytesWritten=0;
|
||||
rv = mPipeIn->Available(&count);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
PRUint32 bytesWritten=0;
|
||||
|
||||
if (count == 0) {
|
||||
PRINTF("Writing to the pipe...\n");FLUSH();
|
||||
rv = mPipeOut->WriteFrom(aSource, aCount, &bytesWritten);
|
||||
PRINTF("Writing to the pipe...\n");FLUSH();
|
||||
rv = mPipeOut->WriteFrom(aSource, aCount, &bytesWritten);
|
||||
|
||||
PRINTF("mPipeOut->WriteFrom(aSource) [rv=%x aCount=%u bytesWritten=%u]\n",
|
||||
rv, aCount, bytesWritten);FLUSH();
|
||||
}
|
||||
else {
|
||||
PRINTF("Already %u bytes in the pipe\n", count);
|
||||
rv = NS_BASE_STREAM_WOULD_BLOCK;
|
||||
}
|
||||
PRINTF("mPipeOut->WriteFrom(aSource) [rv=%x aCount=%u bytesWritten=%u]\n",
|
||||
rv, aCount, bytesWritten);FLUSH();
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
if (rv == NS_BASE_STREAM_WOULD_BLOCK) {
|
||||
@@ -347,7 +328,7 @@ nsStreamListenerProxy::OnDataAvailable(nsIChannel *aChannel,
|
||||
aOffset, bytesWritten);
|
||||
if (!ev) return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
rv = ev->FireEvent(mEventQueue);
|
||||
rv = ev->FireEvent(GetEventQueue());
|
||||
if (NS_FAILED(rv)) {
|
||||
delete ev;
|
||||
return rv;
|
||||
@@ -366,8 +347,8 @@ nsStreamListenerProxy::Init(nsIStreamListener *aListener,
|
||||
PRUint32 aBufferSegmentSize,
|
||||
PRUint32 aBufferMaxSize)
|
||||
{
|
||||
NS_PRECONDITION(mReceiver == 0, "Listener already set");
|
||||
NS_PRECONDITION(mEventQueue == 0, "Event queue already set");
|
||||
NS_PRECONDITION(GetReceiver() == nsnull, "Listener already set");
|
||||
NS_PRECONDITION(GetEventQueue() == nsnull, "Event queue already set");
|
||||
|
||||
mLMonitor = nsAutoMonitor::NewMonitor("ListenerStatus");
|
||||
if (!mLMonitor) return NS_ERROR_OUT_OF_MEMORY;
|
||||
@@ -397,15 +378,8 @@ nsStreamListenerProxy::Init(nsIStreamListener *aListener,
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIInputStreamObserver> ob;
|
||||
rv = mPipeIn->GetObserver(getter_AddRefs(ob));
|
||||
if (NS_FAILED(rv)) {
|
||||
PRINTF("GetObserver failed: rv=%x\n", rv);
|
||||
return rv;
|
||||
}
|
||||
PRINTF("this=%x, observer=%x\n", this, ob.get());
|
||||
|
||||
return nsStreamObserverProxy::Init(aListener, aEventQ);
|
||||
SetReceiver(aListener);
|
||||
return SetEventQueue(aEventQ);
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
#include "nsIOutputStream.h"
|
||||
#include "nsCOMPtr.h"
|
||||
|
||||
class nsStreamListenerProxy : public nsStreamObserverProxy
|
||||
class nsStreamListenerProxy : public nsStreamProxyBase
|
||||
, public nsIStreamListenerProxy
|
||||
, public nsIInputStreamObserver
|
||||
{
|
||||
|
||||
@@ -40,13 +40,20 @@ static NS_DEFINE_CID(kEventQueueService, NS_EVENTQUEUESERVICE_CID);
|
||||
// nsStreamObserverEvent implementation...
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
nsStreamObserverEvent::nsStreamObserverEvent(nsIStreamObserverProxy *aProxy,
|
||||
nsStreamObserverEvent::nsStreamObserverEvent(nsStreamProxyBase *aProxy,
|
||||
nsIChannel *aChannel,
|
||||
nsISupports *aContext)
|
||||
: mProxy(aProxy)
|
||||
, mChannel(aChannel)
|
||||
, mContext(aContext)
|
||||
{}
|
||||
{
|
||||
NS_IF_ADDREF(mProxy);
|
||||
}
|
||||
|
||||
nsStreamObserverEvent::~nsStreamObserverEvent()
|
||||
{
|
||||
NS_IF_RELEASE(mProxy);
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsStreamObserverEvent::FireEvent(nsIEventQueue *aEventQ)
|
||||
@@ -87,7 +94,7 @@ nsStreamObserverEvent::DestroyPLEvent(PLEvent *aEvent)
|
||||
class nsOnStartRequestEvent : public nsStreamObserverEvent
|
||||
{
|
||||
public:
|
||||
nsOnStartRequestEvent(nsIStreamObserverProxy *aProxy,
|
||||
nsOnStartRequestEvent(nsStreamProxyBase *aProxy,
|
||||
nsIChannel *aChannel,
|
||||
nsISupports *aContext)
|
||||
: nsStreamObserverEvent(aProxy, aChannel, aContext)
|
||||
@@ -108,7 +115,7 @@ nsOnStartRequestEvent::HandleEvent()
|
||||
{
|
||||
PRINTF("HandleEvent -- OnStartRequest [event=%x]\n", this);
|
||||
|
||||
nsIStreamObserver *observer = GET_OBSERVER_PROXY(mProxy)->GetReceiver();
|
||||
nsIStreamObserver *observer = mProxy->GetReceiver();
|
||||
if (!observer) {
|
||||
PRINTF("Already called OnStopRequest (observer is NULL)\n");
|
||||
return NS_ERROR_FAILURE;
|
||||
@@ -125,7 +132,7 @@ nsOnStartRequestEvent::HandleEvent()
|
||||
class nsOnStopRequestEvent : public nsStreamObserverEvent
|
||||
{
|
||||
public:
|
||||
nsOnStopRequestEvent(nsIStreamObserverProxy *aProxy,
|
||||
nsOnStopRequestEvent(nsStreamProxyBase *aProxy,
|
||||
nsIChannel *aChannel, nsISupports *aContext,
|
||||
nsresult aStatus, const PRUnichar *aStatusText)
|
||||
: nsStreamObserverEvent(aProxy, aChannel, aContext)
|
||||
@@ -152,61 +159,65 @@ nsOnStopRequestEvent::HandleEvent()
|
||||
{
|
||||
PRINTF("HandleEvent -- OnStopRequest [event=%x]\n", this);
|
||||
|
||||
nsStreamObserverProxy *observerProxy = GET_OBSERVER_PROXY(mProxy);
|
||||
|
||||
nsCOMPtr<nsIStreamObserver> observer = observerProxy->GetReceiver();
|
||||
nsCOMPtr<nsIStreamObserver> observer = mProxy->GetReceiver();
|
||||
if (!observer) {
|
||||
PRINTF("Already called OnStopRequest (observer is NULL)\n");
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
observerProxy->ClearReceiver();
|
||||
return observer->OnStopRequest(mChannel, mContext, mStatus, mStatusText.GetUnicode());
|
||||
//
|
||||
// Do not allow any more events to be handled after OnStopRequest
|
||||
//
|
||||
mProxy->SetReceiver(nsnull);
|
||||
|
||||
return observer->OnStopRequest(mChannel,
|
||||
mContext,
|
||||
mStatus,
|
||||
mStatusText.GetUnicode());
|
||||
}
|
||||
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// nsISupports implementation...
|
||||
// nsStreamProxyBase: nsISupports implementation...
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
NS_IMPL_THREADSAFE_ISUPPORTS2(nsStreamObserverProxy,
|
||||
nsIStreamObserverProxy,
|
||||
NS_IMPL_THREADSAFE_ISUPPORTS1(nsStreamProxyBase,
|
||||
nsIStreamObserver)
|
||||
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// nsIStreamObserver implementation...
|
||||
// nsStreamProxyBase: nsIStreamObserver implementation...
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
NS_IMETHODIMP
|
||||
nsStreamObserverProxy::OnStartRequest(nsIChannel *aChannel,
|
||||
nsISupports *aContext)
|
||||
nsStreamProxyBase::OnStartRequest(nsIChannel *aChannel,
|
||||
nsISupports *aContext)
|
||||
{
|
||||
PRINTF("nsStreamObserverProxy::OnStartRequest\n");
|
||||
PRINTF("nsStreamProxyBase::OnStartRequest\n");
|
||||
nsOnStartRequestEvent *ev =
|
||||
new nsOnStartRequestEvent(this, aChannel, aContext);
|
||||
if (!ev)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
nsresult rv = ev->FireEvent(mEventQueue);
|
||||
nsresult rv = ev->FireEvent(GetEventQueue());
|
||||
if (NS_FAILED(rv))
|
||||
delete ev;
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsStreamObserverProxy::OnStopRequest(nsIChannel *aChannel,
|
||||
nsISupports *aContext,
|
||||
nsresult aStatus,
|
||||
const PRUnichar *aStatusText)
|
||||
nsStreamProxyBase::OnStopRequest(nsIChannel *aChannel,
|
||||
nsISupports *aContext,
|
||||
nsresult aStatus,
|
||||
const PRUnichar *aStatusText)
|
||||
{
|
||||
PRINTF("nsStreamObserverProxy::OnStopRequest [status=%x]\n", aStatus);
|
||||
PRINTF("nsStreamProxyBase::OnStopRequest [status=%x]\n", aStatus);
|
||||
nsOnStopRequestEvent *ev =
|
||||
new nsOnStopRequestEvent(this, aChannel, aContext, aStatus, aStatusText);
|
||||
if (!ev)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
nsresult rv = ev->FireEvent(mEventQueue);
|
||||
nsresult rv = ev->FireEvent(GetEventQueue());
|
||||
if (NS_FAILED(rv))
|
||||
delete ev;
|
||||
return rv;
|
||||
@@ -214,29 +225,44 @@ nsStreamObserverProxy::OnStopRequest(nsIChannel *aChannel,
|
||||
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// nsIStreamObserverProxy implementation...
|
||||
// nsStreamProxyBase: implementation...
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
NS_IMETHODIMP
|
||||
nsStreamObserverProxy::Init(nsIStreamObserver *aObserver,
|
||||
nsIEventQueue *aEventQ)
|
||||
nsresult
|
||||
nsStreamProxyBase::SetEventQueue(nsIEventQueue *aEventQ)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
NS_PRECONDITION(aObserver, "null observer");
|
||||
|
||||
// Realize event queue
|
||||
if ((aEventQ == NS_CURRENT_EVENTQ) || (aEventQ == NS_UI_THREAD_EVENTQ)) {
|
||||
nsCOMPtr<nsIEventQueueService> serv =
|
||||
do_GetService(kEventQueueService, &rv);
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
rv = serv->GetSpecialEventQueue((PRInt32) aEventQ,
|
||||
getter_AddRefs(mEventQueue));
|
||||
getter_AddRefs(mEventQ));
|
||||
} else
|
||||
mEventQueue = aEventQ;
|
||||
|
||||
mReceiver = 0;
|
||||
mReceiver = aObserver;
|
||||
NS_POSTCONDITION(mReceiver, "null receiver");
|
||||
mEventQ = aEventQ;
|
||||
return rv;
|
||||
}
|
||||
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// nsStreamObserverProxy: nsISupports implementation...
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
NS_IMPL_ISUPPORTS_INHERITED1(nsStreamObserverProxy,
|
||||
nsStreamProxyBase,
|
||||
nsIStreamObserverProxy)
|
||||
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// nsStreamObserverProxy: nsIStreamObserverProxy implementation...
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
NS_IMETHODIMP
|
||||
nsStreamObserverProxy::Init(nsIStreamObserver *aObserver,
|
||||
nsIEventQueue *aEventQ)
|
||||
{
|
||||
NS_PRECONDITION(aObserver, "null observer");
|
||||
SetReceiver(aObserver);
|
||||
return SetEventQueue(aEventQ);
|
||||
}
|
||||
|
||||
@@ -31,33 +31,45 @@
|
||||
|
||||
NS_DECL_LOG(nsStreamProxyLog)
|
||||
|
||||
class nsStreamObserverProxy : public nsIStreamObserverProxy
|
||||
class nsStreamProxyBase : public nsIStreamObserver
|
||||
{
|
||||
public:
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_NSISTREAMOBSERVER
|
||||
NS_DECL_NSISTREAMOBSERVERPROXY
|
||||
|
||||
nsStreamObserverProxy()
|
||||
{ NS_INIT_ISUPPORTS(); }
|
||||
virtual ~nsStreamObserverProxy() {}
|
||||
nsStreamProxyBase() { NS_INIT_ISUPPORTS(); }
|
||||
virtual ~nsStreamProxyBase() {}
|
||||
|
||||
nsIEventQueue *GetEventQueue() { return mEventQueue.get(); }
|
||||
nsIEventQueue *GetEventQueue() { return mEventQ.get(); }
|
||||
nsIStreamObserver *GetReceiver() { return mReceiver.get(); }
|
||||
|
||||
void ClearReceiver() { mReceiver = nsnull; }
|
||||
nsresult SetEventQueue(nsIEventQueue *);
|
||||
|
||||
protected:
|
||||
nsCOMPtr<nsIEventQueue> mEventQueue;
|
||||
nsresult SetReceiver(nsIStreamObserver *aReceiver) {
|
||||
mReceiver = aReceiver;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
private:
|
||||
nsCOMPtr<nsIEventQueue> mEventQ;
|
||||
nsCOMPtr<nsIStreamObserver> mReceiver;
|
||||
};
|
||||
|
||||
class nsStreamObserverProxy : public nsStreamProxyBase
|
||||
, public nsIStreamObserverProxy
|
||||
{
|
||||
public:
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
NS_FORWARD_NSISTREAMOBSERVER(nsStreamProxyBase::)
|
||||
NS_DECL_NSISTREAMOBSERVERPROXY
|
||||
};
|
||||
|
||||
class nsStreamObserverEvent
|
||||
{
|
||||
public:
|
||||
nsStreamObserverEvent(nsIStreamObserverProxy *proxy,
|
||||
nsStreamObserverEvent(nsStreamProxyBase *proxy,
|
||||
nsIChannel *channel, nsISupports *context);
|
||||
virtual ~nsStreamObserverEvent() {}
|
||||
virtual ~nsStreamObserverEvent();
|
||||
|
||||
nsresult FireEvent(nsIEventQueue *);
|
||||
NS_IMETHOD HandleEvent() = 0;
|
||||
@@ -66,10 +78,10 @@ protected:
|
||||
static void PR_CALLBACK HandlePLEvent(PLEvent *);
|
||||
static void PR_CALLBACK DestroyPLEvent(PLEvent *);
|
||||
|
||||
PLEvent mEvent;
|
||||
nsCOMPtr<nsIStreamObserverProxy> mProxy;
|
||||
nsCOMPtr<nsIChannel> mChannel;
|
||||
nsCOMPtr<nsISupports> mContext;
|
||||
PLEvent mEvent;
|
||||
nsStreamProxyBase *mProxy;
|
||||
nsCOMPtr<nsIChannel> mChannel;
|
||||
nsCOMPtr<nsISupports> mContext;
|
||||
};
|
||||
|
||||
#define GET_STREAM_OBSERVER_EVENT(_mEvent_ptr) \
|
||||
|
||||
@@ -7,9 +7,6 @@
|
||||
#define DEFAULT_BUFFER_SEGMENT_SIZE 2048
|
||||
#define DEFAULT_BUFFER_MAX_SIZE (4*2048)
|
||||
|
||||
#define GET_PROVIDER_PROXY(p) \
|
||||
((nsStreamProviderProxy *) (nsIStreamObserverProxy *) p)
|
||||
|
||||
nsStreamProviderProxy::nsStreamProviderProxy()
|
||||
: mProviderStatus(NS_OK)
|
||||
{ }
|
||||
@@ -25,7 +22,7 @@ nsStreamProviderProxy::~nsStreamProviderProxy()
|
||||
class nsOnProvideDataEvent : public nsStreamObserverEvent
|
||||
{
|
||||
public:
|
||||
nsOnProvideDataEvent(nsIStreamObserverProxy *aProxy,
|
||||
nsOnProvideDataEvent(nsStreamProxyBase *aProxy,
|
||||
nsIChannel *aChannel,
|
||||
nsISupports *aContext,
|
||||
nsIOutputStream *aSink,
|
||||
@@ -57,7 +54,8 @@ nsOnProvideDataEvent::HandleEvent()
|
||||
{
|
||||
PRINTF("HandleEvent -- OnProvideData [event=%x]", this);
|
||||
|
||||
nsStreamProviderProxy *providerProxy = GET_PROVIDER_PROXY(mProxy);
|
||||
nsStreamProviderProxy *providerProxy =
|
||||
NS_STATIC_CAST(nsStreamProviderProxy *, mProxy);
|
||||
|
||||
nsIStreamProvider *provider = providerProxy->GetProvider();
|
||||
if (!provider) {
|
||||
@@ -106,7 +104,7 @@ nsOnProvideDataEvent::HandleEvent()
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
NS_IMPL_ISUPPORTS_INHERITED2(nsStreamProviderProxy,
|
||||
nsStreamObserverProxy,
|
||||
nsStreamProxyBase,
|
||||
nsIStreamProviderProxy,
|
||||
nsIStreamProvider)
|
||||
|
||||
@@ -119,7 +117,7 @@ NS_IMETHODIMP
|
||||
nsStreamProviderProxy::OnStartRequest(nsIChannel *aChannel,
|
||||
nsISupports *aContext)
|
||||
{
|
||||
return nsStreamObserverProxy::OnStartRequest(aChannel, aContext);
|
||||
return nsStreamProxyBase::OnStartRequest(aChannel, aContext);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
@@ -134,8 +132,8 @@ nsStreamProviderProxy::OnStopRequest(nsIChannel *aChannel,
|
||||
mPipeIn = 0;
|
||||
mPipeOut = 0;
|
||||
|
||||
return nsStreamObserverProxy::OnStopRequest(aChannel, aContext,
|
||||
aStatus, aStatusText);
|
||||
return nsStreamProxyBase::OnStopRequest(aChannel, aContext,
|
||||
aStatus, aStatusText);
|
||||
}
|
||||
|
||||
//
|
||||
@@ -207,7 +205,7 @@ nsStreamProviderProxy::OnProvideData(nsIChannel *aChannel,
|
||||
if (!ev)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
rv = ev->FireEvent(mEventQueue);
|
||||
rv = ev->FireEvent(GetEventQueue());
|
||||
if (NS_FAILED(rv)) {
|
||||
delete ev;
|
||||
return rv;
|
||||
@@ -226,8 +224,8 @@ nsStreamProviderProxy::Init(nsIStreamProvider *aProvider,
|
||||
PRUint32 aBufferSegmentSize,
|
||||
PRUint32 aBufferMaxSize)
|
||||
{
|
||||
NS_PRECONDITION(mReceiver == 0, "Listener already set");
|
||||
NS_PRECONDITION(mEventQueue == 0, "Event queue already set");
|
||||
NS_PRECONDITION(GetReceiver() == nsnull, "Listener already set");
|
||||
NS_PRECONDITION(GetEventQueue() == nsnull, "Event queue already set");
|
||||
|
||||
//
|
||||
// Create the pipe
|
||||
@@ -246,5 +244,6 @@ nsStreamProviderProxy::Init(nsIStreamProvider *aProvider,
|
||||
PR_TRUE, PR_TRUE);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
return nsStreamObserverProxy::Init(aProvider, aEventQ);
|
||||
SetReceiver(aProvider);
|
||||
return SetEventQueue(aEventQ);
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#include "nsIInputStream.h"
|
||||
#include "nsIOutputStream.h"
|
||||
|
||||
class nsStreamProviderProxy : public nsStreamObserverProxy
|
||||
class nsStreamProviderProxy : public nsStreamProxyBase
|
||||
, public nsIStreamProviderProxy
|
||||
{
|
||||
public:
|
||||
|
||||
Reference in New Issue
Block a user