mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
138 lines
3.0 KiB
138 lines
3.0 KiB
/*
|
|
This file was derived from the libwww code, version 2.15, from CERN.
|
|
A number of modifications have been made by Spyglass.
|
|
|
|
[email protected]
|
|
*/
|
|
|
|
/* The Stream class definition -- libwww
|
|
STREAM OBJECT DEFINITION
|
|
|
|
A Stream object is something which accepts a stream of text.
|
|
|
|
The creation methods will vary on the type of Stream Object. All creation methods
|
|
return a pointer to the stream type below.
|
|
|
|
As you can see, but the methods used to write to the stream and close it are pointed to
|
|
be the object itself.
|
|
|
|
*/
|
|
#ifndef HTSTREAM_H
|
|
#define HTSTREAM_H
|
|
|
|
/* used all over by dcache, but is here because it's part of the _HTRequest
|
|
* struct. and htstream.h is before dcache.h, htaccess.h in shared.h.
|
|
*/
|
|
typedef struct _DCACHETIME
|
|
{
|
|
union
|
|
{
|
|
struct
|
|
{
|
|
unsigned uMins:6; //max. 60
|
|
unsigned uHrs:5; //max. 24
|
|
unsigned uDate:5; //max. 31
|
|
unsigned uMonth:4; //max. 12
|
|
unsigned uYear:12; //max. 4096
|
|
};
|
|
DWORD dwDCacheTime1;
|
|
};
|
|
union
|
|
{
|
|
struct
|
|
{
|
|
unsigned uSecs:6; //max. 60
|
|
unsigned uUnused:26; //max. 24
|
|
};
|
|
DWORD dwDCacheTime2;
|
|
};
|
|
|
|
} DCACHETIME;
|
|
|
|
typedef struct _HTStream HTStream;
|
|
|
|
struct Params_InitStream {
|
|
HTStream *me;
|
|
HTRequest *request;
|
|
int *pResult; /* >0 to proceed, <0 on error, DO NOT set to 0 */
|
|
|
|
HTAtom atomMIMEType;
|
|
int expected_length;
|
|
|
|
int iUserChoice;
|
|
|
|
char tempFile[_MAX_PATH+1];
|
|
|
|
/* For internal use by stream */
|
|
void *extra;
|
|
BOOL fDCache;
|
|
};
|
|
|
|
//
|
|
// Note: for HTS_IOCTL_FILE_BY_REF, control_info is string with filename
|
|
//
|
|
enum HTS_IO_CONTROL_FUNC {
|
|
HTS_IOCTL_FILE_BY_REF
|
|
};
|
|
|
|
/*
|
|
|
|
These are the common methods of all streams. They should be self-explanatory, except
|
|
for end_document which must be called before free. It should be merged with free in
|
|
fact: it should be dummy for new streams.
|
|
|
|
The put_block method was write, but this upset systems whiuch had macros for write().
|
|
|
|
*/
|
|
typedef struct _HTStreamClass
|
|
{
|
|
|
|
char *name; /* Just for diagnostics */
|
|
|
|
char *szStatusNoLength; /* Status messages for this stream - */
|
|
char *szStatusWithLength; /* Versions for with and without known file length */
|
|
|
|
AsyncFunc init_Async; /* If non-null gets called with struct Params_InitStream */
|
|
/* *pResult: > 0 continue */
|
|
/* *pResult: < 0 dis-continue */
|
|
|
|
void (*free) (
|
|
HTStream * me,
|
|
DCACHETIME dctExpires, //Expiry time for Disk Cache
|
|
DCACHETIME dctLastModif); //Last Modified time for Disk Cache
|
|
|
|
void (*abort) (
|
|
HTStream * me,
|
|
HTError e);
|
|
|
|
BOOL (*put_character) (
|
|
HTStream * me,
|
|
char ch);
|
|
|
|
BOOL (*put_string) (
|
|
HTStream * me,
|
|
CONST char *str);
|
|
|
|
BOOL (*put_block) (
|
|
HTStream * me,
|
|
CONST char *str,
|
|
int len,
|
|
BOOL fDCache);
|
|
|
|
BOOL (*io_control) (
|
|
HTStream * me,
|
|
enum HTS_IO_CONTROL_FUNC function_id,
|
|
void *control_info);
|
|
|
|
void (*write_dcache) (
|
|
HTStream * me,
|
|
CONST char *str,
|
|
int cb);
|
|
}
|
|
HTStreamClass;
|
|
|
|
#endif /* HTSTREAM_H */
|
|
|
|
/*
|
|
|
|
end of HTStream.h */
|