improve callback prototypes to use single definition
authorDavid Brooks <dave@bcs.co.nz>
Fri, 20 Apr 2012 04:13:50 +0000 (12:13 +0800)
committerAndy Green <andy.green@linaro.org>
Fri, 20 Apr 2012 04:13:50 +0000 (12:13 +0800)
Not sure all compilers can hack this, but give it a try

Signed-off-by: David Brooks <dave@bcs.co.nz>
Signed-off-by: Andy Green <andy@warmcat.com>
--

lib/libwebsockets.h
lib/private-libwebsockets.h

index 8b98d90..a26df43 100644 (file)
@@ -227,9 +227,8 @@ struct libwebsocket;
 struct libwebsocket_context;
 struct libwebsocket_extension;
 
-/* document the generic callback (it's a fake prototype under this) */
 /**
- * callback() - User server actions
+ * callback_function() - User server actions
  * @context:   Websockets context
  * @wsi:       Opaque websocket instance pointer
  * @reason:    The reason for the call
@@ -424,9 +423,14 @@ LWS_EXTERN int callback(struct libwebsocket_context * context,
                         enum libwebsocket_callback_reasons reason, void *user,
                                                          void *in, size_t len);
 
-/* document the generic extension callback (it's a fake prototype under this) */
+typedef int (callback_function)(struct libwebsocket_context * context,
+                       struct libwebsocket *wsi,
+                        enum libwebsocket_callback_reasons reason, void *user,
+                                                         void *in, size_t len);
+
+
 /**
- * extension_callback() - Hooks to allow extensions to operate
+ * extension_callback_function() - Hooks to allow extensions to operate
  * @context:   Websockets context
  * @ext:       This extension
  * @wsi:       Opaque websocket instance pointer
@@ -483,13 +487,17 @@ LWS_EXTERN int callback(struct libwebsocket_context * context,
  *             buffer safely, it should copy the data into its own buffer and
  *             set the lws_tokens token pointer to it.
  */
-
 LWS_EXTERN int extension_callback(struct libwebsocket_context * context,
                        struct libwebsocket_extension *ext,
                        struct libwebsocket *wsi,
-                        enum libwebsocket_callback_reasons reason, void *user,
+                        enum libwebsocket_extension_callback_reasons reason, void *user,
                                                          void *in, size_t len);
 
+typedef int (extension_callback_function)(struct libwebsocket_context * context,
+                       struct libwebsocket_extension *ext,
+                       struct libwebsocket *wsi,
+                        enum libwebsocket_extension_callback_reasons reason, void *user,
+                                                         void *in, size_t len);
 
 /**
  * struct libwebsocket_protocols -     List of protocols and handlers server
@@ -521,10 +529,7 @@ LWS_EXTERN int extension_callback(struct libwebsocket_context * context,
 
 struct libwebsocket_protocols {
        const char *name;
-       int (*callback)(struct libwebsocket_context * context,
-                       struct libwebsocket *wsi,
-                       enum libwebsocket_callback_reasons reason, void *user,
-                                                         void *in, size_t len);
+       callback_function *callback;
        size_t per_session_data_size;
 
        /*
@@ -553,11 +558,7 @@ struct libwebsocket_protocols {
 
 struct libwebsocket_extension {
        const char *name;
-       int (*callback)(struct libwebsocket_context *context,
-                       struct libwebsocket_extension *ext,
-                       struct libwebsocket *wsi,
-                       enum libwebsocket_extension_callback_reasons reason,
-                                             void *user, void *in, size_t len);
+       extension_callback_function *callback;
        size_t per_session_data_size;
        void * per_context_private_data;
 };
index 788856a..2f682db 100644 (file)
@@ -333,6 +333,7 @@ struct libwebsocket {
        char *c_host;
        char *c_origin;
        char *c_protocol;
+       callback_function *c_callback;
 
        char *c_address;
        int c_port;