chiark / gitweb /
Version bump.
[mLib] / pkbuf.h
diff --git a/pkbuf.h b/pkbuf.h
index e6bbec362826f9827f498b8e78643ddf6dfa0623..3305992683e5d2e2d8ae5d7374a4c1613b5e2e7d 100644 (file)
--- a/pkbuf.h
+++ b/pkbuf.h
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: pkbuf.h,v 1.1 2000/06/17 10:39:19 mdw Exp $
+ * $Id: pkbuf.h,v 1.4 2002/01/13 13:33:51 mdw Exp $
  *
  * Simple packet buffering
  *
 /*----- Revision history --------------------------------------------------* 
  *
  * $Log: pkbuf.h,v $
+ * Revision 1.4  2002/01/13 13:33:51  mdw
+ * Packet handler functions now have a @typedef@ name.
+ *
+ * Revision 1.3  2001/02/03 16:23:33  mdw
+ * Bug fix: handle a disable during a close-induced flush without dumping
+ * core.
+ *
+ * Revision 1.2  2001/01/20 12:06:01  mdw
+ * Define flags with macros, to ensure unsignedness.
+ *
  * Revision 1.1  2000/06/17 10:39:19  mdw
  * Experimental new support for packet buffering.
  *
 
 /*----- Data structures ---------------------------------------------------*/
 
+struct pkbuf;
+
+typedef void pkbuf_func(octet */*b*/, size_t /*sz*/,
+                       struct pkbuf */*pk*/, size_t */*keep*/,
+                       void */*p*/);
+
 typedef struct pkbuf {
   size_t sz;                           /* Size of current buffer */
   size_t len;                          /* Length of data in the buffer */
   size_t want;                         /* Want this many bytes for packet */
   unsigned f;                          /* Various state flags */
-  void (*func)(octet */*b*/, size_t /*sz*/,
-              struct pkbuf */*pk*/, size_t */*keep*/,
-              void */*p*/);            /* Handler function */
+  pkbuf_func *func;                    /* Handler function */
   void *p;                             /* Argument for handler */
   arena *a;                            /* Memory allocation arena */
   octet *buf;                          /* Actual buffer space */
 } pkbuf;
 
-enum {
-  PKBUF_ENABLE = 1                     /* Buffer is currently enabled */
-};
+#define PKBUF_ENABLE 1u                        /* Buffer is currently enabled */
+#define PKBUF_CLOSE 2u                 /* Buffer is now closed */
 
 /*----- Functions provided ------------------------------------------------*/
 
@@ -158,9 +171,7 @@ extern void pkbuf_want(pkbuf */*pk*/, size_t /*want*/);
 /* --- @pkbuf_init@ --- *
  *
  * Arguments:  @pkbuf *pk@ = pointer to buffer block
- *             @void (*func)(octet *b, size_t sz, pkbuf *pk,@
- *                          @size_t *keep, void *p)@ =
- *                     handler function
+ *             @pkbuf_func *func@ = handler function
  *             @void *p@ = argument pointer for @func@
  *
  * Returns:    ---
@@ -169,11 +180,7 @@ extern void pkbuf_want(pkbuf */*pk*/, size_t /*want*/);
  *             the provided function for handling.
  */
 
-extern void pkbuf_init(pkbuf */*pk*/,
-                     void (*/*func*/)(octet */*b*/, size_t /*sz*/,
-                                      pkbuf */*pk*/, size_t */*keep*/,
-                                      void */*p*/),
-                     void */*p*/);
+extern void pkbuf_init(pkbuf */*pk*/, pkbuf_func */*func*/, void */*p*/);
 
 /* --- @pkbuf_destroy@ --- *
  *