Extended the nsIRefreshUrl interface to include a cancel method. network/module/nsNetService.cpp 1. Added code to hook the nsConnectionInfo object up to the nsISupports pointer in the url being loaded. 2. Removed the redirect logic in bam_exit_routine(). The backend dependency on the front end is gone. network/module/nsNetStream.cpp Added initialization/destruction of the nsISupports pointer in the nsConnectionInfo. network/module/nsNetStream.h Added the nsISupports member declaration to nsConnectionInfo, and remvoed the redirect member variable. network/module/nsNetStubs.cpp FE_SetRefreshURLTimer() routine has been modified so it no longer relies on the pConsumer (i.e. nsDocumentBindInfo) which was causing us to leak it. Now we use the nsISupports pointer in the nsConnectionInfo object to access the nsIRefreshURL interface so we can reload the url. network/module/nsStubContext.cpp Modified stub_complete() so we no longer pay attention to the redirect member of the nsConnectionInfo object. network/module/nsIURL.h 1. Added GetContainer() method to nsIURL which returns the nsISupports pointer of the container for this url. 2. created a new NS_NewURL() routine which takes an nsISupports pointer as a parameter. network/module/nsURL.cpp 1. Added a new nsURL constructor that takes a nsISupports pointer as a param. 2. Added GetContainer() method and nsISupports pointer initialization/destruction. git-svn-id: svn://10.0.0.236/trunk@8163 18797224-902f-48f8-a5cc-f745e15eee43
193 lines
4.3 KiB
C++
193 lines
4.3 KiB
C++
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
*
|
|
* 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 net_strm_h___
|
|
#define net_strm_h___
|
|
|
|
#include "nspr.h"
|
|
#include "nsIURL.h"
|
|
#include "nsIInputStream.h"
|
|
#include "nsIOutputStream.h"
|
|
#include "nsIStreamListener.h"
|
|
|
|
|
|
/* Forward declaration... */
|
|
class nsNetlibStream;
|
|
|
|
class nsConnectionInfo : public nsISupports
|
|
{
|
|
public:
|
|
NS_DECL_ISUPPORTS
|
|
|
|
nsConnectionInfo(nsIURL *aURL,
|
|
nsNetlibStream *aStream,
|
|
nsIStreamListener *aNotify);
|
|
|
|
protected:
|
|
virtual ~nsConnectionInfo();
|
|
|
|
public:
|
|
nsIURL *pURL;
|
|
nsNetlibStream *pNetStream;
|
|
nsIStreamListener *pConsumer;
|
|
nsISupports *pContainer;
|
|
};
|
|
|
|
|
|
class nsNetlibStream : public nsIInputStream,
|
|
public nsIOutputStream
|
|
{
|
|
public:
|
|
NS_DECL_ISUPPORTS
|
|
|
|
nsNetlibStream(void);
|
|
|
|
virtual PRInt32 GetAvailableSpace(PRInt32 *aErrorCode) = 0;
|
|
|
|
/* From nsIBaseStream interface */
|
|
NS_IMETHOD Close(void);
|
|
|
|
protected:
|
|
virtual ~nsNetlibStream();
|
|
|
|
inline void LockStream (void) { if (m_Lock) PR_EnterMonitor(m_Lock); }
|
|
inline void UnlockStream(void) { if (m_Lock) PR_ExitMonitor (m_Lock); }
|
|
|
|
protected:
|
|
PRBool m_bIsClosed;
|
|
|
|
private:
|
|
PRMonitor *m_Lock;
|
|
|
|
};
|
|
|
|
/*
|
|
* Variable size, buffered stream...
|
|
*/
|
|
class nsBufferedStream : public nsNetlibStream {
|
|
|
|
public:
|
|
nsBufferedStream(void);
|
|
|
|
virtual PRInt32 GetAvailableSpace(PRInt32 *aErrorCode);
|
|
|
|
/* nsIInputStream interface */
|
|
NS_IMETHOD GetLength(PRInt32 *aLength);
|
|
|
|
NS_IMETHOD Read(char *aBuf,
|
|
PRInt32 aOffset,
|
|
PRInt32 aCount,
|
|
PRInt32 *aReadCount);
|
|
|
|
/* nsIOutputStream interface */
|
|
NS_IMETHOD Write(const char *aBuf,
|
|
PRInt32 aOffset,
|
|
PRInt32 aLen,
|
|
PRInt32 *aWriteCount);
|
|
|
|
protected:
|
|
virtual ~nsBufferedStream();
|
|
|
|
private:
|
|
char *m_Buffer;
|
|
PRInt32 m_BufferLength;
|
|
|
|
PRInt32 m_DataLength;
|
|
PRInt32 m_ReadOffset;
|
|
PRInt32 m_WriteOffset;
|
|
};
|
|
|
|
|
|
/*
|
|
* Fixed size stream...
|
|
*/
|
|
|
|
class nsAsyncStream : public nsNetlibStream {
|
|
|
|
public:
|
|
nsAsyncStream(PRInt32 buffer_size);
|
|
|
|
virtual PRInt32 GetAvailableSpace(PRInt32 *aErrorCode);
|
|
|
|
/* nsIInputStream interface */
|
|
NS_IMETHOD GetLength(PRInt32 *aLength);
|
|
|
|
NS_IMETHOD Read(char *aBuf,
|
|
PRInt32 aOffset,
|
|
PRInt32 aCount,
|
|
PRInt32 *aReadLength);
|
|
|
|
/* nsIOutputStream interface */
|
|
NS_IMETHOD Write(const char *aBuf,
|
|
PRInt32 aOffset,
|
|
PRInt32 aLen,
|
|
PRInt32 *aWriteLength);
|
|
|
|
protected:
|
|
virtual ~nsAsyncStream();
|
|
|
|
private:
|
|
char *m_Buffer;
|
|
PRInt32 m_BufferLength;
|
|
|
|
PRInt32 m_DataLength;
|
|
PRInt32 m_ReadOffset;
|
|
PRInt32 m_WriteOffset;
|
|
};
|
|
|
|
|
|
/*
|
|
* Fixed size, blocking stream...
|
|
*/
|
|
class nsBlockingStream : public nsNetlibStream {
|
|
|
|
public:
|
|
nsBlockingStream(void);
|
|
|
|
virtual PRInt32 GetAvailableSpace(PRInt32 *aErrorCode);
|
|
|
|
/* nsIInputStream interface */
|
|
NS_IMETHOD GetLength(PRInt32 *aLength);
|
|
|
|
NS_IMETHOD Read(char *aBuf,
|
|
PRInt32 aOffset,
|
|
PRInt32 aCount,
|
|
PRInt32 *aReadLength);
|
|
|
|
/* nsIOutputStream interface */
|
|
NS_IMETHOD Write(const char *aBuf,
|
|
PRInt32 aOffset,
|
|
PRInt32 aLen,
|
|
PRInt32 *aWriteLength);
|
|
|
|
protected:
|
|
virtual ~nsBlockingStream();
|
|
|
|
PRInt32 ReadBuffer(char *aBuf, PRInt32 aCount);
|
|
|
|
private:
|
|
char *m_Buffer;
|
|
PRInt32 m_BufferLength;
|
|
|
|
PRInt32 m_DataLength;
|
|
PRInt32 m_ReadOffset;
|
|
PRInt32 m_WriteOffset;
|
|
};
|
|
|
|
#endif /* net_strm_h___ */
|