Annotation of libwww/Library/src/HTError.html, revision 2.38

2.1       frystyk     1: <HTML>
                      2: <HEAD>
2.37      frystyk     3:   <TITLE>W3C Reference Library libwww Error Class</TITLE>
2.38    ! frystyk     4: <!-- Changed by: Henrik Frystyk Nielsen,  1-Jul-1996 -->
2.1       frystyk     5: </HEAD>
                      6: <BODY>
2.37      frystyk     7: <H1>
                      8:   The Error Class
                      9: </H1>
2.18      frystyk    10: <PRE>
                     11: /*
2.22      frystyk    12: **     (c) COPYRIGHT MIT 1995.
2.18      frystyk    13: **     Please first read the full copyright statement in the file COPYRIGH.
                     14: */
                     15: </PRE>
2.37      frystyk    16: <P>
                     17: The Error class provides an easy API for registering errors ocurring while
                     18: the Library serves a request. All errors are registered in an "error
                     19: stack"&nbsp;in the <A HREF="HTReq.html">Request object</A> which allows for
                     20: nested errors. The Error class is both natural language independent and
                     21: application independent in that it uses enumerations in order to refer to
                     22: specific errors. It is for the application to provide an error presentation
                     23: module which interprets the errors associated with a request. An eample of
                     24: such an implementation can be found in the <A HREF="HTDialog.html">HTDialog
                     25: module</A>.
                     26: <P>
                     27: This module is implemented by <A HREF="HTError.c">HTError.c</A>, and it is
                     28: a part of the <A HREF="http://www.w3.org/pub/WWW/Library/"> W3C Reference
                     29: Library</A>.
2.1       frystyk    30: <PRE>
                     31: #ifndef HTERROR_H
                     32: #define HTERROR_H
2.36      frystyk    33: 
                     34: typedef struct _HTError HTError;
                     35: 
                     36: typedef enum _HTSeverity {
                     37:     ERR_UNKNOWN                  = 0x0,
                     38:     ERR_FATAL            = 0x1,
                     39:     ERR_NON_FATAL        = 0x2,
                     40:     ERR_WARN             = 0x4,
                     41:     ERR_INFO             = 0x8
                     42: } HTSeverity;
                     43: 
2.28      frystyk    44: #include "HTReq.h"
2.1       frystyk    45: </PRE>
2.37      frystyk    46: <H2>
                     47:   <A NAME="errorinfo">Error Codes and Messages</A>
                     48: </H2>
                     49: <P>
                     50: <B>Note:</B> All non-HTTP error codes have index numbers &gt; HTERR_HTTP_CODES,
                     51: and they will not be shown in the error-message generated.
2.1       frystyk    52: <PRE>
                     53: typedef enum _HTErrorElement {
2.38    ! frystyk    54:        HTERR_CONTINUE = 0,                                     /* 100 */
        !            55:        HTERR_SWITCHING,                                        /* 101 */
        !            56:        HTERR_OK,                                               /* 200 */
2.1       frystyk    57:        HTERR_CREATED,                                          /* 201 */
                     58:        HTERR_ACCEPTED,                                         /* 202 */
2.38    ! frystyk    59:        HTERR_NON_AUTHORITATIVE,                                /* 203 */
2.23      frystyk    60:        HTERR_NO_CONTENT,                                       /* 204 */
2.38    ! frystyk    61:        HTERR_RESET,                                            /* 205 */
        !            62:        HTERR_PARTIAL,                                          /* 206 */
        !            63:        HTERR_MULTIPLE,                                         /* 300 */
2.1       frystyk    64:        HTERR_MOVED,                                            /* 301 */
                     65:        HTERR_FOUND,                                            /* 302 */
                     66:        HTERR_METHOD,                                           /* 303 */
                     67:        HTERR_NOT_MODIFIED,                                     /* 304 */
2.38    ! frystyk    68:        HTERR_USE_PROXY,                                        /* 305 */
2.1       frystyk    69:        HTERR_BAD_REQUEST,                                      /* 400 */
                     70:        HTERR_UNAUTHORIZED,                                     /* 401 */
                     71:        HTERR_PAYMENT_REQUIRED,                                 /* 402 */
                     72:        HTERR_FORBIDDEN,                                        /* 403 */
                     73:        HTERR_NOT_FOUND,                                        /* 404 */
2.20      frystyk    74:        HTERR_NOT_ALLOWED,                                      /* 405 */
                     75:        HTERR_NONE_ACCEPTABLE,                                  /* 406 */
2.38    ! frystyk    76:        HTERR_PROXY_UNAUTHORIZED,                               /* 407 */
2.20      frystyk    77:        HTERR_TIMEOUT,                                          /* 408 */
2.38    ! frystyk    78:        HTERR_CONFLICT,                                         /* 409 */
        !            79:        HTERR_GONE,                                             /* 410 */
        !            80:        HTERR_LENGTH_REQUIRED,                                  /* 411 */
        !            81:        HTERR_PRECON_FAILED,                                    /* 412 */
        !            82:        HTERR_TOO_BIG,                                          /* 413 */
        !            83:        HTERR_URI_TOO_BIG,                                      /* 414 */
        !            84:        HTERR_UNSUPPORTED,                                      /* 415 */
2.1       frystyk    85:        HTERR_INTERNAL,                                         /* 500 */
                     86:        HTERR_NOT_IMPLEMENTED,                                  /* 501 */
2.20      frystyk    87:        HTERR_BAD_GATE,                                         /* 502 */
                     88:        HTERR_DOWN,                                             /* 503 */
                     89:        HTERR_GATE_TIMEOUT,                                     /* 504 */
2.38    ! frystyk    90:        HTERR_BAD_VERSION,                                      /* 505 */
        !            91: 
        !            92:        /* Cache warnings */
        !            93:        HTERR_STALE,                                            /* 10 */
        !            94:        HTERR_REVALIDATION_FAILED,                              /* 11 */
        !            95:        HTERR_DISCONNECTED_CACHE,                               /* 12 */
        !            96:        HTERR_HEURISTIC_EXPIRATION,                             /* 13 */
        !            97:        HTERR_TRANSFORMED,                                      /* 14 */
        !            98:        HTERR_CACHE,                                            /* 99 */
        !            99: 
        !           100:        /* Put all non-HTTP status codes after this */
2.1       frystyk   101:        HTERR_NO_REMOTE_HOST,
2.13      frystyk   102:        HTERR_NO_HOST,
2.31      frystyk   103:        HTERR_NO_FILE,
2.1       frystyk   104:        HTERR_FTP_SERVER,
                    105:        HTERR_FTP_NO_RESPONSE,
                    106:        HTERR_TIME_OUT,
2.2       frystyk   107:        HTERR_GOPHER_SERVER,
                    108:        HTERR_INTERRUPTED,
2.13      frystyk   109:        HTERR_CON_INTR,
2.2       frystyk   110:        HTERR_CSO_SERVER,
2.20      frystyk   111:        HTERR_HTTP09,
                    112:        HTERR_BAD_REPLY,
2.16      frystyk   113:        HTERR_UNKNOWN_AA,
2.5       frystyk   114:        HTERR_NEWS_SERVER,
2.7       frystyk   115:        HTERR_FILE_TO_FTP,
2.8       frystyk   116:        HTERR_MAX_REDIRECT,
2.16      frystyk   117:        HTERR_EOF,
2.14      frystyk   118:        HTERR_WAIS_OVERFLOW,
                    119:        HTERR_WAIS_MODULE,
2.12      frystyk   120:        HTERR_WAIS_NO_CONNECT,
2.2       frystyk   121:        HTERR_SYSTEM,
2.29      frystyk   122:        HTERR_CLASS,
2.31      frystyk   123:        HTERR_ACCESS,
                    124:        HTERR_LOGIN,
2.1       frystyk   125:        HTERR_ELEMENTS                      /* This MUST be the last element */
                    126: } HTErrorElement;
2.30      frystyk   127: </PRE>
2.37      frystyk   128: <H2>
                    129:   What Errors should be Parsed Through?
                    130: </H2>
                    131: <P>
                    132: This variable dictates which errors should be put out when generating the
                    133: message to the user. The first four enumerations make it possible to see
                    134: `everything as bad or worse than' this level, e.g. <CODE>HT_ERR_SHOW_NON_FATAL
                    135: </CODE>shows messages of type <CODE>HT_ERR_SHOW_NON_FATAL </CODE>and
                    136: <CODE>HT_ERR_SHOW_FATAL</CODE>.
                    137: <P>
                    138: <B>Note:</B> The default value is made so that it only puts a message to
                    139: <EM>stderr</EM> if a `real' error has occurred. If a separate widget is available
                    140: for information and error messages then probably
                    141: <CODE>HT_ERR_SHOW_DETAILED</CODE> would be more appropriate.
                    142: <PRE>
                    143: typedef enum _HTErrorShow {
                    144:     HT_ERR_SHOW_FATAL     = 0x1,
                    145:     HT_ERR_SHOW_NON_FATAL = 0x3,
                    146:     HT_ERR_SHOW_WARNING   = 0x7,
                    147:     HT_ERR_SHOW_INFO     = 0xF,
                    148:     HT_ERR_SHOW_PARS     = 0x10,
                    149:     HT_ERR_SHOW_LOCATION  = 0x20,
                    150:     HT_ERR_SHOW_IGNORE    = 0x40,
                    151:     HT_ERR_SHOW_FIRST     = 0x80,
                    152:     HT_ERR_SHOW_LINKS     = 0x100,
                    153:     HT_ERR_SHOW_DEFAULT          = 0x13,
                    154:     HT_ERR_SHOW_DETAILED  = 0x1F,
                    155:     HT_ERR_SHOW_DEBUG    = 0x7F
                    156: } HTErrorShow;
2.19      roeber    157: 
2.37      frystyk   158: extern HTErrorShow HTError_show (void);
                    159: extern BOOL HTError_setShow (HTErrorShow mask);
                    160: </PRE>
                    161: <H2>
                    162:   Creation and Deletion Methods
                    163: </H2>
                    164: <H3>
                    165:   Add an Error
                    166: </H3>
                    167: <P>
                    168: Add an error message to the error list. `par' and `where' might be set to
                    169: NULL. If par is a string, it is sufficient to let length be unspecified,
                    170: i.e., 0. If only a part of the string is wanted then specify a length inferior
                    171: to strlen((char *) par). The string is '\0' terminated automaticly. See also
                    172: HTError_addSystem for system errors. Returns YES if OK, else NO.
2.30      frystyk   173: <PRE>
                    174: extern BOOL HTError_add (HTList *      list,
                    175:                         HTSeverity     severity,
                    176:                         BOOL           ignore,
                    177:                         int            element,
                    178:                         void *         par,
                    179:                         unsigned int   length,
                    180:                         char *         where);
                    181: 
                    182: </PRE>
2.37      frystyk   183: <H3>
                    184:   Add a System Error
                    185: </H3>
                    186: <P>
                    187: Add a system error message to the error list. syscall is the name of the
                    188: system call, e.g. "close". The message put to the list is that corresponds
                    189: to the error number passed. See also HTError_add. Returns YES if OK, else
                    190: NO.
2.30      frystyk   191: <PRE>
                    192: extern BOOL HTError_addSystem (HTList *                list,
                    193:                               HTSeverity       severity,
                    194:                               int              errornumber,
                    195:                               BOOL             ignore,
                    196:                               char *           syscall);
                    197: </PRE>
2.37      frystyk   198: <H3>
                    199:   Delete an Entire Error Stack
                    200: </H3>
                    201: <P>
2.30      frystyk   202: Deletes all errors in a list.
                    203: <PRE>
                    204: extern BOOL HTError_deleteAll (HTList * list);
2.1       frystyk   205: </PRE>
2.37      frystyk   206: <H3>
                    207:   Deletes the Last Edded Entry
                    208: </H3>
                    209: <P>
2.30      frystyk   210: Deletes the last error entry added to the list. Return YES if OK, else NO
                    211: <PRE>
                    212: extern BOOL HTError_deleteLast (HTList * list);
                    213: </PRE>
2.37      frystyk   214: <H2>
                    215:   Error Object Methods
                    216: </H2>
                    217: <H3>
                    218:   Show the Error Entry?
                    219: </H3>
                    220: <P>
2.30      frystyk   221: Should we show this entry in the list or just continue to the next one?
2.1       frystyk   222: <PRE>
2.30      frystyk   223: extern BOOL HTError_doShow (HTError * info);
2.1       frystyk   224: </PRE>
2.37      frystyk   225: <H3>
                    226:   Ignore last Added Error
                    227: </H3>
                    228: <P>
                    229: Turns on the `ignore' flag for the most recent error entered the error list.
                    230: Returns YES if OK else NO
2.1       frystyk   231: <PRE>
2.30      frystyk   232: extern BOOL HTError_ignoreLast (HTList * list);
                    233: extern BOOL HTError_setIgnore  (HTError * info);
2.2       frystyk   234: </PRE>
2.37      frystyk   235: <H3>
                    236:   Error Index Number
                    237: </H3>
                    238: <P>
                    239: Each error object is assigned an index number as defined by the
                    240: <CODE>HTErrorElement</CODE> above. The mapping from this index to an error
                    241: code and a message must be done by the application. The Library provides
                    242: a default implementation in the <A HREF="HTDialog.html"> HTDialog module</A>,
                    243: but that can of course be changed depending on the application.
2.15      frystyk   244: <PRE>
2.31      frystyk   245: extern int HTError_index               (HTError * info);
2.37      frystyk   246: </PRE>
                    247: <H3>
                    248:   Error Severity
                    249: </H3>
                    250: <PRE>
2.30      frystyk   251: extern HTSeverity HTError_severity     (HTError * info);
2.37      frystyk   252: </PRE>
                    253: <H3>
                    254:   Parameters Asscotiated with Error
                    255: </H3>
                    256: <PRE>
2.30      frystyk   257: extern void * HTError_parameter                (HTError * info, int * length);
2.37      frystyk   258: </PRE>
                    259: <H3>
                    260:   Where did it happen?
                    261: </H3>
                    262: <PRE>
2.34      frystyk   263: extern const char * HTError_location   (HTError * info);
2.1       frystyk   264: </PRE>
                    265: <PRE>
                    266: #endif
                    267: </PRE>
2.37      frystyk   268: <P>
                    269:   <HR>
2.36      frystyk   270: <ADDRESS>
2.38    ! frystyk   271:   @(#) $Id: HTError.html,v 2.37 1996/05/17 17:47:37 frystyk Exp $
2.36      frystyk   272: </ADDRESS>
2.37      frystyk   273: </BODY></HTML>

Webmaster