case CLIENT_TRANSMISSION_STATUS_COMPLETE:
DBG("Successfully sent full notification to client, client_id = %" PRIu64,
client->id);
+ /*
+ * There is no need to wake the (e)poll thread. If it was waiting for
+ * "out" events on the client's socket, it will see that no payload
+ * in queued and will unsubscribe from that event.
+ *
+ * In the other cases, we have to wake the the (e)poll thread to either
+ * handle the error on the client or to get it to monitor the client "out"
+ * events.
+ */
update_communication = false;
break;
case CLIENT_TRANSMISSION_STATUS_QUEUED:
struct action_executor *action_executor_create(
struct notification_thread_handle *handle)
{
- struct action_executor *executor = (action_executor *) zmalloc(sizeof(*executor));
+ struct action_executor *executor = zmalloc<action_executor>();
if (!executor) {
goto end;
goto error_unlock;
}
- work_item = (action_work_item *) zmalloc(sizeof(*work_item));
+ work_item = zmalloc<action_work_item>();
if (!work_item) {
PERROR("Failed to allocate action executor work item: trigger name = `%s`",
get_trigger_name(trigger));