gecko-dev/msgsdk/C/include/nsStream.h

145 строки
4.4 KiB
C

/*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is the Netscape Messaging Access SDK Version 3.5 code,
* released on or about June 15, 1998. *
* The Initial Developer of the Original Code is Netscape Communications
* Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s): ______________________________________.
*/
/*
* Copyright (c) 1997 and 1998 Netscape Communications Corporation
* (http://home.netscape.com/misc/trademarks.html)
*/
/* input output stream utilities
* nsStream.h
* @author prasad@netscape.com
* @version 1.0
*/
#ifndef NSIOSTREAM_H
#define NSIOSTREAM_H
#include "nsmail.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* Creates an input-stream from a file that can be passed to all messaging
* SDK API calls that require a parameter of type nsmail_inputstream_t.
* Implements the stream and the associated internal functions for read(),
* rewind() and close().
*
* Params:
* =======
*
* in_fileName: Full path name of the file to create the input-stream on.
* The file must exist.
* out_ppRetInputStream: The created input-stream is returned here.
* RETURN Value: 0 on success < 0 on failure. See nsmail.h for possible err codes.
*
* USAGE:
* ======
* nsmail_inputstream_t * pInputStream;
*
* ret_value = file_inputStream_create (<file-name>, &pInputStream);
*
* ret_value = mime_basicPart_setDataStream (<other-params>, pInputStream);
*
* When done close and free the stream.
* ----------------------------------
* pInputStream->close (pInputStream->rock);
* nsStream_free (pInputStream); pInputStream = NULL;
*
*/
int file_inputStream_create (char * in_fileName,
nsmail_inputstream_t ** out_ppRetInputStream);
/*
* Creates an input-stream from a buffer that can be passed to all messaging
* SDK API calls that require a parameter of type nsmail_inputstream_t.
* Implements the stream and the associated internal functions for read(),
* rewind() and close().
*
* Params:
* =======
*
* in_pDataBuf: Data buf to base the input-stream on. Should not be NULL.
* A reference to the buffer is stored in the stream. Hence
* The buffer should not be freed until the stream is closed.
* in_data_size Size of data in in_pDataBuf.
* out_ppRetInputStream: The created input-stream is returned here.
* RETURN Value: 0 on success < 0 on failure. See nsmail.h for possible err codes.
*
*
* USAGE:
* ======
*
* Same as file_inputStream above.
*
*/
int buf_inputStream_create (char * in_pDataBuf,
long in_data_size,
nsmail_inputstream_t ** out_ppRetInputStream);
/*
* Creates an output-stream from a file that can be passed to all messaging
* SDK API calls that require a parameter of type nsmail_outputstream_t.
*
* Params:
* =======
*
* in_fileName: Full path name of the file to create the output-stream on.
* Creates the file if needed. Blows away any previous data in the file.
* out_ppRetInputStream: The created output-stream is returned here.
* RETURN Value: 0 on success < 0 on failure. See nsmail.h for possible err codes.
*
* USAGE:
* ======
* nsmail_outputstream_t * pOutputStream;
*
* ret_value = file_outputStream_create (<file-name>, &pOutputStream);
*
* ret_value = mime_message_putByteStream (<other-params>, pOutputStream);
*
* When done close and free the stream.
* ----------------------------------
* pOutputStream->close (pOutputStream->rock);
* nsStream_free (pOutputStream); pOutputStream = NULL;
*
* NOTE: The file under the stream needs to be removed separately.
*/
int file_outputStream_create (char * in_fileName,
nsmail_outputstream_t ** out_ppRetOutputStream);
/* free the memory allocated for the (input/output) stream */
void nsStream_free (void * pMem);
#ifdef __cplusplus
}
#endif
#endif /* NSIOSTREAM_H */