+static struct job_broadcast *make_job_broadcast(const char *event, struct json_object *object)
+{
+ size_t sz = 1 + strlen(event);
+ struct job_broadcast *jb = malloc(sz + sizeof *jb);
+ if (jb) {
+ jb->object = object;
+ memcpy(jb->event, event, sz);
+ }
+ return jb;
+}
+
+/*
+ * Destroy structure 'jb' for job of broadcasting string events
+ */
+static void destroy_job_broadcast(struct job_broadcast *jb)
+{
+ json_object_put(jb->object);
+ free(jb);
+}
+
+/*
+ * Create structure for job of broadcasting or pushing 'evtid' with 'object'
+ * Returns the created structure or NULL if out of memory
+ */
+static struct job_evtid *make_job_evtid(struct afb_evtid *evtid, struct json_object *object)
+{
+ struct job_evtid *je = malloc(sizeof *je);
+ if (je) {
+ je->evtid = afb_evt_evtid_addref(evtid);
+ je->object = object;
+ }
+ return je;
+}
+
+/*
+ * Destroy structure for job of broadcasting or pushing evtid
+ */
+static void destroy_job_evtid(struct job_evtid *je)
+{
+ afb_evt_evtid_unref(je->evtid);
+ json_object_put(je->object);
+ free(je);
+}
+
+/*
+ * Broadcasts the 'event' of 'id' with its 'object'
+ */
+static void broadcast(const char *event, struct json_object *object)