96 lines
2.9 KiB
C
96 lines
2.9 KiB
C
|
/*
|
||
|
* Copyright(c) 2021 ZettaScale Technology
|
||
|
* Copyright(c) 2021 Apex.AI, Inc
|
||
|
*
|
||
|
* This program and the accompanying materials are made available under the
|
||
|
* terms of the Eclipse Public License v. 2.0 which is available at
|
||
|
* http://www.eclipse.org/legal/epl-2.0, or the Eclipse Distribution License
|
||
|
* v. 1.0 which is available at
|
||
|
* http://www.eclipse.org/org/documents/edl-v10.php.
|
||
|
*
|
||
|
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
|
||
|
*/
|
||
|
|
||
|
// API extension
|
||
|
// defines functions needed for loaning and shared memory usage
|
||
|
|
||
|
#ifndef _DDS_LOAN_API_H_
|
||
|
#define _DDS_LOAN_API_H_
|
||
|
|
||
|
#include "dds/ddsc/dds_basic_types.h"
|
||
|
#include "dds/ddsrt/retcode.h"
|
||
|
#include "dds/export.h"
|
||
|
|
||
|
#if defined(__cplusplus)
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
/**
|
||
|
* @ingroup loan
|
||
|
* @brief Check if a Loan is available to reader/writer
|
||
|
* The loan is available if the shared memory is enabled and all the constraints
|
||
|
* to enable shared memory are met and the type is fixed
|
||
|
* @note dds_loan_sample can be used if and only if
|
||
|
* dds_is_loan_available returns true.
|
||
|
*
|
||
|
* @param[in] entity the handle of the entity
|
||
|
*
|
||
|
* @returns loan available or not
|
||
|
*/
|
||
|
DDS_EXPORT bool dds_is_loan_available(const dds_entity_t entity);
|
||
|
|
||
|
/**
|
||
|
* @ingroup loan
|
||
|
* @brief Check if a shared memory is available to reader/writer.
|
||
|
*
|
||
|
* @note dds_loan_shared_memory_buffer can be used if and only if
|
||
|
* dds_is_shared_memory_available returns true.
|
||
|
*
|
||
|
* @param[in] entity the handle of the entity
|
||
|
*
|
||
|
* @returns true if shared memory is available, false otherwise
|
||
|
*/
|
||
|
DDS_EXPORT bool dds_is_shared_memory_available(const dds_entity_t entity);
|
||
|
|
||
|
DDS_DEPRECATED_EXPORT bool is_loan_available(const dds_entity_t entity);
|
||
|
|
||
|
/**
|
||
|
* @ingroup loan
|
||
|
* @brief Loan a shared memory buffer of a specific size from the writer.
|
||
|
*
|
||
|
* @note Currently this function is to be used with dds_writecdr by adding the
|
||
|
* loaned buffer to serdata as iox_chunk.
|
||
|
* @note The function can only be used if dds_is_shared_memory_available is
|
||
|
* true for the writer.
|
||
|
*
|
||
|
* @param[in] writer the writer to loan the buffer from
|
||
|
* @param[in] size the requested buffer size
|
||
|
* @param[out] buffer the loaned buffer
|
||
|
*
|
||
|
* @returns DDS_RETCODE_OK if successful, DDS_RETCODE_ERROR otherwise
|
||
|
*/
|
||
|
DDS_EXPORT dds_return_t dds_loan_shared_memory_buffer(dds_entity_t writer,
|
||
|
size_t size,
|
||
|
void **buffer);
|
||
|
|
||
|
/**
|
||
|
* @ingroup loan
|
||
|
* @brief Loan a sample from the writer.
|
||
|
*
|
||
|
* @note This function is to be used with dds_write to publish the loaned
|
||
|
* sample.
|
||
|
* @note The function can only be used if dds_is_loan_available is
|
||
|
* true for the writer.
|
||
|
*
|
||
|
* @param[in] writer the writer to loan the buffer from
|
||
|
* @param[out] sample the loaned sample
|
||
|
*
|
||
|
* @returns DDS_RETCODE_OK if successful, DDS_RETCODE_ERROR otherwise
|
||
|
*/
|
||
|
DDS_EXPORT dds_return_t dds_loan_sample(dds_entity_t writer, void **sample);
|
||
|
|
||
|
#if defined(__cplusplus)
|
||
|
}
|
||
|
#endif
|
||
|
#endif
|