*
*/
+#include <common/dynamic-array.h>
#include <common/buffer-view.h>
#include "payload-view.h"
#include "payload.h"
};
}
+LTTNG_HIDDEN
+struct lttng_payload_view lttng_payload_view_from_buffer_view(
+ const struct lttng_buffer_view *view, size_t offset,
+ ptrdiff_t len)
+{
+ return (struct lttng_payload_view) {
+ .buffer = lttng_buffer_view_from_view(
+ view, offset, len)
+ };
+}
+
+LTTNG_HIDDEN
+int lttng_payload_view_get_fd_count(struct lttng_payload_view *payload_view)
+{
+ int ret;
+ size_t position;
+
+ if (!payload_view) {
+ ret = -1;
+ goto end;
+ }
+
+ ret = lttng_dynamic_array_get_count(&payload_view->_fds);
+ if (ret < 0) {
+ goto end;
+ }
+
+ position = payload_view->_iterator.p_fds_position ?
+ *payload_view->_iterator.p_fds_position :
+ payload_view->_iterator.fds_position;
+ ret = ret - (int) position;
+end:
+ return ret;
+}
+
LTTNG_HIDDEN
int lttng_payload_view_pop_fd(struct lttng_payload_view *view)
{
* from an existing dynamic buffer.
*
* @src Source dynamic buffer to reference
- * @offset Offset to apply to the payload's buffer
+ * @offset Offset to apply to the dynamic buffer
* @len Length of the buffer contents to reference. Passing -1 will
* cause the payload view to reference the whole payload from the
* offset provided.
struct lttng_payload_view lttng_payload_view_from_dynamic_buffer(
const struct lttng_dynamic_buffer *buffer, size_t offset,
ptrdiff_t len);
+/**
+ *
+ * Return a payload view referencing a subset of a dynamic buffer.
+ *
+ * Meant as an adapter for code paths that need to create a payload view
+ * from an existing buffer view.
+ *
+ * @src Source buffer view to reference
+ * @offset Offset to apply to the buffer view
+ * @len Length of the buffer contents to reference. Passing -1 will
+ * cause the payload view to reference the whole payload from the
+ * offset provided.
+ */
+LTTNG_HIDDEN
+struct lttng_payload_view lttng_payload_view_from_buffer_view(
+ const struct lttng_buffer_view *view, size_t offset,
+ ptrdiff_t len);
+
+/**
+ * Get the number of file descriptors left in a payload view.
+ *
+ * @payload Payload instance
+ *
+ * Returns the number of file descriptors left on success, -1 on error.
+ */
+LTTNG_HIDDEN
+int lttng_payload_view_get_fd_count(struct lttng_payload_view *payload_view);
/**
* Pop an fd from a payload view.