#include "afb-ws.h"
#include "afb-msg-json.h"
#include "afb-proto-ws.h"
-#include "jobs.h"
#include "fdev.h"
struct afb_proto_ws;
void (*on_hangup)(void *closure);
/* queuing facility for processing messages */
- int (*queuing)(void (*process)(int s, void *c), void *closure);
+ int (*queuing)(struct afb_proto_ws *proto, void (*process)(int s, void *c), void *closure);
};
/******************* streaming objects **********************************/
binary->rb.head = data;
binary->rb.end = data + size;
if (!protows->queuing
- || protows->queuing(processing, binary) < 0)
+ || protows->queuing(protows, processing, binary) < 0)
processing(0, binary);
return;
}
protows->on_hangup = on_hangup;
}
-void afb_proto_ws_set_queuing(struct afb_proto_ws *protows, int (*queuing)(void (*)(int,void*), void*))
+void afb_proto_ws_set_queuing(struct afb_proto_ws *protows, int (*queuing)(struct afb_proto_ws*, void (*)(int,void*), void*))
{
protows->queuing = queuing;
}
extern void afb_proto_ws_hangup(struct afb_proto_ws *protows);
extern void afb_proto_ws_on_hangup(struct afb_proto_ws *protows, void (*on_hangup)(void *closure));
-extern void afb_proto_ws_set_queuing(struct afb_proto_ws *protows, int (*queuing)(void (*)(int,void*), void*));
+extern void afb_proto_ws_set_queuing(struct afb_proto_ws *protows, int (*queuing)(struct afb_proto_ws *, void (*)(int,void*), void*));
extern int afb_proto_ws_client_call(struct afb_proto_ws *protows, const char *verb, struct json_object *args, const char *sessionid, void *request, const char *user_creds);
}
}
-static int enqueue_processing(void (*callback)(int signum, void* arg), void *arg)
+static int enqueue_processing(struct afb_proto_ws *proto, void (*callback)(int signum, void* arg), void *arg)
{
- return jobs_queue(NULL, 0, callback, arg);
+ return jobs_queue(proto, 0, callback, arg);
}
/*****************************************************/