Implemented a new command, egw_clear, to clear http output cache.
[egate.git] / www / wproto.h
index fef0d48..deb3006 100644 (file)
  * USE OR PERFORMANCE OF THIS SOFTWARE.
  *
  * $Log: wproto.h,v $
- * Revision 1.1  1995/10/20 11:49:27  adam
+ * Revision 1.13  1997/01/27 11:27:15  adam
+ * Implemented a new command, egw_clear, to clear http output cache.
+ * Changed prototype for function wo_clear.
+ *
+ * Revision 1.12  1997/01/24 13:13:12  adam
+ * Implemnted egw_source and added a "raw" option to the URL.
+ * Fixed a bug in the buffering system of wproto; the macro wo_putc could
+ * override memory if it was the first HTML generating function called.
+ *
+ * Revision 1.11  1996/05/23 15:53:11  adam
+ * Bug fix: egw_enc failed on 8-bit chars.
+ * New command: egw_parms.
+ *
+ * Revision 1.10  1996/05/21  14:53:04  adam
+ * Tcl command wform extented; options -raw and -exists added.
+ *
+ * Revision 1.9  1996/03/14  11:48:39  adam
+ * New function egw_prog that returns name of shell.
+ *
+ * Revision 1.8  1996/02/12  10:09:25  adam
+ * New parameter to wproto_init: directory root for the FIFOs (instead
+ * of using preprocessor defines FIFODIR/FIFOROOT).
+ *
+ * Revision 1.7  1996/01/24  08:26:55  adam
+ * All tcl commands prefixed with egw_ (except the html command).
+ *
+ * Revision 1.6  1996/01/12  13:08:07  adam
+ * CGI script passes name of lock file to the shell. The server will not close
+ * the response FIFO until this file becomes unlocked. This method handles
+ * cancel operations much better.
+ *
+ * Revision 1.5  1996/01/12  10:05:21  adam
+ * If script name ends with ';' HTTP/GET/Expires will be defined.
+ * The cgi interface only reads final handshake if response from
+ * server (shell) was zero-terminated [If it isn't it probably died].
+ *
+ * Revision 1.4  1995/11/06  10:51:18  adam
+ * End of response marker in response from wsh/wproto to wcgi.
+ * Shells are respawned when necessary.
+ *
+ * Revision 1.3  1995/10/27  15:12:11  adam
+ * IrTcl incorporated in the gateway.
+ * Better separation of script types.
+ * Z39.50 gateway scripts entered.
+ *
+ * Revision 1.2  1995/10/23  16:55:41  adam
+ * A lot of changes - really.
+ *
+ * Revision 1.1  1995/10/20  11:49:27  adam
  * First version of www gateway.
  *
  */
 #define COMBUF 4096
 #define OUTBUFFER_CHUNK 4096
 
-#define FIFOROOT "/tmp"
-#define FIFODIR "egw"
-
 typedef struct wform_data
 {
-    char name[20];
+    char name[64];
     char value[512];
 } wform_data;
 
@@ -70,11 +115,26 @@ typedef struct cache_data
     char path[256];
 } cache_data;
 
+struct w_select_handle {
+    int  fd;
+    struct {
+        void (*sproc)(int, void *);
+        void *obj;
+    } rwx[3];
+    struct w_select_handle *next;
+};
+
 typedef struct wclient_data
 {
-    wform_data wf_data[100];
-    char wf_parms[512];
-    char wf_serverp[512];
+    int id;
+    char *prog;
+    char *raw_data;
+    wform_data wf_data[50];
+    wform_data wf_parms_var[50];
+    char wf_parms[1024];
+    char wf_serverp[1024];
+    char wf_serverf[1024];
+    char wf_script[1024];
     char path[512];
     int linein;
     int lineout;
@@ -84,23 +144,31 @@ typedef struct wclient_data
     int cache_level;
     cache_data cache[20];
     int cache_fd;
+    struct w_select_handle *select_list;
+    const char *fifoDir;
 } *WCLIENT, wclient_data;
 
 #define wo_putc(wc, ch)   \
     ((wc)->outbuffer_offset >= OUTBUFFER_CHUNK ? wo_overflow((wc), (ch)) :  \
     (*((wc)->outbuffer + (wc)->outbuffer_offset++) = (char) (ch)), 0)
 
-char *wgetval(WCLIENT wc, char *name);
-int wproto_process(WCLIENT wc, int timeout);
-WCLIENT wproto_init(void);
-void wo_printf(WCLIENT wc, const char *fmt, ...);
-void wo_clear(WCLIENT wc, char *type);
-int wo_finish(WCLIENT wc);
-int wo_flush(WCLIENT wc);
-int wo_overflow(WCLIENT wc, char ch);
-void wproto_terminate(WCLIENT wc);
-int wproto_cache(WCLIENT wc, int level);
-int wo_puthtml(WCLIENT wc, char *name);
-void wo_puts(WCLIENT wc, char *s);
+char *wgetval (WCLIENT wc, char *name);
+
+/* wproto_process: wait for one request from egwcgi. returns <=0 on
+   timeout; returns >0 otherwise.  */
+int wproto_process (WCLIENT wc, int timeout);
+
+/* wproto_init: initializes communication with egwcgi. */
+WCLIENT wproto_init (const char *fifoDir, const char *prog);
+
+void wo_printf (WCLIENT wc, const char *fmt, ...);
+void wo_clear (WCLIENT wc);
+int wo_finish (WCLIENT wc);
+int wo_flush (WCLIENT wc);
+int wo_overflow (WCLIENT wc, char ch);
+void wproto_terminate (WCLIENT wc);
+int wproto_cache (WCLIENT wc, int level);
+void wo_puts (WCLIENT wc, const char *s);
+void wo_write (WCLIENT wc, const char *s, size_t len);
 
 #endif