* SOFTWARE.
*/
-#define BT_COMP_LOG_SELF_COMP (trimmer_comp->self_comp)
#define BT_LOG_OUTPUT_LEVEL (trimmer_comp->log_level)
#define BT_LOG_TAG "PLUGIN/FLT.UTILS.TRIMMER"
-#include "plugins/comp-logging.h"
+#include "logging/comp-logging.h"
#include "compat/utc.h"
#include "compat/time.h"
goto end;
}
- BT_COMP_LOGE("Invalid date/time format: param=\"%s\"", str);
+ BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
+ "Invalid date/time format: param=\"%s\"", str);
ret = -1;
end:
char tmp_arg[64];
if (bt_value_is_signed_integer(param)) {
- int64_t value = bt_value_signed_integer_get(param);
+ int64_t value = bt_value_integer_signed_get(param);
/*
* Just convert it to a temporary string to handle
} else if (bt_value_is_string(param)) {
arg = bt_value_string_get(param);
} else {
- BT_COMP_LOGE("`%s` parameter must be an integer or a string value.",
+ BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
+ "`%s` parameter must be an integer or a string value.",
param_name);
ret = -1;
goto end;
if (!begin->is_infinite && !end->is_infinite &&
begin->ns_from_origin > end->ns_from_origin) {
- BT_COMP_LOGE("Trimming time range's beginning time is greater than end time: "
+ BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
+ "Trimming time range's beginning time is greater than end time: "
"begin-ns-from-origin=%" PRId64 ", "
"end-ns-from-origin=%" PRId64,
begin->ns_from_origin,
}
if (!begin->is_infinite && begin->ns_from_origin == INT64_MIN) {
- BT_COMP_LOGE("Invalid trimming time range's beginning time: "
+ BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
+ "Invalid trimming time range's beginning time: "
"ns-from-origin=%" PRId64,
begin->ns_from_origin);
ret = -1;
}
if (!end->is_infinite && end->ns_from_origin == INT64_MIN) {
- BT_COMP_LOGE("Invalid trimming time range's end time: "
+ BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
+ "Invalid trimming time range's end time: "
"ns-from-origin=%" PRId64,
end->ns_from_origin);
ret = -1;
bt_component_class_init_method_status trimmer_init(
bt_self_component_filter *self_comp_flt,
+ bt_self_component_filter_configuration *config,
const bt_value *params, void *init_data)
{
int ret;
static
void destroy_trimmer_iterator(struct trimmer_iterator *trimmer_it)
{
- BT_ASSERT(trimmer_it);
+ if (!trimmer_it) {
+ goto end;
+ }
+
bt_self_component_port_input_message_iterator_put_ref(
trimmer_it->upstream_iter);
}
g_free(trimmer_it);
+end:
+ return;
}
static
BT_HIDDEN
bt_component_class_message_iterator_init_method_status trimmer_msg_iter_init(
bt_self_message_iterator *self_msg_iter,
+ bt_self_message_iterator_configuration *config,
bt_self_component_filter *self_comp,
bt_self_component_port_output *port)
{
- bt_component_class_message_iterator_init_method_status status =
- BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD_STATUS_OK;
+ bt_component_class_message_iterator_init_method_status status;
+ bt_self_component_port_input_message_iterator_create_from_message_iterator_status
+ msg_iter_status;
struct trimmer_iterator *trimmer_it;
trimmer_it = g_new0(struct trimmer_iterator, 1);
if (!trimmer_it) {
status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD_STATUS_MEMORY_ERROR;
- goto end;
+ goto error;
}
trimmer_it->trimmer_comp = bt_self_component_get_data(
trimmer_it->begin = trimmer_it->trimmer_comp->begin;
trimmer_it->end = trimmer_it->trimmer_comp->end;
- trimmer_it->upstream_iter =
- bt_self_component_port_input_message_iterator_create(
+ msg_iter_status =
+ bt_self_component_port_input_message_iterator_create_from_message_iterator(
+ self_msg_iter,
bt_self_component_filter_borrow_input_port_by_name(
- self_comp, in_port_name));
- if (!trimmer_it->upstream_iter) {
- status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD_STATUS_ERROR;
- goto end;
+ self_comp, in_port_name), &trimmer_it->upstream_iter);
+ if (msg_iter_status != BT_SELF_COMPONENT_PORT_INPUT_MESSAGE_ITERATOR_CREATE_FROM_MESSAGE_ITERATOR_STATUS_OK) {
+ status = (int) msg_iter_status;
+ goto error;
}
trimmer_it->output_messages = g_queue_new();
if (!trimmer_it->output_messages) {
status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD_STATUS_MEMORY_ERROR;
- goto end;
+ goto error;
}
trimmer_it->stream_states = g_hash_table_new_full(g_direct_hash,
(GDestroyNotify) destroy_trimmer_iterator_stream_state);
if (!trimmer_it->stream_states) {
status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD_STATUS_MEMORY_ERROR;
- goto end;
+ goto error;
}
trimmer_it->self_msg_iter = self_msg_iter;
bt_self_message_iterator_set_data(self_msg_iter, trimmer_it);
-end:
- if (status != BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD_STATUS_OK && trimmer_it) {
- destroy_trimmer_iterator(trimmer_it);
- }
+ status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD_STATUS_OK;
+ goto end;
+
+error:
+ destroy_trimmer_iterator(trimmer_it);
+end:
return status;
}
{
struct trimmer_comp *trimmer_comp = trimmer_it->trimmer_comp;
struct tm tm;
+ struct tm *res;
time_t time_seconds = (time_t) (ns_from_origin / NS_PER_S);
int ret = 0;
/* We only need to extract the date from this time */
if (is_gmt) {
- bt_gmtime_r(&time_seconds, &tm);
+ res = bt_gmtime_r(&time_seconds, &tm);
} else {
- bt_localtime_r(&time_seconds, &tm);
+ res = bt_localtime_r(&time_seconds, &tm);
}
- if (errno) {
- BT_COMP_LOGE_ERRNO("Cannot convert timestamp to date and time",
- "ts=%" PRId64, (int64_t) time_seconds);
+ if (!res) {
+ BT_COMP_LOGE_APPEND_CAUSE_ERRNO(trimmer_comp->self_comp,
+ "Cannot convert timestamp to date and time",
+ ": ts=%" PRId64, (int64_t) time_seconds);
ret = -1;
goto end;
}
struct trimmer_iterator *trimmer_it)
{
struct trimmer_comp *trimmer_comp = trimmer_it->trimmer_comp;
- bt_component_class_message_iterator_next_method_status status =
- BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK;
+ bt_component_class_message_iterator_next_method_status status;
BT_ASSERT(trimmer_it->begin.is_set);
if (trimmer_it->begin.is_infinite) {
- if (!bt_self_component_port_input_message_iterator_can_seek_beginning(
- trimmer_it->upstream_iter)) {
- BT_COMP_LOGE_STR("Cannot make upstream message iterator initially seek its beginning.");
+ bt_bool can_seek;
+
+ status = (int) bt_self_component_port_input_message_iterator_can_seek_beginning(
+ trimmer_it->upstream_iter, &can_seek);
+ if (status != BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK) {
+ if (status < 0) {
+ BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
+ "Cannot make upstream message iterator initially seek its beginning.");
+ }
+
+ goto end;
+ }
+
+ if (!can_seek) {
+ BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
+ "Cannot make upstream message iterator initially seek its beginning.");
status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_ERROR;
goto end;
}
status = (int) bt_self_component_port_input_message_iterator_seek_beginning(
trimmer_it->upstream_iter);
} else {
- if (!bt_self_component_port_input_message_iterator_can_seek_ns_from_origin(
- trimmer_it->upstream_iter,
- trimmer_it->begin.ns_from_origin)) {
- BT_COMP_LOGE("Cannot make upstream message iterator initially seek: "
- "seek-ns-from-origin=%" PRId64,
+ bt_bool can_seek;
+
+ status = (int) bt_self_component_port_input_message_iterator_can_seek_ns_from_origin(
+ trimmer_it->upstream_iter, trimmer_it->begin.ns_from_origin,
+ &can_seek);
+
+ if (status != BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK) {
+ if (status < 0) {
+ BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
+ "Cannot make upstream message iterator initially seek: seek-ns-from-origin=%" PRId64,
+ trimmer_it->begin.ns_from_origin);
+ }
+
+ goto end;
+ }
+
+ if (!can_seek) {
+ BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
+ "Cannot make upstream message iterator initially seek: seek-ns-from-origin=%" PRId64,
trimmer_it->begin.ns_from_origin);
status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_ERROR;
goto end;
*/
sc = bt_stream_borrow_class_const(stream);
if (!bt_stream_class_borrow_default_clock_class_const(sc)) {
- BT_COMP_LOGE("Unsupported stream: stream class does "
+ BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
+ "Unsupported stream: stream class does "
"not have a default clock class: "
"stream-addr=%p, "
"stream-id=%" PRIu64 ", "
*/
if (!bt_stream_class_packets_have_beginning_default_clock_snapshot(
sc)) {
- BT_COMP_LOGE("Unsupported stream: packets have "
- "no beginning clock snapshot: "
+ BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
+ "Unsupported stream: packets have no beginning clock snapshot: "
"stream-addr=%p, "
"stream-id=%" PRIu64 ", "
"stream-name=\"%s\"",
if (!bt_stream_class_packets_have_end_default_clock_snapshot(
sc)) {
- BT_COMP_LOGE("Unsupported stream: packets have "
- "no end clock snapshot: "
+ BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
+ "Unsupported stream: packets have no end clock snapshot: "
"stream-addr=%p, "
"stream-id=%" PRIu64 ", "
"stream-name=\"%s\"",
if (bt_stream_class_supports_discarded_events(sc) &&
!bt_stream_class_discarded_events_have_default_clock_snapshots(sc)) {
- BT_COMP_LOGE("Unsupported stream: discarded events "
- "have no clock snapshots: "
+ BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
+ "Unsupported stream: discarded events have no clock snapshots: "
"stream-addr=%p, "
"stream-id=%" PRIu64 ", "
"stream-name=\"%s\"",
if (bt_stream_class_supports_discarded_packets(sc) &&
!bt_stream_class_discarded_packets_have_default_clock_snapshots(sc)) {
- BT_COMP_LOGE("Unsupported stream: discarded packets "
+ BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
+ "Unsupported stream: discarded packets "
"have no clock snapshots: "
"stream-addr=%p, "
"stream-id=%" PRIu64 ", "
bt_component_class_message_iterator_next_method_status status;
const bt_stream *stream = NULL;
int64_t ns_from_origin = INT64_MIN;
- bool has_ns_from_origin;
+ bool has_ns_from_origin = false;
int ret;
/* Find message's associated stream */