home *** CD-ROM | disk | FTP | other *** search
/ Programming with VisualAge for Java / IBMVJAVA.ISO / icswinnt / httpdw32.z / func.h < prev    next >
C/C++ Source or Header  |  1997-03-12  |  2KB  |  86 lines

  1. /*
  2.  *
  3.  * Netscape Server API Compatibility Layer Header
  4.  *
  5.  */
  6.  
  7. #ifndef NS_FUNC_H
  8. #define NS_FUNC_H
  9.  
  10.  
  11. /* 
  12.  * Define types
  13.  */
  14.  
  15. #include "base/pblock.h"
  16. #include "frame/req.h"
  17. #include "base/session.h"
  18.  
  19. typedef int Func(pblock *pb, Session *sn, Request *rq);
  20. typedef Func *FuncPtr;
  21.  
  22. /* Netscape uses the "next" field.  We couldn't care less */
  23. struct FuncStruct {
  24.     char    * name;
  25.     FuncPtr   func;
  26.     struct FuncStruct * next; 
  27. };
  28.  
  29. /* We don't bother revealing the hash function, because you
  30.  * the user should not care about it.
  31.  */
  32.  
  33. /*
  34.  * Function Prototypes
  35.  */
  36.  
  37. /* NETSCAPE SAYS:
  38.  * "func_init reads the static FuncStruct arrays and creates the global
  39.  * function table from them.
  40.  * func_init will only read from the static arrays defined in func.c."
  41.  *
  42.  * Our version will just create a global hash table, if the first call
  43.  * to func_insert hasn't created it yet.  Otherwise it's just an annoying
  44.  * stub kept around for compatibility.
  45.  * 
  46.  */
  47.  
  48.  void func_init(void);
  49.  
  50.  
  51. /* NETSCAPE SAYS:
  52.  * "func_find returns a pointer to the function named name, or NULL if none
  53.  * exists."
  54.  */
  55.  
  56.  FuncPtr func_find(char *name);
  57.  
  58. /* NETSCAPE SAYS:
  59.  * "func_exec will try to execute the function whose name is the "fn" entry
  60.  * in the given pblock. If name is not found, it will log a misconfig of
  61.  * missing fn parameter. If it can't find it, it will log that. In these
  62.  * cases it will return REQ_ABORTED. Otherwise, it will return what the
  63.  * function being executed returns."
  64.  */
  65.  
  66.  
  67.  int func_exec(pblock *pb, Session *sn, Request *rq);
  68.  
  69.  
  70.  
  71. /* NETSCAPE SAYS:
  72.  * "func_insert dynamically inserts a named function into the server's
  73.  * table of functions. Returns the FuncStruct it keeps in internal
  74.  * databases, because on server restart you are responsible for freeing
  75.  * (or not) its contents."
  76.  *
  77.  * The app developer really doesn't need to know what's in the FuncStruct;
  78.  * as long the function makes it into the table, they're happy.  WE should
  79.  * be responsible for freeing things, so we always return NULL.
  80.  */
  81.  
  82.  struct FuncStruct *func_insert(char *name, FuncPtr fn);
  83.  
  84.  
  85. #endif /* NS_FUNC_H */
  86.