gecko-dev/network/module/nsNetStream.h
valeski%netscape.com 88d5bf1ae9 network/module/Makefile -
1. 310133 - Added nsIRefreshUrl.h to the list of exports.

network/module/makefile.win -
1. 310133 - Added nsIRefreshUrl.h to the list of exports.

network/module/nsIHttpUrl.h -
1. 310133 - Extended the nsIHttpUrl interface to include the AddMimeHeader() method which adds an http header to the url.

network/module/nsHttpUrl.cpp -
310133 - 1. Added support for the AddMimeHeader() method so http urls can have headers added outside of the actual data retrieval in netlib. This method calls NET_ParseMimeHeader() directly.
2. Added a public member, a pointer to the netlib URL_Struct that was created for this nsHttpUrlImpl. This pointer is the link between netlib and the outside world; the adhesive agent between url structs and nsURLImpls.

network/module/nsNetStream.h -
1. 310133 - Added a public memeber variable to nsConnectionInfo. It's a bool that tells us whether or not a redirect has occurred.

network/module/nsNetStream.cpp -
1. 310133 - Added initialization (FALSE) of new redirect member.

network/module/nsNetStubs.cpp -
1. 310133 - Implemented FE_SetRefreshURLTimer(). This function is called from NET_GetURL() when we recognize that we have a url to refresh.

network/module/nsStubContext.cpp -
1. 310133 - Added check to see if we're redirecting in stub_complete() which gets called when a stream completes. If we are, we don't want to release/destroy the pConsumer, this will happen in nsNetService's bam_exit_routine().

network/module/nsNetService.cpp -
1. 310133 - added nsConnectionInfo->redirect check in bam_exit_routine() so we give the consumer a successful binding event if the consumer is still around. This is iffy.
1998-08-13 20:10:49 +00:00

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;
PRBool redirect;
};
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___ */