return 0;
}
+
+void faultd_event_serialize_internal(struct faultd_event *ev, void **out)
+{
+ /* call from e.g. .serialize in service_failed_event */
+ /* serialize faultd_event structure */
+}
struct faultd_event_ops {
char *(*to_string)(struct faultd_event *);
void (*release)(struct faultd_event *);
+ void (*serialize)(struct faultd_event*, void**);
};
struct faultd_event_type {
return ev->ops.to_string(ev);
}
+static inline void faultd_event_serialize(struct faultd_event *ev, void **out)
+{
+ ev->ops.serialize(ev, out);
+}
+
int faultd_event_init_internal(struct faultd_event_type *ev_type,
struct faultd_event *ev);
static inline void faultd_event_cleanup_internal(struct faultd_event *ev) {}
+void faultd_event_serialize_internal(struct faultd_event *ev, void **out);
#endif /* FAULTD_EVENT_H */
return ret > 0 ? str : NULL;
}
+void dm_event_serialize(struct faultd_event *ev, void **out)
+{
+ struct decision_made_event *dm_ev =
+ to_decision_made_event(ev);
+ faultd_event_serialize_internal(ev, out);
+}
+
static struct faultd_event_type decision_made_event_type = {
.name = DECISION_MADE_EVENT_ID,
.default_ops = {
- .to_string = dm_event_to_string,
.release = dm_event_release,
+ .serialize = dm_event_serialize,
+ .to_string = dm_event_to_string,
},
.allocate_event = allocate_dm_event,
.node = LIST_HEAD_INIT(decision_made_event_type.node),
return ret > 0 ? str : NULL;
}
+void rv_event_serialize(struct faultd_event *ev, void **out)
+{
+ struct resource_violation_event *rv_ev =
+ to_resource_violation_event(ev);
+ faultd_event_serialize_internal(ev, out);
+}
+
static struct faultd_event_type resource_violation_event_type = {
.name = RESOURCE_VIOLATION_EVENT_ID,
.default_ops = {
- .to_string = rv_event_to_string,
.release = rv_event_release,
+ .serialize = rv_event_serialize,
+ .to_string = rv_event_to_string,
},
.allocate_event = allocate_rv_event,
.node = LIST_HEAD_INIT(resource_violation_event_type.node),
return ret > 0 ? str : NULL;
}
+void sf_event_serialize(struct faultd_event *ev, void **out)
+{
+ struct service_failed_event *sf_ev =
+ to_service_failed_event(ev);
+ faultd_event_serialize_internal(ev, out);
+}
+
static struct faultd_event_type service_failed_event_type = {
.name = SERVICE_FAILED_EVENT_ID,
.default_ops = {
- .to_string = sf_event_to_string,
.release = sf_event_release,
+ .serialize = sf_event_serialize,
+ .to_string = sf_event_to_string,
},
.allocate_event = allocate_sf_event,
.node = LIST_HEAD_INIT(service_failed_event_type.node),