Annotation of libwww/Library/src/HTProt.html, revision 2.17
2.1 frystyk 1: <HTML>
2: <HEAD>
2.16 eric 3: <!-- Changed by: Henrik Frystyk Nielsen, 26-Mar-1996 -->
4: <NEXTID N="z11">
5: <TITLE>W3C Reference Library libwww PROTOCOLS</TITLE>
2.1 frystyk 6: </HEAD>
7: <BODY>
2.16 eric 8: <H1>
9: Access Scheme Manager
10: </H1>
2.1 frystyk 11: <PRE>
12: /*
13: ** (c) COPYRIGHT MIT 1995.
14: ** Please first read the full copyright statement in the file COPYRIGH.
15: */
16: </PRE>
2.16 eric 17: <P>
18: This module keeps a list of valid protocol (naming scheme) specifiers with
19: associated access code. New access protocols may be registered at any time.
20: <P>
21: This module is implemented by <A HREF="HTProt.c">HTProt.c</A>, and it is
22: a part of the <A HREF="http://www.w3.org/pub/WWW/Library/"> W3C Reference
23: Library</A>.
24: <P>
2.1 frystyk 25: <PRE>
26: #ifndef HTPROT_H
27: #define HTPROT_H
28:
2.5 frystyk 29: #include "HTReq.h"
2.1 frystyk 30: #include "HTAnchor.h"
2.16 eric 31: #include "HTEvent.h"
2.15 frystyk 32: #include "HTTrans.h"
2.1 frystyk 33: </PRE>
2.16 eric 34: <P>
35: After the new architecture based on call back functions managed by an eventloop
36: and protocol state machines, the protocol structure has been modified to
37: reflect this call back structure. The <CODE>HTEventCallback</CODE> is defined
2.17 ! frystyk 38: in <A HREF="HTEvent.html">HTEvent module</A>.
2.16 eric 39: <P>
40: All the access schemes supported in the Library can be initiated using the
41: function <CODE>HTAccessInit()</CODE> in <A HREF="HTInit.html">HTInit module</A>
42: <P>
43: An access scheme module takes as a parameter a socket (which is an invalid
44: socket the first time the function is called), a
45: <A HREF="HTReqMan.html">request structure</A> containing details of the request,
46: and the action by which the (valid) socket was selected in the event loop.
47: When the protocol class routine is called, the anchor element in the request
48: is already valid (made valid by HTAccess).
2.1 frystyk 49: <PRE>
2.5 frystyk 50: typedef struct _HTProtocol HTProtocol;
2.1 frystyk 51: </PRE>
2.16 eric 52: <H3>
53: Add an Access Scheme
54: </H3>
55: <P>
56: This functions registers a protocol module and binds it to a specific access
57: acheme. For example HTTP.c is bound to http URLs. The call back function
58: is the function to be called for loading. The reason why it is of type
59: HTEventCallback is that it then can be used directly in the event loop when
60: used in non-preemptive mode.
2.1 frystyk 61: <PRE>
2.13 frystyk 62: extern BOOL HTProtocol_add (const char * name,
2.15 frystyk 63: const char * transport,
2.12 frystyk 64: BOOL preemptive,
2.11 frystyk 65: HTEventCallback * client,
66: HTEventCallback * server);
2.1 frystyk 67: </PRE>
2.16 eric 68: <H3>
69: Delete an Access Scheme
70: </H3>
71: <P>
72: This functions deletes a registered protocol module so that it can not be
73: used for accessing a resource anymore.
2.5 frystyk 74: <PRE>
2.13 frystyk 75: extern BOOL HTProtocol_delete (const char * name);
2.5 frystyk 76: </PRE>
2.16 eric 77: <H3>
78: Remove ALL Registered Schemes
79: </H3>
80: <P>
81: This is the garbage collection function. It is called by
82: <A HREF="HTAccess.html#Library">HTLibTerminate()</A>
2.5 frystyk 83: <PRE>
84: extern BOOL HTProtocol_deleteAll (void);
85: </PRE>
2.16 eric 86: <H3>
87: Find a Protocol Object
88: </H3>
89: <P>
90: You can search the list of registered protocol objects as a function of the
91: access acheme. If an access scheme is found then the protocol object is returned.
2.1 frystyk 92: <PRE>
2.13 frystyk 93: extern HTProtocol * HTProtocol_find (HTRequest * request, const char * access);
2.1 frystyk 94: </PRE>
2.16 eric 95: <H3>
96: Get the callback functions
97: </H3>
98: <P>
99: You can get the callback functions registered together with a protocol object
100: using the following methods.
2.1 frystyk 101: <PRE>
2.11 frystyk 102: extern HTEventCallback * HTProtocol_client (HTProtocol * protocol);
103: extern HTEventCallback * HTProtocol_server (HTProtocol * protocol);
2.1 frystyk 104: </PRE>
2.16 eric 105: <H3>
106: Is Access Scheme Preemptive
107: </H3>
108: <P>
109: Returns YES if the implementation of the access scheme supports preemptive
110: access only.
2.1 frystyk 111: <PRE>
2.12 frystyk 112: extern BOOL HTProtocol_preemptive (HTProtocol * protocol);
2.1 frystyk 113: </PRE>
2.16 eric 114: <H3>
115: Get and Set the Transport
116: </H3>
2.1 frystyk 117: <PRE>
2.15 frystyk 118: extern BOOL HTProtocol_setTransport (HTProtocol * protoccol,
119: const char * transport);
120: extern const char * HTProtocol_transport (HTProtocol * protocol);
121: </PRE>
122: <PRE>
2.1 frystyk 123: #endif /* HTPROT_H */
124: </PRE>
2.16 eric 125: <P>
126: <HR>
2.15 frystyk 127: <ADDRESS>
2.17 ! frystyk 128: @(#) $Id: HTProt.html,v 2.16 1996/05/15 22:34:24 eric Exp $
2.15 frystyk 129: </ADDRESS>
2.16 eric 130: </BODY></HTML>
Webmaster