Mozilla/mozilla/modules/libimg/src/ilNetReader.cpp
hardts%netscape.com ddbb64f57e landing MODULAR_IMGLIB_BRANCH
git-svn-id: svn://10.0.0.236/trunk@6524 18797224-902f-48f8-a5cc-f745e15eee43
1998-07-27 16:14:32 +00:00

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;
}
}