+++ /dev/null
-/*
- * Copyright (C) 2020 Jérémie Galarneau <jeremie.galarneau@efficios.com>
- *
- * SPDX-License-Identifier: LGPL-2.1-only
- *
- */
-
-#include <common/dynamic-array.h>
-#include <common/buffer-view.h>
-#include "payload-view.h"
-#include "payload.h"
-#include <stddef.h>
-
-bool lttng_payload_view_is_valid(const struct lttng_payload_view *view)
-{
- return view && lttng_buffer_view_is_valid(&view->buffer);
-}
-
-struct lttng_payload_view lttng_payload_view_from_payload(
- const struct lttng_payload *payload, size_t offset,
- ptrdiff_t len)
-{
- return payload ? (struct lttng_payload_view) {
- .buffer = lttng_buffer_view_from_dynamic_buffer(
- &payload->buffer, offset, len),
- ._fd_handles = payload->_fd_handles,
- } : (struct lttng_payload_view) {};
-}
-
-struct lttng_payload_view lttng_payload_view_from_view(
- struct lttng_payload_view *view, size_t offset,
- ptrdiff_t len)
-{
- return view ? (struct lttng_payload_view) {
- .buffer = lttng_buffer_view_from_view(
- &view->buffer, offset, len),
- ._fd_handles = view->_fd_handles,
- ._iterator.p_fd_handles_position = view->_iterator.p_fd_handles_position ?:
- &view->_iterator.fd_handles_position,
- } : (struct lttng_payload_view) {};
-}
-
-struct lttng_payload_view lttng_payload_view_from_dynamic_buffer(
- const struct lttng_dynamic_buffer *buffer, size_t offset,
- ptrdiff_t len)
-{
- return buffer ? (struct lttng_payload_view) {
- .buffer = lttng_buffer_view_from_dynamic_buffer(
- buffer, offset, len)
- } : (struct lttng_payload_view) {};
-}
-
-struct lttng_payload_view lttng_payload_view_from_buffer_view(
- const struct lttng_buffer_view *view, size_t offset,
- ptrdiff_t len)
-{
- return view ? (struct lttng_payload_view) {
- .buffer = lttng_buffer_view_from_view(
- view, offset, len)
- } : (struct lttng_payload_view) {};
-}
-
-struct lttng_payload_view lttng_payload_view_init_from_buffer(
- const char *src, size_t offset, ptrdiff_t len)
-{
- return (struct lttng_payload_view) {
- .buffer = lttng_buffer_view_init(
- src, offset, len)
- };
-}
-
-int lttng_payload_view_get_fd_handle_count(
- const struct lttng_payload_view *payload_view)
-{
- int ret;
- size_t position;
-
- if (!payload_view) {
- ret = -1;
- goto end;
- }
-
- ret = lttng_dynamic_pointer_array_get_count(&payload_view->_fd_handles);
- if (ret < 0) {
- goto end;
- }
-
- position = payload_view->_iterator.p_fd_handles_position ?
- *payload_view->_iterator.p_fd_handles_position :
- payload_view->_iterator.fd_handles_position;
- ret = ret - (int) position;
-end:
- return ret;
-}
-
-struct fd_handle *lttng_payload_view_pop_fd_handle(
- struct lttng_payload_view *view)
-{
- struct fd_handle *handle = NULL;
- size_t fd_handle_count;
- size_t *pos;
-
- if (!view) {
- goto end;
- }
-
- fd_handle_count = lttng_payload_view_get_fd_handle_count(view);
- if (fd_handle_count == 0) {
- goto end;
- }
-
- pos = view->_iterator.p_fd_handles_position ?
- view->_iterator.p_fd_handles_position :
- &view->_iterator.fd_handles_position;
- handle = lttng_dynamic_pointer_array_get_pointer(&view->_fd_handles,
- *pos);
- (*pos)++;
- fd_handle_get(handle);
-end:
- return handle;
-}