+ /*
+ * Initialize to an invalid value, so we can post-assert that
+ * the method returned a valid value.
+ */
+ *can_seek = -1;
+
+ BT_LIB_LOGD("Calling user's \"can seek nanoseconds from origin\" method: %!+i",
+ iterator);
+
+ status = (int) iterator->methods.can_seek_ns_from_origin(iterator,
+ ns_from_origin, can_seek);
+
+ BT_ASSERT_POST_NO_ERROR_IF_NO_ERROR_STATUS(status);
+
+ if (status != BT_FUNC_STATUS_OK) {
+ BT_LIB_LOGW_APPEND_CAUSE(
+ "Component input port message iterator's \"can seek nanoseconds from origin\" method failed: "
+ "%![iter-]+i, status=%s",
+ iterator, bt_common_func_status_string(status));
+ goto end;
+ }
+
+ BT_ASSERT_POST(*can_seek == BT_TRUE || *can_seek == BT_FALSE,
+ "Unexpected boolean value returned from user's \"can seek ns from origin\" method: val=%d, %![iter-]+i",
+ *can_seek, iterator);
+
+ BT_LIB_LOGD(
+ "User's \"can seek nanoseconds from origin\" returned successfully: "
+ "%![iter-]+i, can-seek=%d",
+ iterator, *can_seek);
+
+ if (*can_seek) {
+ goto end;
+ }