Annotation of libwww/Library/src/HTProt.html, revision 2.5

2.1       frystyk     1: <HTML>
                      2: <HEAD>
                      3: <TITLE>Access Scheme Manager</TITLE>
2.5     ! frystyk     4: <!-- Changed by: Henrik Frystyk Nielsen,  6-Sep-1995 -->
2.1       frystyk     5: <NEXTID N="z11">
                      6: </HEAD>
                      7: <BODY>
                      8: 
                      9: <H1>Access Scheme Manager</H1>
                     10: 
                     11: <PRE>
                     12: /*
                     13: **     (c) COPYRIGHT MIT 1995.
                     14: **     Please first read the full copyright statement in the file COPYRIGH.
                     15: */
                     16: </PRE>
                     17: 
                     18: This module keeps a list of valid protocol (naming scheme) specifiers
                     19: with associated access code. New access protocols may be registered at
                     20: any time.<P>
                     21: 
                     22: This module is implemented by <A HREF="HTProt.c">HTProt.c</A>, and it
                     23: is a part of the <A NAME="z10"
2.4       frystyk    24: HREF="http://www.w3.org/pub/WWW/Library/">
2.2       frystyk    25: W3C Reference Library</A>. <P>
2.1       frystyk    26: 
                     27: <PRE>
                     28: #ifndef HTPROT_H
                     29: #define HTPROT_H
                     30: 
2.5     ! frystyk    31: #include "HTReq.h"
2.1       frystyk    32: #include "HTAnchor.h"
2.5     ! frystyk    33: #include "HTEvntrg.h"
2.1       frystyk    34: </PRE>
                     35: 
2.5     ! frystyk    36: After the new architecture based on call back functions managed by an
        !            37: eventloop and protocol state machines, the protocol structure has been
        !            38: modified to reflect this call back structure. The
        !            39: <CODE>HTEventCallBack</CODE> is defined in <A
        !            40: HREF="HTEvntrg.html">HTEvntrg module</A>. <P>
        !            41: 
        !            42: By default, all the access schemes supported in the Library are
        !            43: initiated automaticly using the function <CODE>HTAccessInit()</CODE>
        !            44: in <A HREF="HTInit.html">HTInit module</A>. However, this can be
        !            45: changed if defined <CODE>HT_NO_INIT</CODE> <P>
        !            46: 
        !            47: An access scheme module takes as a parameter a socket (which is an
        !            48: invalid socket the first time the function is called), a <A
        !            49: HREF="HTReq.html#z1">request structure</A> containing details of the
        !            50: request, and the action by which the (valid) socket was selected in
        !            51: the event loop.  When the protocol class routine is called, the anchor
2.1       frystyk    52: element in the request is already valid (made valid by HTAccess).
                     53: 
                     54: <PRE>
2.5     ! frystyk    55: typedef struct _HTProtocol HTProtocol;
2.1       frystyk    56: </PRE>
                     57: 
                     58: <H3>Add an Access Scheme</H3>
                     59: 
                     60: This functions registers a protocol module and binds it to a specific
2.5     ! frystyk    61: access acheme. For example HTTP.c is bound to http URLs. The call back
        !            62: function is the function to be called for loading. The reason why it
        !            63: is of type HTEventCallback is that it then can be used directly in the
        !            64: event loop when used in non-preemtive mode.
2.1       frystyk    65: 
                     66: <PRE>
2.5     ! frystyk    67: extern BOOL HTProtocol_add (CONST char *               name,
        !            68:                            BOOL                preemtive,
        !            69:                            HTEventCallBack *   callback);
2.1       frystyk    70: </PRE>
                     71: 
2.5     ! frystyk    72: <H3>Delete an Access Scheme</H3>
        !            73: 
        !            74: This functions deletes a registered protocol module so that it can not
        !            75: be used for accessing a resource anymore.
        !            76: 
        !            77: <PRE>
        !            78: extern BOOL HTProtocol_delete (CONST char * name);
        !            79: </PRE>
        !            80: 
        !            81: <H3>Remove ALL Registered Schemes</H3>
        !            82: 
        !            83: This is the garbage collection function. It is called by <A
        !            84: HREF="HTReq.html#Library">HTLibTerminate</A>
        !            85: 
        !            86: <PRE>
        !            87: extern BOOL HTProtocol_deleteAll (void);
        !            88: </PRE>
        !            89: 
        !            90: <H3>Bind an Access Scheme to an Anchor</H3>
2.1       frystyk    91: 
                     92: This function finds the access scheme that is bound to the anchor's
                     93: type of URL. Returns YES if found, else NO
                     94: 
                     95: <PRE>
2.5     ! frystyk    96: extern BOOL HTProtocol_bind            PARAMS((HTParentAnchor * anchor));
2.1       frystyk    97: </PRE>
                     98: 
2.5     ! frystyk    99: <H3Finds the Callback Function</H3>
2.1       frystyk   100: 
2.5     ! frystyk   101: Returns the callback function registered with this access scheme if any.
2.1       frystyk   102: 
                    103: <PRE>
2.5     ! frystyk   104: extern HTEventCallBack *HTProtocol_callback (HTProtocol * protocol);
2.1       frystyk   105: </PRE>
                    106: 
2.5     ! frystyk   107: <H3>Is Access Scheme Preemtive</H3>
2.1       frystyk   108: 
2.5     ! frystyk   109: Returns YES if the implementation of the access scheme supports
        !           110: preemtive access only.
2.1       frystyk   111: 
                    112: <PRE>
2.5     ! frystyk   113: extern BOOL HTProtocol_preemtive (HTProtocol * protocol);
2.1       frystyk   114: </PRE>
                    115: 
                    116: <PRE>
                    117: #endif /* HTPROT_H */
                    118: </PRE>
                    119: 
                    120: End of Declaration
                    121: 
                    122: </BODY>
                    123: </HTML>

Webmaster