167 lines
3.4 KiB
C++
167 lines
3.4 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.
|
|
*/
|
|
|
|
#include "if.h"
|
|
#include "ilINetReader.h"
|
|
|
|
static NS_DEFINE_IID(kINetReaderIID, IL_INETREADER_IID);
|
|
|
|
class NetReaderImpl : public ilINetReader {
|
|
public:
|
|
|
|
NetReaderImpl(il_container *aContainer);
|
|
~NetReaderImpl();
|
|
|
|
NS_DECL_ISUPPORTS
|
|
|
|
virtual unsigned int WriteReady();
|
|
|
|
virtual int FirstWrite(const unsigned char *str, int32 len);
|
|
|
|
virtual int Write(const unsigned char *str, int32 len);
|
|
|
|
virtual void StreamAbort(int status);
|
|
|
|
virtual void StreamComplete(PRBool is_multipart);
|
|
|
|
virtual void NetRequestDone(ilIURL *urls, int status);
|
|
|
|
virtual PRBool StreamCreated(ilIURL *urls, int type);
|
|
|
|
virtual PRBool IsMulti();
|
|
|
|
il_container *GetContainer() {return mContainer;}
|
|
|
|
private:
|
|
il_container *mContainer;
|
|
};
|
|
|
|
NetReaderImpl::NetReaderImpl(il_container *aContainer)
|
|
{
|
|
NS_INIT_REFCNT();
|
|
mContainer = aContainer;
|
|
}
|
|
|
|
NetReaderImpl::~NetReaderImpl()
|
|
{
|
|
}
|
|
|
|
NS_IMPL_ISUPPORTS(NetReaderImpl, kINetReaderIID)
|
|
|
|
unsigned int
|
|
NetReaderImpl::WriteReady()
|
|
{
|
|
if (mContainer != NULL) {
|
|
return IL_StreamWriteReady(mContainer);
|
|
}
|
|
else {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
int
|
|
NetReaderImpl::FirstWrite(const unsigned char *str, int32 len)
|
|
{
|
|
if (mContainer != NULL) {
|
|
return IL_StreamFirstWrite(mContainer, str, len);
|
|
}
|
|
else {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
int
|
|
NetReaderImpl::Write(const unsigned char *str, int32 len)
|
|
{
|
|
if (mContainer != NULL) {
|
|
return IL_StreamWrite(mContainer, str, len);
|
|
}
|
|
else {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
void
|
|
NetReaderImpl::StreamAbort(int status)
|
|
{
|
|
if (mContainer != NULL) {
|
|
IL_StreamAbort(mContainer, status);
|
|
}
|
|
}
|
|
|
|
void
|
|
NetReaderImpl::StreamComplete(PRBool is_multipart)
|
|
{
|
|
if (mContainer != NULL) {
|
|
IL_StreamComplete(mContainer, is_multipart);
|
|
}
|
|
}
|
|
|
|
void
|
|
NetReaderImpl::NetRequestDone(ilIURL *urls, int status)
|
|
{
|
|
if (mContainer != NULL) {
|
|
IL_NetRequestDone(mContainer, urls, status);
|
|
}
|
|
}
|
|
|
|
PRBool
|
|
NetReaderImpl::StreamCreated(ilIURL *urls, int type)
|
|
{
|
|
if (mContainer != NULL) {
|
|
return IL_StreamCreated(mContainer, urls, type);
|
|
}
|
|
else {
|
|
return PR_FALSE;
|
|
}
|
|
}
|
|
|
|
PRBool
|
|
NetReaderImpl::IsMulti()
|
|
{
|
|
if (mContainer != NULL) {
|
|
return (PRBool)(mContainer->multi > 0);
|
|
}
|
|
else {
|
|
return PR_FALSE;
|
|
}
|
|
}
|
|
|
|
ilINetReader *
|
|
IL_NewNetReader(il_container *ic)
|
|
{
|
|
ilINetReader *reader = new NetReaderImpl(ic);
|
|
|
|
if (reader != NULL) {
|
|
NS_ADDREF(reader);
|
|
}
|
|
|
|
return reader;
|
|
}
|
|
|
|
il_container *
|
|
IL_GetNetReaderContainer(ilINetReader *reader)
|
|
{
|
|
if (reader != NULL) {
|
|
return ((NetReaderImpl *)reader)->GetContainer();
|
|
}
|
|
else {
|
|
return NULL;
|
|
}
|
|
}
|