зеркало из https://github.com/mozilla/gecko-dev.git
*** empty log message ***
This commit is contained in:
Родитель
d4f5e018cc
Коммит
2f1f0a6e95
|
@ -1,264 +0,0 @@
|
||||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Netscape Public License
|
|
||||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
|
||||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
|
||||||
* http://www.mozilla.org/NPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* NPL.
|
|
||||||
*
|
|
||||||
* The Initial Developer of this code under the NPL is Netscape
|
|
||||||
* Communications Corporation. Portions created by Netscape are
|
|
||||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
|
||||||
* Reserved.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "nsFtpStreamListenerEvent.h"
|
|
||||||
#include "nsIBufferInputStream.h"
|
|
||||||
#include "nscore.h"
|
|
||||||
#include "nsIChannel.h"
|
|
||||||
#include "nsIStringStream.h"
|
|
||||||
|
|
||||||
nsFtpStreamListenerEvent::nsFtpStreamListenerEvent(nsIStreamListener* listener,
|
|
||||||
nsIChannel* channel,
|
|
||||||
nsISupports* context)
|
|
||||||
: mListener(listener), mChannel(channel), mContext(context)
|
|
||||||
{
|
|
||||||
NS_ADDREF(mListener);
|
|
||||||
NS_ADDREF(mChannel);
|
|
||||||
NS_IF_ADDREF(mContext);
|
|
||||||
}
|
|
||||||
|
|
||||||
nsFtpStreamListenerEvent::~nsFtpStreamListenerEvent()
|
|
||||||
{
|
|
||||||
NS_RELEASE(mListener);
|
|
||||||
NS_RELEASE(mChannel);
|
|
||||||
NS_IF_RELEASE(mContext);
|
|
||||||
}
|
|
||||||
|
|
||||||
void PR_CALLBACK nsFtpStreamListenerEvent::HandlePLEvent(PLEvent* aEvent)
|
|
||||||
{
|
|
||||||
// WARNING: This is a dangerous cast since it must adjust the pointer
|
|
||||||
// to compensate for the vtable...
|
|
||||||
nsFtpStreamListenerEvent *ev = (nsFtpStreamListenerEvent*)aEvent;
|
|
||||||
|
|
||||||
ev->HandleEvent();
|
|
||||||
}
|
|
||||||
|
|
||||||
void PR_CALLBACK nsFtpStreamListenerEvent::DestroyPLEvent(PLEvent* aEvent)
|
|
||||||
{
|
|
||||||
// WARNING: This is a dangerous cast since it must adjust the pointer
|
|
||||||
// to compensate for the vtable...
|
|
||||||
nsFtpStreamListenerEvent *ev = (nsFtpStreamListenerEvent*)aEvent;
|
|
||||||
|
|
||||||
delete ev;
|
|
||||||
}
|
|
||||||
|
|
||||||
nsresult
|
|
||||||
nsFtpStreamListenerEvent::Fire(nsIEventQueue* aEventQueue)
|
|
||||||
{
|
|
||||||
NS_PRECONDITION(nsnull != aEventQueue, "nsIEventQueue for thread is null");
|
|
||||||
|
|
||||||
PL_InitEvent(this, nsnull,
|
|
||||||
(PLHandleEventProc) nsFtpStreamListenerEvent::HandlePLEvent,
|
|
||||||
(PLDestroyEventProc) nsFtpStreamListenerEvent::DestroyPLEvent);
|
|
||||||
|
|
||||||
PRStatus status = aEventQueue->PostEvent(this);
|
|
||||||
return status == PR_SUCCESS ? NS_OK : NS_ERROR_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// OnStartRequest...
|
|
||||||
//
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsFtpOnStartRequestEvent::HandleEvent()
|
|
||||||
{
|
|
||||||
nsIStreamObserver* receiver = (nsIStreamObserver*)mListener;
|
|
||||||
return receiver->OnStartRequest(mChannel, mContext);
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsMarshalingStreamObserver::OnStartRequest(nsISupports* context)
|
|
||||||
{
|
|
||||||
nsresult rv = GetStatus();
|
|
||||||
if (NS_FAILED(rv)) return rv;
|
|
||||||
|
|
||||||
nsOnStartRequestEvent* event =
|
|
||||||
new nsOnStartRequestEvent(this, context);
|
|
||||||
if (event == nsnull)
|
|
||||||
return NS_ERROR_OUT_OF_MEMORY;
|
|
||||||
|
|
||||||
rv = event->Fire(mEventQueue);
|
|
||||||
if (NS_FAILED(rv)) goto failed;
|
|
||||||
return rv;
|
|
||||||
|
|
||||||
failed:
|
|
||||||
delete event;
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// OnDataAvailable
|
|
||||||
//
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
nsFtpOnDataAvailableEvent::~nsFtpOnDataAvailableEvent()
|
|
||||||
{
|
|
||||||
NS_RELEASE(mIStream);
|
|
||||||
}
|
|
||||||
|
|
||||||
nsresult
|
|
||||||
nsFtpOnDataAvailableEvent::Init(nsIInputStream* aIStream, PRUint32 aSourceOffset, PRUint32 aLength)
|
|
||||||
{
|
|
||||||
mLength = aLength;
|
|
||||||
mSourceOffset = aSourceOffset;
|
|
||||||
mIStream = aIStream;
|
|
||||||
NS_ADDREF(mIStream);
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsFtpOnDataAvailableEvent::HandleEvent()
|
|
||||||
{
|
|
||||||
nsresult rv;
|
|
||||||
nsIStreamListener* receiver = (nsIStreamListener*)mListener;
|
|
||||||
rv = receiver->OnDataAvailable(mChannel, mContext, mIStream, mSourceOffset, mLength);
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// ListOnDataAvailable
|
|
||||||
//
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
nsFtpListOnDataAvailableEvent::~nsFtpListOnDataAvailableEvent()
|
|
||||||
{
|
|
||||||
NS_RELEASE(mIStream);
|
|
||||||
if (mBuffer)
|
|
||||||
nsAllocator::Free(mBuffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
nsresult
|
|
||||||
nsFtpListOnDataAvailableEvent::Init(PRUint32 aSourceOffset, PRUint32 aLength, char *aBuffer)
|
|
||||||
{
|
|
||||||
nsresult rv;
|
|
||||||
mBuffer = nsCRT::strdup(aBuffer);
|
|
||||||
if (!mBuffer)
|
|
||||||
return NS_ERROR_OUT_OF_MEMORY;
|
|
||||||
|
|
||||||
nsISupports *stringStrmSup = nsnull;
|
|
||||||
rv = NS_NewCharInputStream(&stringStrmSup, mBuffer); // char streams keep ref to buffer
|
|
||||||
if (NS_FAILED(rv)) {
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
|
|
||||||
rv = stringStrmSup->QueryInterface(NS_GET_IID(nsIInputStream), (void**)&mIStream);
|
|
||||||
if (NS_FAILED(rv)) {
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
NS_RELEASE(stringStrmSup);
|
|
||||||
|
|
||||||
mLength = aLength;
|
|
||||||
mSourceOffset = aSourceOffset;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsFtpListOnDataAvailableEvent::HandleEvent()
|
|
||||||
{
|
|
||||||
nsresult rv;
|
|
||||||
nsIStreamListener* receiver = (nsIStreamListener*)mListener;
|
|
||||||
rv = receiver->OnDataAvailable(mChannel, mContext, mIStream, mSourceOffset, mLength);
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsMarshalingStreamListener::OnDataAvailable(nsISupports* context,
|
|
||||||
nsIBufferInputStream *aIStream,
|
|
||||||
PRUint32 aSourceOffset,
|
|
||||||
PRUint32 aLength)
|
|
||||||
{
|
|
||||||
nsresult rv = GetStatus();
|
|
||||||
if (NS_FAILED(rv)) return rv;
|
|
||||||
|
|
||||||
nsOnDataAvailableEvent* event =
|
|
||||||
new nsOnDataAvailableEvent(this, context);
|
|
||||||
if (event == nsnull)
|
|
||||||
return NS_ERROR_OUT_OF_MEMORY;
|
|
||||||
|
|
||||||
rv = event->Init(aIStream, aSourceOffset, aLength);
|
|
||||||
if (NS_FAILED(rv)) goto failed;
|
|
||||||
rv = event->Fire(mEventQueue);
|
|
||||||
if (NS_FAILED(rv)) goto failed;
|
|
||||||
return rv;
|
|
||||||
|
|
||||||
failed:
|
|
||||||
delete event;
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// OnStopRequest
|
|
||||||
//
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
nsFtpOnStopRequestEvent::~nsFtpOnStopRequestEvent()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
nsresult
|
|
||||||
nsFtpOnStopRequestEvent::Init(nsresult status, PRUnichar* aMsg)
|
|
||||||
{
|
|
||||||
mStatus = status;
|
|
||||||
mMessage = aMsg;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsFtpOnStopRequestEvent::HandleEvent()
|
|
||||||
{
|
|
||||||
nsIStreamObserver* receiver = (nsIStreamObserver*)mListener;
|
|
||||||
return receiver->OnStopRequest(mChannel, mContext, mStatus, mMessage);
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsMarshalingStreamObserver::OnStopRequest(nsISupports* context,
|
|
||||||
nsresult aStatus,
|
|
||||||
const PRUnichar* aMsg)
|
|
||||||
{
|
|
||||||
nsresult rv = GetStatus();
|
|
||||||
if (NS_FAILED(rv)) return rv;
|
|
||||||
|
|
||||||
nsOnStopRequestEvent* event =
|
|
||||||
new nsOnStopRequestEvent(this, context);
|
|
||||||
if (event == nsnull)
|
|
||||||
return NS_ERROR_OUT_OF_MEMORY;
|
|
||||||
|
|
||||||
rv = event->Init(aStatus, aMsg);
|
|
||||||
if (NS_FAILED(rv)) goto failed;
|
|
||||||
rv = event->Fire(mEventQueue);
|
|
||||||
if (NS_FAILED(rv)) goto failed;
|
|
||||||
return rv;
|
|
||||||
|
|
||||||
failed:
|
|
||||||
delete event;
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
|
@ -1,113 +0,0 @@
|
||||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Netscape Public License
|
|
||||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
|
||||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
|
||||||
* http://www.mozilla.org/NPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* NPL.
|
|
||||||
*
|
|
||||||
* The Initial Developer of this code under the NPL is Netscape
|
|
||||||
* Communications Corporation. Portions created by Netscape are
|
|
||||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
|
||||||
* Reserved.
|
|
||||||
*/
|
|
||||||
#ifndef ___nsftpstreamlistener_h__
|
|
||||||
#define ___nsftpstreamlistener_h__
|
|
||||||
|
|
||||||
#include "nsIStreamListener.h"
|
|
||||||
|
|
||||||
#include "nsIEventQueue.h"
|
|
||||||
#include "nscore.h"
|
|
||||||
#include "nsString.h"
|
|
||||||
|
|
||||||
class nsFtpStreamListenerEvent : public PLEvent {
|
|
||||||
public:
|
|
||||||
nsFtpStreamListenerEvent(nsIStreamListener* listener,
|
|
||||||
nsIChannel* channel, nsISupports* context);
|
|
||||||
virtual ~nsFtpStreamListenerEvent();
|
|
||||||
|
|
||||||
nsresult Fire(nsIEventQueue* aEventQ);
|
|
||||||
|
|
||||||
NS_IMETHOD HandleEvent() = 0;
|
|
||||||
|
|
||||||
protected:
|
|
||||||
static void PR_CALLBACK HandlePLEvent(PLEvent* aEvent);
|
|
||||||
static void PR_CALLBACK DestroyPLEvent(PLEvent* aEvent);
|
|
||||||
|
|
||||||
nsIStreamListener* mListener;
|
|
||||||
nsIChannel* mChannel;
|
|
||||||
nsISupports* mContext;
|
|
||||||
};
|
|
||||||
|
|
||||||
class nsFtpOnStartRequestEvent : public nsFtpStreamListenerEvent
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
nsFtpOnStartRequestEvent(nsIStreamListener* listener,
|
|
||||||
nsIChannel* channel, nsISupports* context)
|
|
||||||
: nsFtpStreamListenerEvent(listener, channel, context) {}
|
|
||||||
virtual ~nsFtpOnStartRequestEvent() {}
|
|
||||||
|
|
||||||
NS_IMETHOD HandleEvent();
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
class nsFtpOnDataAvailableEvent : public nsFtpStreamListenerEvent
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
nsFtpOnDataAvailableEvent(nsIStreamListener* listener,
|
|
||||||
nsIChannel* channel, nsISupports* context)
|
|
||||||
: nsFtpStreamListenerEvent(listener, channel, context),
|
|
||||||
mIStream(nsnull), mLength(0) {}
|
|
||||||
virtual ~nsFtpOnDataAvailableEvent();
|
|
||||||
|
|
||||||
nsresult Init(nsIInputStream* aIStream, PRUint32 aSourceOffset, PRUint32 aLength);
|
|
||||||
NS_IMETHOD HandleEvent();
|
|
||||||
|
|
||||||
protected:
|
|
||||||
nsIInputStream* mIStream;
|
|
||||||
PRUint32 mSourceOffset;
|
|
||||||
PRUint32 mLength;
|
|
||||||
};
|
|
||||||
|
|
||||||
class nsFtpListOnDataAvailableEvent : public nsFtpStreamListenerEvent
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
nsFtpListOnDataAvailableEvent(nsIStreamListener* listener,
|
|
||||||
nsIChannel* channel, nsISupports* context)
|
|
||||||
: nsFtpStreamListenerEvent(listener, channel, context),
|
|
||||||
mIStream(nsnull), mLength(0), mBuffer(nsnull) {}
|
|
||||||
virtual ~nsFtpListOnDataAvailableEvent();
|
|
||||||
|
|
||||||
nsresult Init(PRUint32 aSourceOffset, PRUint32 aLength, char *aBuffer);
|
|
||||||
NS_IMETHOD HandleEvent();
|
|
||||||
|
|
||||||
protected:
|
|
||||||
nsIInputStream* mIStream;
|
|
||||||
PRUint32 mSourceOffset;
|
|
||||||
PRUint32 mLength;
|
|
||||||
char *mBuffer;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
class nsFtpOnStopRequestEvent : public nsFtpStreamListenerEvent
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
nsFtpOnStopRequestEvent(nsIStreamListener* listener,
|
|
||||||
nsIChannel* channel, nsISupports* context)
|
|
||||||
: nsFtpStreamListenerEvent(listener, channel, context),
|
|
||||||
mStatus(NS_OK), mMessage(nsnull) {}
|
|
||||||
virtual ~nsFtpOnStopRequestEvent();
|
|
||||||
|
|
||||||
nsresult Init(nsresult status, PRUnichar* aMsg);
|
|
||||||
NS_IMETHOD HandleEvent();
|
|
||||||
|
|
||||||
protected:
|
|
||||||
nsresult mStatus;
|
|
||||||
PRUnichar* mMessage;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // ___nsftpstreamlistener_h__
|
|
Загрузка…
Ссылка в новой задаче