/* * DO NOT EDIT. THIS FILE IS GENERATED FROM c:/mozilla/netwerk/base/public/nsIUploadChannel.idl */ #ifndef __gen_nsIUploadChannel_h__ #define __gen_nsIUploadChannel_h__ #ifndef __gen_nsISupports_h__ #include "nsISupports.h" #endif /* For IDL files that don't want to include root IDL files. */ #ifndef NS_NO_VTABLE #define NS_NO_VTABLE #endif class nsIInputStream; /* forward declaration */ /* starting interface: nsIUploadChannel */ #define NS_IUPLOADCHANNEL_IID_STR "ddf633d8-e9a4-439d-ad88-de636fd9bb75" #define NS_IUPLOADCHANNEL_IID \ {0xddf633d8, 0xe9a4, 0x439d, \ { 0xad, 0x88, 0xde, 0x63, 0x6f, 0xd9, 0xbb, 0x75 }} /** * nsIUploadChannel * * A channel may optionally implement this interface if it supports the * notion of uploading a data stream. The upload stream may only be set * prior to the invocation of asyncOpen on the channel. * * @status FROZEN */ class NS_NO_VTABLE nsIUploadChannel : public nsISupports { public: NS_DEFINE_STATIC_IID_ACCESSOR(NS_IUPLOADCHANNEL_IID) /** * Sets a stream to be uploaded by this channel. * * Most implementations of this interface require that the stream: * (1) implement threadsafe addRef and release * (2) implement nsIInputStream::readSegments * (3) implement nsISeekableStream::seek * * History here is that we need to support both streams that already have * headers (e.g., Content-Type and Content-Length) information prepended to * the stream (by plugins) as well as clients (composer, uploading * application) that want to upload data streams without any knowledge of * protocol specifications. For this reason, we have a special meaning * for the aContentType parameter (see below). * * @param aStream * The stream to be uploaded by this channel. * @param aContentType * If aContentType is empty, the protocol will assume that no * content headers are to be added to the uploaded stream and that * any required headers are already encoded in the stream. In the * case of HTTP, if this parameter is non-empty, then its value will * replace any existing Content-Type header on the HTTP request. * In the case of FTP and FILE, this parameter is ignored. * @param aContentLength * A value of -1 indicates that the length of the stream should be * determined by calling the stream's |available| method. */ /* void setUploadStream (in nsIInputStream aStream, in ACString aContentType, in long aContentLength); */ NS_IMETHOD SetUploadStream(nsIInputStream *aStream, const nsACString & aContentType, PRInt32 aContentLength) = 0; /** * Get the stream (to be) uploaded by this channel. */ /* readonly attribute nsIInputStream uploadStream; */ NS_IMETHOD GetUploadStream(nsIInputStream * *aUploadStream) = 0; }; /* Use this macro when declaring classes that implement this interface. */ #define NS_DECL_NSIUPLOADCHANNEL \ NS_IMETHOD SetUploadStream(nsIInputStream *aStream, const nsACString & aContentType, PRInt32 aContentLength); \ NS_IMETHOD GetUploadStream(nsIInputStream * *aUploadStream); /* Use this macro to declare functions that forward the behavior of this interface to another object. */ #define NS_FORWARD_NSIUPLOADCHANNEL(_to) \ NS_IMETHOD SetUploadStream(nsIInputStream *aStream, const nsACString & aContentType, PRInt32 aContentLength) { return _to SetUploadStream(aStream, aContentType, aContentLength); } \ NS_IMETHOD GetUploadStream(nsIInputStream * *aUploadStream) { return _to GetUploadStream(aUploadStream); } /* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */ #define NS_FORWARD_SAFE_NSIUPLOADCHANNEL(_to) \ NS_IMETHOD SetUploadStream(nsIInputStream *aStream, const nsACString & aContentType, PRInt32 aContentLength) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetUploadStream(aStream, aContentType, aContentLength); } \ NS_IMETHOD GetUploadStream(nsIInputStream * *aUploadStream) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUploadStream(aUploadStream); } #if 0 /* Use the code below as a template for the implementation class for this interface. */ /* Header file */ class nsUploadChannel : public nsIUploadChannel { public: NS_DECL_ISUPPORTS NS_DECL_NSIUPLOADCHANNEL nsUploadChannel(); private: ~nsUploadChannel(); protected: /* additional members */ }; /* Implementation file */ NS_IMPL_ISUPPORTS1(nsUploadChannel, nsIUploadChannel) nsUploadChannel::nsUploadChannel() { /* member initializers and constructor code */ } nsUploadChannel::~nsUploadChannel() { /* destructor code */ } /* void setUploadStream (in nsIInputStream aStream, in ACString aContentType, in long aContentLength); */ NS_IMETHODIMP nsUploadChannel::SetUploadStream(nsIInputStream *aStream, const nsACString & aContentType, PRInt32 aContentLength) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute nsIInputStream uploadStream; */ NS_IMETHODIMP nsUploadChannel::GetUploadStream(nsIInputStream * *aUploadStream) { return NS_ERROR_NOT_IMPLEMENTED; } /* End of implementation class template. */ #endif #endif /* __gen_nsIUploadChannel_h__ */