Simplify logging and remove unwanted functions from abstraction layer
Signed-off-by: Jeroen Koekkoek <jeroen@koekkoek.nl>
This commit is contained in:
parent
ac020f62f7
commit
1cf03332ca
97 changed files with 2819 additions and 5361 deletions
|
@ -28,7 +28,6 @@
|
|||
66 src/dds_readcond.c
|
||||
67 src/dds_subscriber.c
|
||||
68 src/dds_write.c
|
||||
69 src/dds_report.c
|
||||
70 src/dds_builtin.c
|
||||
72 src/dds_guardcond.c
|
||||
73 src/dds_whc.c
|
||||
|
|
|
@ -29,13 +29,11 @@ PREPEND(srcs_ddsc "${CMAKE_CURRENT_LIST_DIR}/src"
|
|||
dds_key.c
|
||||
dds_querycond.c
|
||||
dds_topic.c
|
||||
dds_report.c
|
||||
dds_err.c
|
||||
dds_listener.c
|
||||
dds_read.c
|
||||
dds_stream.c
|
||||
dds_waitset.c
|
||||
dds_log.c
|
||||
dds_readcond.c
|
||||
dds_guardcond.c
|
||||
dds_subscriber.c
|
||||
|
@ -48,7 +46,6 @@ PREPEND(hdrs_public_ddsc "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include/dd
|
|||
dds_public_error.h
|
||||
dds_public_impl.h
|
||||
dds_public_listener.h
|
||||
dds_public_log.h
|
||||
dds_public_qos.h
|
||||
dds_public_status.h
|
||||
dds_public_stream.h
|
||||
|
@ -71,7 +68,6 @@ PREPEND(hdrs_private_ddsc "${CMAKE_CURRENT_LIST_DIR}/src"
|
|||
dds__readcond.h
|
||||
dds__guardcond.h
|
||||
dds__reader.h
|
||||
dds__report.h
|
||||
dds__rhc.h
|
||||
dds__stream.h
|
||||
dds__subscriber.h
|
||||
|
|
|
@ -48,7 +48,6 @@ typedef _Return_type_success_(return > 0) int32_t dds_entity_t;
|
|||
#include "ddsc/dds_public_error.h"
|
||||
#include "ddsc/dds_public_status.h"
|
||||
#include "ddsc/dds_public_listener.h"
|
||||
#include "ddsc/dds_public_log.h"
|
||||
#include "dds_dcps_builtintopics.h"
|
||||
|
||||
#if defined (__cplusplus)
|
||||
|
|
|
@ -1,39 +0,0 @@
|
|||
/*
|
||||
* Copyright(c) 2006 to 2018 ADLINK Technology Limited and others
|
||||
*
|
||||
* 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
|
||||
*/
|
||||
/* TODO: do we really need to expose this as an API? */
|
||||
|
||||
/** @file
|
||||
*
|
||||
* @brief DDS C Logging API
|
||||
*
|
||||
* This header file defines the public API for logging in the
|
||||
* CycloneDDS C language binding.
|
||||
*/
|
||||
#ifndef DDS_LOG_H
|
||||
#define DDS_LOG_H
|
||||
|
||||
#include "os/os_public.h"
|
||||
#include "ddsc/dds_export.h"
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
DDS_EXPORT void dds_log_info (const char * fmt, ...);
|
||||
DDS_EXPORT void dds_log_warn (const char * fmt, ...);
|
||||
DDS_EXPORT void dds_log_error (const char * fmt, ...);
|
||||
DDS_EXPORT void dds_log_fatal (const char * fmt, ...);
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
#endif
|
|
@ -31,9 +31,8 @@ extern "C" {
|
|||
#define DDS__FILE_ID__ (((__FILE_ID__ & 0x1ff)) << 22)
|
||||
#define DDS__LINE__ ((__LINE__ & 0x3fff) << 8)
|
||||
|
||||
#define DDS_ERR_NO(err) -(DDS__FILE_ID__ + DDS__LINE__ + (err))
|
||||
|
||||
#define DDS_ERRNO(e,msg,...) (assert(e > DDS_RETCODE_OK), os_report(OS_REPORT_ERROR, OS_FUNCTION, __FILE__, __LINE__, DDS_ERR_NO(e), (msg), ##__VA_ARGS__), DDS_ERR_NO(e))
|
||||
#define DDS_ERRNO(err) \
|
||||
(assert(err > DDS_RETCODE_OK), -(DDS__FILE_ID__ + DDS__LINE__ + (err)))
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
|
|
|
@ -1,78 +0,0 @@
|
|||
/*
|
||||
* Copyright(c) 2006 to 2018 ADLINK Technology Limited and others
|
||||
*
|
||||
* 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
|
||||
*/
|
||||
#ifndef DDS_REPORT_H
|
||||
#define DDS_REPORT_H
|
||||
|
||||
#include <stdarg.h>
|
||||
#include "os/os_report.h"
|
||||
|
||||
#define DDS_REPORT_STACK() \
|
||||
os_report_stack ()
|
||||
|
||||
#define DDS_CRITICAL(...) \
|
||||
dds_report ( \
|
||||
OS_REPORT_CRITICAL, \
|
||||
__FILE__, \
|
||||
__LINE__, \
|
||||
OS_FUNCTION, \
|
||||
DDS_RETCODE_ERROR, \
|
||||
__VA_ARGS__)
|
||||
|
||||
#define DDS_ERROR(code,...) \
|
||||
dds_report ( \
|
||||
OS_REPORT_ERROR, \
|
||||
__FILE__, \
|
||||
__LINE__, \
|
||||
OS_FUNCTION, \
|
||||
(code), \
|
||||
__VA_ARGS__)
|
||||
|
||||
#define DDS_INFO(...) \
|
||||
dds_report ( \
|
||||
OS_REPORT_INFO, \
|
||||
__FILE__, \
|
||||
__LINE__, \
|
||||
OS_FUNCTION, \
|
||||
DDS_RETCODE_OK, \
|
||||
__VA_ARGS__)
|
||||
|
||||
#define DDS_WARNING(code,...) \
|
||||
dds_report ( \
|
||||
OS_REPORT_WARNING, \
|
||||
__FILE__, \
|
||||
__LINE__, \
|
||||
OS_FUNCTION, \
|
||||
(code), \
|
||||
__VA_ARGS__)
|
||||
|
||||
#define DDS_REPORT(type, code,...) \
|
||||
dds_report ( \
|
||||
type, \
|
||||
__FILE__, \
|
||||
__LINE__, \
|
||||
OS_FUNCTION, \
|
||||
(code), \
|
||||
__VA_ARGS__)
|
||||
|
||||
#define DDS_REPORT_FLUSH OS_REPORT_FLUSH
|
||||
|
||||
void
|
||||
dds_report(
|
||||
os_reportType reportType,
|
||||
const char *file,
|
||||
int32_t line,
|
||||
const char *function,
|
||||
dds_return_t code,
|
||||
const char *format,
|
||||
...);
|
||||
|
||||
#endif
|
|
@ -103,7 +103,7 @@ void dds_sample_free_contents (char * data, const uint32_t * ops)
|
|||
{
|
||||
type = DDS_OP_TYPE (op);
|
||||
#ifdef OP_DEBUG_FREE
|
||||
TRACE (("F-ADR: %s offset %d\n", stream_op_type[type], ops[1]));
|
||||
DDS_TRACE("F-ADR: %s offset %d\n", stream_op_type[type], ops[1]);
|
||||
#endif
|
||||
addr = data + ops[1];
|
||||
ops += 2;
|
||||
|
@ -119,7 +119,7 @@ void dds_sample_free_contents (char * data, const uint32_t * ops)
|
|||
case DDS_OP_VAL_STR:
|
||||
{
|
||||
#ifdef OP_DEBUG_FREE
|
||||
TRACE (("F-STR: @ %p %s\n", addr, *((char**) addr)));
|
||||
DDS_TRACE("F-STR: @ %p %s\n", addr, *((char**) addr));
|
||||
#endif
|
||||
dds_free (*((char**) addr));
|
||||
*((char**) addr) = NULL;
|
||||
|
@ -132,7 +132,7 @@ void dds_sample_free_contents (char * data, const uint32_t * ops)
|
|||
num = (seq->_maximum > seq->_length) ? seq->_maximum : seq->_length;
|
||||
|
||||
#ifdef OP_DEBUG_FREE
|
||||
TRACE (("F-SEQ: of %s\n", stream_op_type[subtype]));
|
||||
DDS_TRACE("F-SEQ: of %s\n", stream_op_type[subtype]);
|
||||
#endif
|
||||
if ((seq->_release && num) || (subtype > DDS_OP_VAL_STR))
|
||||
{
|
||||
|
@ -189,7 +189,7 @@ void dds_sample_free_contents (char * data, const uint32_t * ops)
|
|||
num = *ops++;
|
||||
|
||||
#ifdef OP_DEBUG_FREE
|
||||
TRACE (("F-ARR: of %s size %d\n", stream_op_type[subtype], num));
|
||||
DDS_TRACE("F-ARR: of %s size %d\n", stream_op_type[subtype], num);
|
||||
#endif
|
||||
switch (subtype)
|
||||
{
|
||||
|
@ -242,7 +242,7 @@ void dds_sample_free_contents (char * data, const uint32_t * ops)
|
|||
assert (subtype <= DDS_OP_VAL_4BY);
|
||||
|
||||
#ifdef OP_DEBUG_FREE
|
||||
TRACE (("F-UNI: switch %s cases %d\n", stream_op_type[subtype], num));
|
||||
DDS_TRACE("F-UNI: switch %s cases %d\n", stream_op_type[subtype], num);
|
||||
#endif
|
||||
/* Get discriminant */
|
||||
|
||||
|
@ -320,7 +320,7 @@ void dds_sample_free_contents (char * data, const uint32_t * ops)
|
|||
case DDS_OP_JSR: /* Implies nested type */
|
||||
{
|
||||
#ifdef OP_DEBUG_FREE
|
||||
TRACE (("F-JSR: %d\n", DDS_OP_JUMP (op)));
|
||||
DDS_TRACE("F-JSR: %d\n", DDS_OP_JUMP (op));
|
||||
#endif
|
||||
dds_sample_free_contents (data, ops + DDS_OP_JUMP (op));
|
||||
ops++;
|
||||
|
@ -330,7 +330,7 @@ void dds_sample_free_contents (char * data, const uint32_t * ops)
|
|||
}
|
||||
}
|
||||
#ifdef OP_DEBUG_FREE
|
||||
TRACE (("F-RTS:\n"));
|
||||
DDS_TRACE("F-RTS:\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
#include "dds__participant.h"
|
||||
#include "dds__err.h"
|
||||
#include "dds__types.h"
|
||||
#include "dds__report.h"
|
||||
#include "dds__builtin.h"
|
||||
#include "dds__subscriber.h"
|
||||
|
||||
|
@ -125,7 +124,8 @@ dds__create_builtin_participant(
|
|||
}
|
||||
|
||||
if (q_rc != 0) {
|
||||
participant = DDS_ERRNO(DDS_RETCODE_ERROR, "Internal builtin error");
|
||||
DDS_ERROR("Internal builtin error\n");
|
||||
participant = DDS_ERRNO(DDS_RETCODE_ERROR);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
@ -311,7 +311,8 @@ dds__get_builtin_topic(
|
|||
desc = &DDS_CMDataReaderBuiltinTopicData_desc;
|
||||
name = "CMDataReader";
|
||||
} else {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Invalid builtin-topic handle(%d)", topic);
|
||||
DDS_ERROR("Invalid builtin-topic handle(%d)\n", topic);
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
goto err_invalid_topic;
|
||||
}
|
||||
|
||||
|
@ -319,10 +320,6 @@ dds__get_builtin_topic(
|
|||
if (ret < 0 && dds_err_nr(ret) == DDS_RETCODE_PRECONDITION_NOT_MET) {
|
||||
dds_qos_t *tqos;
|
||||
|
||||
/* drop the precondition-no-met error */
|
||||
DDS_REPORT_FLUSH(0);
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
tqos = dds_create_qos();
|
||||
dds_qset_durability(tqos, DDS_DURABILITY_TRANSIENT_LOCAL);
|
||||
dds_qset_presentation(tqos, DDS_PRESENTATION_TOPIC, false, false);
|
||||
|
@ -358,7 +355,8 @@ dds__get_builtin_writer(
|
|||
}
|
||||
os_mutexUnlock(&g_builtin_mutex);
|
||||
} else {
|
||||
wr = DDS_ERRNO(DDS_RETCODE_ERROR, "Given topic is not a builtin topic.");
|
||||
DDS_ERROR("Given topic is not a builtin topic\n");
|
||||
wr = DDS_ERRNO(DDS_RETCODE_ERROR);
|
||||
}
|
||||
return wr;
|
||||
}
|
||||
|
@ -420,10 +418,7 @@ forward_builtin_participant(
|
|||
_In_ nn_wctime_t timestamp,
|
||||
_In_ int alive)
|
||||
{
|
||||
dds_return_t ret;
|
||||
DDS_REPORT_STACK();
|
||||
ret = dds__builtin_write(DDS_BUILTIN_TOPIC_DCPSPARTICIPANT, data, timestamp.v, alive);
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
dds__builtin_write(DDS_BUILTIN_TOPIC_DCPSPARTICIPANT, data, timestamp.v, alive);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -432,8 +427,5 @@ forward_builtin_cmparticipant(
|
|||
_In_ nn_wctime_t timestamp,
|
||||
_In_ int alive)
|
||||
{
|
||||
dds_return_t ret;
|
||||
DDS_REPORT_STACK();
|
||||
ret = dds__builtin_write(DDS_BUILTIN_TOPIC_CMPARTICIPANT, data, timestamp.v, alive);
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
dds__builtin_write(DDS_BUILTIN_TOPIC_CMPARTICIPANT, data, timestamp.v, alive);
|
||||
}
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
#include "dds__subscriber.h"
|
||||
#include "dds__publisher.h"
|
||||
#include "dds__err.h"
|
||||
#include "dds__report.h"
|
||||
|
||||
_Pre_satisfies_(((entity & DDS_ENTITY_KIND_MASK) == DDS_KIND_READER ) || \
|
||||
((entity & DDS_ENTITY_KIND_MASK) == DDS_KIND_SUBSCRIBER) || \
|
||||
|
@ -42,7 +41,8 @@ dds_begin_coherent(
|
|||
ret = dds_subscriber_begin_coherent(entity);
|
||||
break;
|
||||
default:
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Given entity can not control coherency");
|
||||
DDS_ERROR("Given entity can not control coherency\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
|
@ -72,7 +72,8 @@ dds_end_coherent(
|
|||
ret = dds_subscriber_end_coherent(entity);
|
||||
break;
|
||||
default:
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Given entity can not control coherency");
|
||||
DDS_ERROR("Given entity can not control coherency\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
|
|
|
@ -17,8 +17,6 @@
|
|||
#include "dds__reader.h"
|
||||
#include "dds__listener.h"
|
||||
#include "dds__err.h"
|
||||
#include "os/os_report.h"
|
||||
#include "dds__report.h"
|
||||
#include "ddsc/ddsc_project.h"
|
||||
|
||||
/* Sanity check. */
|
||||
|
@ -272,11 +270,14 @@ dds_entity_init(
|
|||
assert(e->m_hdllink);
|
||||
} else{
|
||||
if (e->m_hdl == UT_HANDLE_OUT_OF_RESOURCES) {
|
||||
e->m_hdl = DDS_ERRNO(DDS_RETCODE_OUT_OF_RESOURCES, "Can not create new entity; too many where created previously.");
|
||||
DDS_ERROR("Can not create new entity; too many where created previously\n");
|
||||
e->m_hdl = DDS_ERRNO(DDS_RETCODE_OUT_OF_RESOURCES);
|
||||
} else if (e->m_hdl == UT_HANDLE_NOT_INITALIZED) {
|
||||
e->m_hdl = DDS_ERRNO(DDS_RETCODE_PRECONDITION_NOT_MET, DDSC_PROJECT_NAME" is not yet initialized. Please create a participant before executing an other method.");
|
||||
DDS_ERROR(DDSC_PROJECT_NAME" is not yet initialized. Please create a participant before executing an other method\n");
|
||||
e->m_hdl = DDS_ERRNO(DDS_RETCODE_PRECONDITION_NOT_MET);
|
||||
} else {
|
||||
e->m_hdl = DDS_ERRNO(DDS_RETCODE_ERROR, "An internal error has occurred.");
|
||||
DDS_ERROR("An internal error has occurred\n");
|
||||
e->m_hdl = DDS_ERRNO(DDS_RETCODE_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -291,9 +292,9 @@ dds_delete(
|
|||
_In_ dds_entity_t entity)
|
||||
{
|
||||
dds_return_t ret;
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
ret = dds_delete_impl(entity, false);
|
||||
DDS_REPORT_FLUSH(ret < 0);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -315,7 +316,8 @@ dds_delete_impl(
|
|||
|
||||
rc = dds_entity_lock(entity, UT_HANDLE_DONTCARE_KIND, &e);
|
||||
if (rc != DDS_RETCODE_OK) {
|
||||
return DDS_ERRNO(rc, "Error on locking entity");
|
||||
DDS_ERROR("Error on locking entity\n");
|
||||
return DDS_ERRNO(rc);
|
||||
}
|
||||
|
||||
if(keep_if_explicit == true && ((e->m_flags & DDS_ENTITY_IMPLICIT) == 0)){
|
||||
|
@ -397,7 +399,8 @@ dds_delete_impl(
|
|||
* is released. It is possible that this last release will be done by a thread
|
||||
* that was kicked during the close(). */
|
||||
if (ut_handle_delete(e->m_hdl, e->m_hdllink, timeout) != UT_HANDLE_OK) {
|
||||
return DDS_ERRNO(DDS_RETCODE_TIMEOUT, "Entity deletion did not release resources.");
|
||||
DDS_ERROR("Entity deletion did not release resources\n");
|
||||
return DDS_ERRNO(DDS_RETCODE_TIMEOUT);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -454,8 +457,6 @@ dds_get_parent(
|
|||
dds_entity_t hdl;
|
||||
dds_entity *parent;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
rc = dds_entity_lock(entity, DDS_KIND_DONTCARE, &e);
|
||||
if (rc == DDS_RETCODE_OK) {
|
||||
if ((parent = dds__nonself_parent(e)) != NULL) {
|
||||
|
@ -466,9 +467,10 @@ dds_get_parent(
|
|||
}
|
||||
dds_entity_unlock(e);
|
||||
} else {
|
||||
hdl = DDS_ERRNO(rc, "Error on locking handle entity");
|
||||
DDS_ERROR("Error on locking handle entity\n");
|
||||
hdl = DDS_ERRNO(rc);
|
||||
}
|
||||
DDS_REPORT_FLUSH(hdl <= 0);
|
||||
|
||||
return hdl;
|
||||
}
|
||||
|
||||
|
@ -483,17 +485,16 @@ dds_get_participant (
|
|||
dds__retcode_t rc;
|
||||
dds_entity_t hdl;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
rc = dds_entity_lock(entity, DDS_KIND_DONTCARE, &e);
|
||||
if (rc == DDS_RETCODE_OK) {
|
||||
assert(e->m_participant);
|
||||
hdl = e->m_participant->m_hdl;
|
||||
dds_entity_unlock(e);
|
||||
} else {
|
||||
hdl = DDS_ERRNO(rc, "Error on locking handle entity");
|
||||
DDS_ERROR("Error on locking handle entity\n");
|
||||
hdl = DDS_ERRNO(rc);
|
||||
}
|
||||
DDS_REPORT_FLUSH( hdl <= 0);
|
||||
|
||||
return hdl;
|
||||
}
|
||||
|
||||
|
@ -511,21 +512,22 @@ dds_get_children(
|
|||
dds_return_t ret;
|
||||
dds_entity* iter;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if ((children != NULL) && ((size <= 0) || (size >= INT32_MAX))) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Array is given, but with invalid size");
|
||||
DDS_ERROR("Array is given, but with invalid size\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
goto err;
|
||||
}
|
||||
|
||||
if ((children == NULL) && (size != 0)) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Size is given, but no array");
|
||||
DDS_ERROR("Size is given, but no array\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
goto err;
|
||||
}
|
||||
|
||||
rc = dds_entity_lock(entity, DDS_KIND_DONTCARE, &e);
|
||||
if (rc != DDS_RETCODE_OK) {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking entity");
|
||||
DDS_ERROR("Error occurred on locking entity\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
goto err;
|
||||
}
|
||||
/* Initialize first child to satisfy SAL. */
|
||||
|
@ -545,7 +547,6 @@ dds_get_children(
|
|||
dds_entity_unlock(e);
|
||||
|
||||
err:
|
||||
DDS_REPORT_FLUSH(ret < 0);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -561,26 +562,26 @@ dds_get_qos(
|
|||
dds__retcode_t rc;
|
||||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (qos == NULL) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER,"Argument qos is NULL");
|
||||
DDS_ERROR("Argument qos is NULL\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
goto fail;
|
||||
}
|
||||
rc = dds_entity_lock(entity, DDS_KIND_DONTCARE, &e);
|
||||
if (rc != DDS_RETCODE_OK) {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking entity");
|
||||
DDS_ERROR("Error occurred on locking entity\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
goto fail;
|
||||
}
|
||||
if (e->m_deriver.set_qos) {
|
||||
rc = dds_copy_qos(qos, e->m_qos);
|
||||
} else {
|
||||
rc = DDS_RETCODE_ILLEGAL_OPERATION;
|
||||
ret = DDS_ERRNO(rc, "QoS cannot be set on this entity");
|
||||
DDS_ERROR("QoS cannot be set on this entity\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
}
|
||||
dds_entity_unlock(e);
|
||||
fail:
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK );
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -596,15 +597,14 @@ dds_set_qos(
|
|||
dds__retcode_t rc;
|
||||
dds_return_t ret;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (qos != NULL) {
|
||||
rc = dds_entity_lock(entity, DDS_KIND_DONTCARE, &e);
|
||||
if (rc == DDS_RETCODE_OK) {
|
||||
if (e->m_deriver.set_qos) {
|
||||
ret = e->m_deriver.set_qos(e, qos, e->m_flags & DDS_ENTITY_ENABLED);
|
||||
} else {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ILLEGAL_OPERATION, "QoS cannot be set on this entity");
|
||||
DDS_ERROR("QoS cannot be set on this entity\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ILLEGAL_OPERATION);
|
||||
}
|
||||
if (ret == DDS_RETCODE_OK) {
|
||||
/* Remember this QoS. */
|
||||
|
@ -612,16 +612,19 @@ dds_set_qos(
|
|||
e->m_qos = dds_create_qos();
|
||||
}
|
||||
rc = dds_copy_qos(e->m_qos, qos);
|
||||
ret = DDS_ERRNO(rc, "QoS cannot be set on this entity");
|
||||
DDS_ERROR("QoS cannot be set on this entity\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
}
|
||||
dds_entity_unlock(e);
|
||||
} else {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking entity");
|
||||
DDS_ERROR("Error occurred on locking entity\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
}
|
||||
} else {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Argument QoS is NULL");
|
||||
DDS_ERROR("Argument QoS is NULL\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
}
|
||||
DDS_REPORT_FLUSH( ret != DDS_RETCODE_OK);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -637,8 +640,6 @@ dds_get_listener(
|
|||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
dds__retcode_t rc;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (listener != NULL) {
|
||||
rc = dds_entity_lock(entity, DDS_KIND_DONTCARE, &e);
|
||||
if (rc == DDS_RETCODE_OK) {
|
||||
|
@ -646,12 +647,14 @@ dds_get_listener(
|
|||
dds_copy_listener (listener, &e->m_listener);
|
||||
dds_entity_unlock(e);
|
||||
} else {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking entity");
|
||||
DDS_ERROR("Error occurred on locking entity\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
}
|
||||
} else {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Argument listener is NULL");
|
||||
DDS_ERROR("Argument listener is NULL\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
}
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK );
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -667,11 +670,10 @@ dds_set_listener(
|
|||
dds__retcode_t rc;
|
||||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
rc = dds_entity_lock(entity, DDS_KIND_DONTCARE, &e);
|
||||
if(rc != DDS_RETCODE_OK){
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking entity");
|
||||
DDS_ERROR("Error occurred on locking entity\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
goto fail;
|
||||
}
|
||||
dds_entity_cb_wait(e);
|
||||
|
@ -682,7 +684,6 @@ dds_set_listener(
|
|||
}
|
||||
dds_entity_unlock(e);
|
||||
fail:
|
||||
DDS_REPORT_FLUSH( ret != DDS_RETCODE_OK);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -697,20 +698,19 @@ dds_enable(
|
|||
dds__retcode_t rc;
|
||||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
rc = dds_entity_lock(entity, DDS_KIND_DONTCARE, &e);
|
||||
if (rc == DDS_RETCODE_OK) {
|
||||
if ((e->m_flags & DDS_ENTITY_ENABLED) == 0) {
|
||||
/* TODO: CHAM-96: Really enable. */
|
||||
e->m_flags |= DDS_ENTITY_ENABLED;
|
||||
DDS_ERROR(DDS_RETCODE_UNSUPPORTED, "Delayed entity enabling is not supported");
|
||||
DDS_ERROR("Delayed entity enabling is not supported\n");
|
||||
}
|
||||
dds_entity_unlock(e);
|
||||
} else {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking entity");
|
||||
DDS_ERROR("Error occurred on locking entity\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
}
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -726,8 +726,6 @@ dds_get_status_changes(
|
|||
dds__retcode_t rc;
|
||||
dds_return_t ret;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (status != NULL) {
|
||||
rc = dds_entity_lock(entity, DDS_KIND_DONTCARE, &e);
|
||||
if (rc == DDS_RETCODE_OK) {
|
||||
|
@ -735,16 +733,19 @@ dds_get_status_changes(
|
|||
*status = e->m_trigger;
|
||||
ret = DDS_RETCODE_OK;
|
||||
} else {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ILLEGAL_OPERATION, "This entity does not maintain a status.");
|
||||
DDS_ERROR("This entity does not maintain a status\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ILLEGAL_OPERATION);
|
||||
}
|
||||
dds_entity_unlock(e);
|
||||
} else {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking entity");
|
||||
DDS_ERROR("Error occurred on locking entity\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
}
|
||||
} else {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Argument status is NULL");
|
||||
DDS_ERROR("Argument status is NULL\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
}
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -760,8 +761,6 @@ dds_get_enabled_status(
|
|||
dds__retcode_t rc;
|
||||
dds_return_t ret;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (status != NULL) {
|
||||
rc = dds_entity_lock(entity, DDS_KIND_DONTCARE, &e);
|
||||
if (rc == DDS_RETCODE_OK) {
|
||||
|
@ -769,16 +768,19 @@ dds_get_enabled_status(
|
|||
*status = (e->m_status_enable & ~DDS_INTERNAL_STATUS_MASK);
|
||||
ret = DDS_RETCODE_OK;
|
||||
} else {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ILLEGAL_OPERATION, "This entity does not maintain a status.");
|
||||
DDS_ERROR("This entity does not maintain a status\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ILLEGAL_OPERATION);
|
||||
}
|
||||
dds_entity_unlock(e);
|
||||
} else {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking entity");
|
||||
DDS_ERROR("Error occurred on locking entity\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
}
|
||||
} else{
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Argument status is NULL");
|
||||
DDS_ERROR("Argument status is NULL\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
}
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -794,8 +796,6 @@ dds_set_enabled_status(
|
|||
dds__retcode_t rc;
|
||||
dds_return_t ret;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
rc = dds_entity_lock(entity, DDS_KIND_DONTCARE, &e);
|
||||
if (rc == DDS_RETCODE_OK) {
|
||||
if (e->m_deriver.validate_status) {
|
||||
|
@ -810,13 +810,15 @@ dds_set_enabled_status(
|
|||
}
|
||||
}
|
||||
} else {
|
||||
ret = DDS_ERRNO (DDS_RETCODE_ILLEGAL_OPERATION, "This entity does not maintain a status.");
|
||||
DDS_ERROR("This entity does not maintain a status\n");
|
||||
ret = DDS_ERRNO (DDS_RETCODE_ILLEGAL_OPERATION);
|
||||
}
|
||||
dds_entity_unlock(e);
|
||||
} else {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking entity");
|
||||
DDS_ERROR("Error occurred on locking entity\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
}
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -834,8 +836,6 @@ dds_read_status(
|
|||
dds__retcode_t rc;
|
||||
dds_return_t ret;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (status != NULL) {
|
||||
rc = dds_entity_lock(entity, DDS_KIND_DONTCARE, &e);
|
||||
if (rc == DDS_RETCODE_OK) {
|
||||
|
@ -846,16 +846,19 @@ dds_read_status(
|
|||
*status = e->m_trigger & mask;
|
||||
}
|
||||
} else {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ILLEGAL_OPERATION, "This entity does not maintain a status.");
|
||||
DDS_ERROR("This entity does not maintain a status\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ILLEGAL_OPERATION);
|
||||
}
|
||||
dds_entity_unlock(e);
|
||||
} else {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking entity");
|
||||
DDS_ERROR("Error occurred on locking entity\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
}
|
||||
} else {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Argument status is NULL");
|
||||
DDS_ERROR("Argument status is NULL\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
}
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -873,7 +876,6 @@ dds_take_status(
|
|||
dds__retcode_t rc;
|
||||
dds_return_t ret;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
if (status != NULL) {
|
||||
rc = dds_entity_lock(entity, DDS_KIND_DONTCARE, &e);
|
||||
if (rc == DDS_RETCODE_OK) {
|
||||
|
@ -888,16 +890,19 @@ dds_take_status(
|
|||
e->m_trigger &= ~mask;
|
||||
}
|
||||
} else {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ILLEGAL_OPERATION, "This entity does not maintain a status.");
|
||||
DDS_ERROR("This entity does not maintain a status\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ILLEGAL_OPERATION);
|
||||
}
|
||||
dds_entity_unlock(e);
|
||||
} else {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking entity");
|
||||
DDS_ERROR("Error occurred on locking entity\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
}
|
||||
} else {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Argument status is NUL");
|
||||
DDS_ERROR("Argument status is NUL\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
}
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -927,21 +932,20 @@ dds_get_domainid(
|
|||
dds__retcode_t rc;
|
||||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (id != NULL) {
|
||||
rc = dds_entity_lock(entity, DDS_KIND_DONTCARE, &e);
|
||||
if (rc == DDS_RETCODE_OK) {
|
||||
*id = e->m_domainid;
|
||||
dds_entity_unlock(e);
|
||||
} else{
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking entity");
|
||||
DDS_ERROR("Error occurred on locking entity\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
}
|
||||
} else{
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Argument domain id is NULL");
|
||||
DDS_ERROR("Argument domain id is NULL\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -957,24 +961,25 @@ dds_get_instance_handle(
|
|||
dds__retcode_t rc;
|
||||
dds_return_t ret;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (ihdl != NULL) {
|
||||
rc = dds_entity_lock(entity, DDS_KIND_DONTCARE, &e);
|
||||
if (rc == DDS_RETCODE_OK) {
|
||||
if (e->m_deriver.get_instance_hdl) {
|
||||
ret = e->m_deriver.get_instance_hdl(e, ihdl);
|
||||
} else {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ILLEGAL_OPERATION, "Instance handle is not valid");
|
||||
DDS_ERROR("Instance handle is not valid\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ILLEGAL_OPERATION);
|
||||
}
|
||||
dds_entity_unlock(e);
|
||||
} else {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking entity");
|
||||
DDS_ERROR("Error occurred on locking entity\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
}
|
||||
} else {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Argument instance handle is NULL");
|
||||
DDS_ERROR("Argument instance handle is NULL\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
}
|
||||
DDS_REPORT_FLUSH(ret < 0);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -995,23 +1000,23 @@ dds_valid_hdl(
|
|||
rc = DDS_RETCODE_OK;
|
||||
} else if(utr == UT_HANDLE_UNEQUAL_KIND){
|
||||
rc = DDS_RETCODE_ILLEGAL_OPERATION;
|
||||
DDS_WARNING(rc, "Given (%s) [0x%08lx] entity type can not perform this operation.", dds__entity_kind_str(hdl), hdl);
|
||||
DDS_WARNING("Given (%s) [0x%08"PRIx32"] entity type can not perform this operation\n", dds__entity_kind_str(hdl), hdl);
|
||||
} else if(utr == UT_HANDLE_INVALID){
|
||||
rc = DDS_RETCODE_BAD_PARAMETER;
|
||||
DDS_WARNING(rc, "Given (%s) [0x%08lx] entity is invalid", dds__entity_kind_str(hdl), hdl);
|
||||
DDS_WARNING("Given (%s) [0x%08"PRIx32"] entity is invalid\n", dds__entity_kind_str(hdl), hdl);
|
||||
} else if(utr == UT_HANDLE_DELETED){
|
||||
rc = DDS_RETCODE_ALREADY_DELETED;
|
||||
DDS_WARNING(rc, "Given (%s) [0x%08lx] entity is already deleted.", dds__entity_kind_str(hdl), hdl);
|
||||
DDS_WARNING("Given (%s) [0x%08"PRIx32"] entity is already deleted\n", dds__entity_kind_str(hdl), hdl);
|
||||
} else if(utr == UT_HANDLE_CLOSED){
|
||||
rc = DDS_RETCODE_ALREADY_DELETED;
|
||||
DDS_WARNING(rc, "Given (%s) [0x%08lx] entity is already deleted.", dds__entity_kind_str(hdl), hdl);
|
||||
DDS_WARNING("Given (%s) [0x%08"PRIx32"] entity is already deleted\n", dds__entity_kind_str(hdl), hdl);
|
||||
} else {
|
||||
rc = DDS_RETCODE_ERROR;
|
||||
DDS_WARNING(rc, "An internal error occurred.");
|
||||
DDS_WARNING("An internal error occurred\n");
|
||||
}
|
||||
} else {
|
||||
rc = DDS_RETCODE_BAD_PARAMETER;
|
||||
DDS_WARNING(rc, "Given entity (0x%08lx) was not properly created.", hdl);
|
||||
DDS_WARNING("Given entity (0x%08"PRIx32") was not properly created\n", hdl);
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
@ -1042,23 +1047,23 @@ dds_entity_lock(
|
|||
rc = DDS_RETCODE_OK;
|
||||
} else if(utr == UT_HANDLE_UNEQUAL_KIND){
|
||||
rc = DDS_RETCODE_ILLEGAL_OPERATION;
|
||||
DDS_WARNING(rc, "Given (%s) [0x%08lx] entity type can not perform this operation.", dds__entity_kind_str(hdl), hdl);
|
||||
DDS_WARNING("Given (%s) [0x%08"PRIx32"] entity type can not perform this operation\n", dds__entity_kind_str(hdl), hdl);
|
||||
} else if(utr == UT_HANDLE_INVALID){
|
||||
rc = DDS_RETCODE_BAD_PARAMETER;
|
||||
DDS_WARNING(rc, "Given (%s) [0x%08lx] entity is invalid", dds__entity_kind_str(hdl), hdl);
|
||||
DDS_WARNING("Given (%s) [0x%08"PRIx32"] entity is invalid\n", dds__entity_kind_str(hdl), hdl);
|
||||
} else if(utr == UT_HANDLE_DELETED){
|
||||
rc = DDS_RETCODE_ALREADY_DELETED;
|
||||
DDS_WARNING(rc , "Given (%s) [0x%08lx] entity is already deleted", dds__entity_kind_str(hdl), hdl);
|
||||
DDS_WARNING("Given (%s) [0x%08"PRIx32"] entity is already deleted\n", dds__entity_kind_str(hdl), hdl);
|
||||
} else if(utr == UT_HANDLE_CLOSED){
|
||||
rc = DDS_RETCODE_ALREADY_DELETED;
|
||||
DDS_WARNING(rc, "Given (%s) [0x%08lx] entity is already deleted", dds__entity_kind_str(hdl), hdl);
|
||||
DDS_WARNING("Given (%s) [0x%08"PRIx32"] entity is already deleted\n", dds__entity_kind_str(hdl), hdl);
|
||||
} else {
|
||||
rc = DDS_RETCODE_ERROR;
|
||||
DDS_WARNING(rc, "An internal error occurred");
|
||||
DDS_WARNING("An internal error occurred\n");
|
||||
}
|
||||
} else {
|
||||
rc = DDS_RETCODE_BAD_PARAMETER;
|
||||
DDS_WARNING(rc, "Given entity (0x%08lx) was not properly created.", hdl);
|
||||
DDS_WARNING("Given entity (0x%08"PRIx32") was not properly created\n", hdl);
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
@ -1085,16 +1090,15 @@ dds_triggered(
|
|||
dds_return_t ret;
|
||||
dds__retcode_t rc;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
rc = dds_entity_lock(entity, DDS_KIND_DONTCARE, &e);
|
||||
if (rc == DDS_RETCODE_OK) {
|
||||
ret = (e->m_trigger != 0);
|
||||
dds_entity_unlock(e);
|
||||
} else {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking entity");
|
||||
DDS_ERROR("Error occurred on locking entity\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
}
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -1151,7 +1155,7 @@ dds_entity_observer_register(
|
|||
rc = dds_entity_observer_register_nl(e, observer, cb);
|
||||
dds_entity_unlock(e);
|
||||
} else{
|
||||
DDS_ERROR(rc, "Error occurred on locking observer");
|
||||
DDS_ERROR("Error occurred on locking observer\n");
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
@ -1201,7 +1205,8 @@ dds_entity_observer_unregister(
|
|||
rc = dds_entity_observer_unregister_nl(e, observer);
|
||||
dds_entity_unlock(e);
|
||||
} else{
|
||||
(void)DDS_ERRNO(rc, "Error occurred on locking entity");
|
||||
DDS_ERROR("Error occurred on locking entity\n");
|
||||
(void)DDS_ERRNO(rc);
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
@ -1252,8 +1257,6 @@ dds_get_topic(
|
|||
dds_reader *rd;
|
||||
dds_writer *wr;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
rc = dds_reader_lock(entity, &rd);
|
||||
if(rc == DDS_RETCODE_OK) {
|
||||
hdl = rd->m_topic->m_entity.m_hdl;
|
||||
|
@ -1269,9 +1272,10 @@ dds_get_topic(
|
|||
}
|
||||
}
|
||||
if (rc != DDS_RETCODE_OK) {
|
||||
hdl = DDS_ERRNO(rc, "Error occurred on locking entity");
|
||||
DDS_ERROR("Error occurred on locking entity\n");
|
||||
hdl = DDS_ERRNO(rc);
|
||||
}
|
||||
DDS_REPORT_FLUSH(hdl <= 0);
|
||||
|
||||
return hdl;
|
||||
}
|
||||
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
#include "ddsi/q_ephash.h"
|
||||
#include "ddsi/q_entity.h"
|
||||
#include "ddsi/q_thread.h"
|
||||
#include "dds__report.h"
|
||||
|
||||
_Must_inspect_result_ dds_guardcond*
|
||||
dds_create_guardcond(
|
||||
|
@ -38,7 +37,6 @@ dds_create_guardcondition(
|
|||
dds_entity * pp;
|
||||
dds__retcode_t rc;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
rc = dds_entity_lock(participant, DDS_KIND_PARTICIPANT, &pp);
|
||||
if (rc == DDS_RETCODE_OK) {
|
||||
dds_guardcond *cond = dds_create_guardcond((dds_participant *)pp);
|
||||
|
@ -46,9 +44,10 @@ dds_create_guardcondition(
|
|||
hdl = cond->m_entity.m_hdl;
|
||||
dds_entity_unlock(pp);
|
||||
} else {
|
||||
hdl = DDS_ERRNO(rc, "Error occurred on locking reader");
|
||||
DDS_ERROR("Error occurred on locking reader\n");
|
||||
hdl = DDS_ERRNO(rc);
|
||||
}
|
||||
DDS_REPORT_FLUSH(hdl <= 0);
|
||||
|
||||
return hdl;
|
||||
}
|
||||
|
||||
|
@ -62,7 +61,6 @@ dds_set_guardcondition(
|
|||
dds_guardcond *gcond;
|
||||
dds__retcode_t rc;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
rc = dds_entity_lock(condition, DDS_KIND_COND_GUARD, (dds_entity**)&gcond);
|
||||
if (rc == DDS_RETCODE_OK) {
|
||||
if (triggered) {
|
||||
|
@ -74,9 +72,10 @@ dds_set_guardcondition(
|
|||
dds_entity_unlock(&gcond->m_entity);
|
||||
ret = DDS_RETCODE_OK;
|
||||
} else {
|
||||
ret = DDS_ERRNO(dds_valid_hdl(condition, DDS_KIND_COND_GUARD), "Argument condition is not valid");
|
||||
DDS_ERROR("Argument condition is not valid\n");
|
||||
ret = DDS_ERRNO(dds_valid_hdl(condition, DDS_KIND_COND_GUARD));
|
||||
}
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -90,7 +89,6 @@ dds_read_guardcondition(
|
|||
dds_guardcond *gcond;
|
||||
dds__retcode_t rc;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
if (triggered != NULL) {
|
||||
*triggered = false;
|
||||
rc = dds_entity_lock(condition, DDS_KIND_COND_GUARD, (dds_entity**)&gcond);
|
||||
|
@ -99,12 +97,14 @@ dds_read_guardcondition(
|
|||
dds_entity_unlock((dds_entity*)gcond);
|
||||
ret = DDS_RETCODE_OK;
|
||||
} else {
|
||||
ret = DDS_ERRNO(dds_valid_hdl(condition, DDS_KIND_COND_GUARD), "Argument condition is not valid");
|
||||
DDS_ERROR("Argument condition is not valid\n");
|
||||
ret = DDS_ERRNO(dds_valid_hdl(condition, DDS_KIND_COND_GUARD));
|
||||
}
|
||||
} else {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Argument triggered is NULL");
|
||||
DDS_ERROR("Argument triggered is NULL\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
}
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -118,7 +118,6 @@ dds_take_guardcondition(
|
|||
dds_guardcond *gcond;
|
||||
dds__retcode_t rc;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
if (triggered != NULL) {
|
||||
*triggered = false;
|
||||
rc = dds_entity_lock(condition, DDS_KIND_COND_GUARD, (dds_entity**)&gcond);
|
||||
|
@ -128,11 +127,13 @@ dds_take_guardcondition(
|
|||
dds_entity_unlock((dds_entity*)gcond);
|
||||
ret = DDS_RETCODE_OK;
|
||||
} else {
|
||||
ret = DDS_ERRNO(dds_valid_hdl(condition, DDS_KIND_COND_GUARD), "Argument condition is not valid");
|
||||
DDS_ERROR("Argument condition is not valid\n");
|
||||
ret = DDS_ERRNO(dds_valid_hdl(condition, DDS_KIND_COND_GUARD));
|
||||
}
|
||||
} else {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Argument triggered is NULL");
|
||||
DDS_ERROR("Argument triggered is NULL\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
}
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -12,8 +12,7 @@
|
|||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <assert.h>
|
||||
#include <os/os.h>
|
||||
#include <os/os_report.h>
|
||||
#include "os/os.h"
|
||||
#include "dds__init.h"
|
||||
#include "dds__rhc.h"
|
||||
#include "dds__tkmap.h"
|
||||
|
@ -21,11 +20,10 @@
|
|||
#include "dds__domain.h"
|
||||
#include "dds__err.h"
|
||||
#include "dds__builtin.h"
|
||||
#include "dds__report.h"
|
||||
#include "ddsi/ddsi_serdata.h"
|
||||
#include "ddsi/q_servicelease.h"
|
||||
#include "ddsi/q_entity.h"
|
||||
#include <ddsi/q_config.h>
|
||||
#include "ddsi/q_config.h"
|
||||
#include "ddsc/ddsc_project.h"
|
||||
|
||||
#ifdef _WRS_KERNEL
|
||||
|
@ -54,8 +52,6 @@ dds_init(dds_domainid_t domain)
|
|||
os_osInit();
|
||||
init_mutex = os_getSingletonMutex();
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
os_mutexLock(init_mutex);
|
||||
|
||||
dds_global.m_init_count++;
|
||||
|
@ -66,16 +62,13 @@ dds_init(dds_domainid_t domain)
|
|||
|
||||
if (ut_handleserver_init() != UT_HANDLE_OK)
|
||||
{
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR, "Failed to initialize internal handle server");
|
||||
DDS_ERROR("Failed to initialize internal handle server\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR);
|
||||
goto fail_handleserver;
|
||||
}
|
||||
|
||||
gv.tstart = now ();
|
||||
gv.exception = false;
|
||||
gv.static_logbuf_lock_inited = 0;
|
||||
logbuf_init (&gv.static_logbuf);
|
||||
os_mutexInit (&gv.static_logbuf_lock);
|
||||
gv.static_logbuf_lock_inited = 1;
|
||||
os_mutexInit (&dds_global.m_mutex);
|
||||
thread_states_init_static();
|
||||
|
||||
|
@ -83,7 +76,8 @@ dds_init(dds_domainid_t domain)
|
|||
dds_cfgst = config_init (uri);
|
||||
if (dds_cfgst == NULL)
|
||||
{
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR, "Failed to parse configuration XML file %s", uri);
|
||||
DDS_ERROR("Failed to parse configuration XML file %s\n", uri);
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR);
|
||||
goto fail_config;
|
||||
}
|
||||
|
||||
|
@ -92,7 +86,8 @@ dds_init(dds_domainid_t domain)
|
|||
{
|
||||
if (domain < 0 || domain > 230)
|
||||
{
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR, "requested domain id %d is out of range", domain);
|
||||
DDS_ERROR("requested domain id %d is out of range\n", domain);
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR);
|
||||
goto fail_config;
|
||||
}
|
||||
else if (config.domainId.isdefault)
|
||||
|
@ -101,7 +96,8 @@ dds_init(dds_domainid_t domain)
|
|||
}
|
||||
else if (domain != config.domainId.value)
|
||||
{
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR, "requested domain id %d is inconsistent with configured value %d", domain, config.domainId.value);
|
||||
DDS_ERROR("requested domain id %d is inconsistent with configured value %d\n", domain, config.domainId.value);
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR);
|
||||
goto fail_config;
|
||||
}
|
||||
}
|
||||
|
@ -114,7 +110,8 @@ dds_init(dds_domainid_t domain)
|
|||
|
||||
if (rtps_config_prep(dds_cfgst) != 0)
|
||||
{
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR, "Failed to configure RTPS.");
|
||||
DDS_ERROR("Failed to configure RTPS\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR);
|
||||
goto fail_rtps_config;
|
||||
}
|
||||
|
||||
|
@ -128,20 +125,23 @@ dds_init(dds_domainid_t domain)
|
|||
gv.servicelease = nn_servicelease_new(0, 0);
|
||||
if (gv.servicelease == NULL)
|
||||
{
|
||||
ret = DDS_ERRNO(DDS_RETCODE_OUT_OF_RESOURCES, "Failed to create a servicelease.");
|
||||
DDS_ERROR("Failed to create a servicelease\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_OUT_OF_RESOURCES);
|
||||
goto fail_servicelease_new;
|
||||
}
|
||||
}
|
||||
|
||||
if (rtps_init() < 0)
|
||||
{
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR, "Failed to initialize RTPS.");
|
||||
DDS_ERROR("Failed to initialize RTPS\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR);
|
||||
goto fail_rtps_init;
|
||||
}
|
||||
|
||||
if (gv.servicelease && nn_servicelease_start_renewing(gv.servicelease) < 0)
|
||||
{
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR, "Failed to start the servicelease.");
|
||||
DDS_ERROR("Failed to start the servicelease\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR);
|
||||
goto fail_servicelease_start;
|
||||
}
|
||||
|
||||
|
@ -174,7 +174,6 @@ dds_init(dds_domainid_t domain)
|
|||
|
||||
skip:
|
||||
os_mutexUnlock(init_mutex);
|
||||
DDS_REPORT_FLUSH(false);
|
||||
return DDS_RETCODE_OK;
|
||||
|
||||
fail_servicelease_start:
|
||||
|
@ -195,14 +194,11 @@ fail_rtps_config:
|
|||
config_fini (dds_cfgst);
|
||||
dds_cfgst = NULL;
|
||||
fail_config:
|
||||
gv.static_logbuf_lock_inited = 0;
|
||||
os_mutexDestroy (&gv.static_logbuf_lock);
|
||||
os_mutexDestroy (&dds_global.m_mutex);
|
||||
ut_handleserver_fini();
|
||||
fail_handleserver:
|
||||
dds_global.m_init_count--;
|
||||
os_mutexUnlock(init_mutex);
|
||||
DDS_REPORT_FLUSH(true);
|
||||
os_osExit();
|
||||
return ret;
|
||||
}
|
||||
|
@ -229,7 +225,6 @@ extern void dds_fini (void)
|
|||
|
||||
config_fini (dds_cfgst);
|
||||
dds_cfgst = NULL;
|
||||
os_mutexDestroy (&gv.static_logbuf_lock);
|
||||
os_mutexDestroy (&dds_global.m_mutex);
|
||||
ut_handleserver_fini();
|
||||
dds_global.m_default_domain = DDS_DOMAIN_DEFAULT;
|
||||
|
@ -298,9 +293,9 @@ dds__check_domain(
|
|||
/* Specific domain has to be the same as the configured domain. */
|
||||
if (domain != dds_global.m_default_domain)
|
||||
{
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR,
|
||||
"Inconsistent domain configuration detected: domain on configuration: %d, domain %d",
|
||||
dds_global.m_default_domain, domain);
|
||||
DDS_ERROR("Inconsistent domain configuration detected: domain on "
|
||||
"configuration: %d, domain %d\n", dds_global.m_default_domain, domain);
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR);
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
#include "ddsi/ddsi_serdata.h"
|
||||
#include "ddsi/q_entity.h"
|
||||
#include "ddsi/q_thread.h"
|
||||
#include "dds__report.h"
|
||||
|
||||
|
||||
_Pre_satisfies_((writer & DDS_ENTITY_KIND_MASK) == DDS_KIND_WRITER)
|
||||
|
@ -30,11 +29,7 @@ dds_writedispose(
|
|||
_In_ dds_entity_t writer,
|
||||
_In_ const void *data)
|
||||
{
|
||||
dds_return_t ret;
|
||||
DDS_REPORT_STACK();
|
||||
ret = dds_writedispose_ts(writer, data, dds_time());
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK );
|
||||
return ret;
|
||||
return dds_writedispose_ts(writer, data, dds_time());
|
||||
}
|
||||
|
||||
_Pre_satisfies_((writer & DDS_ENTITY_KIND_MASK) == DDS_KIND_WRITER)
|
||||
|
@ -43,11 +38,7 @@ dds_dispose(
|
|||
_In_ dds_entity_t writer,
|
||||
_In_ const void *data)
|
||||
{
|
||||
dds_return_t ret;
|
||||
DDS_REPORT_STACK();
|
||||
ret = dds_dispose_ts(writer, data, dds_time());
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK );
|
||||
return ret;
|
||||
return dds_dispose_ts(writer, data, dds_time());
|
||||
}
|
||||
|
||||
_Pre_satisfies_((writer & DDS_ENTITY_KIND_MASK) == DDS_KIND_WRITER)
|
||||
|
@ -56,11 +47,7 @@ dds_dispose_ih(
|
|||
_In_ dds_entity_t writer,
|
||||
_In_ dds_instance_handle_t handle)
|
||||
{
|
||||
dds_return_t ret;
|
||||
DDS_REPORT_STACK();
|
||||
ret = dds_dispose_ih_ts(writer, handle, dds_time());
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK );
|
||||
return ret;
|
||||
return dds_dispose_ih_ts(writer, handle, dds_time());
|
||||
}
|
||||
|
||||
static struct tkmap_instance*
|
||||
|
@ -133,9 +120,8 @@ static const dds_topic * dds_instance_info_by_hdl (dds_entity_t e)
|
|||
if (rc == DDS_RETCODE_OK) {
|
||||
topic = dds_instance_info(w_or_r);
|
||||
dds_entity_unlock(w_or_r);
|
||||
}
|
||||
else {
|
||||
DDS_ERROR(rc, "Error occurred on locking entity");
|
||||
} else {
|
||||
DDS_ERROR("Error occurred on locking entity");
|
||||
}
|
||||
return topic;
|
||||
}
|
||||
|
@ -152,19 +138,20 @@ dds_register_instance(
|
|||
dds_return_t ret;
|
||||
dds__retcode_t rc;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if(data == NULL){
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Argument data is NULL");
|
||||
DDS_ERROR("Argument data is NULL\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
goto err;
|
||||
}
|
||||
if(handle == NULL){
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Argument handle is NULL");
|
||||
DDS_ERROR("Argument handle is NULL\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
goto err;
|
||||
}
|
||||
rc = dds_entity_lock(writer, DDS_KIND_WRITER, &wr);
|
||||
if (rc != DDS_RETCODE_OK) {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking writer");
|
||||
DDS_ERROR("Error occurred on locking writer\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
goto err;
|
||||
}
|
||||
inst = dds_instance_find (((dds_writer*) wr)->m_topic, data, true);
|
||||
|
@ -172,11 +159,11 @@ dds_register_instance(
|
|||
*handle = inst->m_iid;
|
||||
ret = DDS_RETCODE_OK;
|
||||
} else{
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR, "Unable to create instance");
|
||||
DDS_ERROR("Unable to create instance\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR);
|
||||
}
|
||||
dds_entity_unlock(wr);
|
||||
err:
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -186,11 +173,7 @@ dds_unregister_instance(
|
|||
_In_ dds_entity_t writer,
|
||||
_In_opt_ const void *data)
|
||||
{
|
||||
dds_return_t ret;
|
||||
DDS_REPORT_STACK();
|
||||
ret = dds_unregister_instance_ts (writer, data, dds_time());
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK );
|
||||
return ret;
|
||||
return dds_unregister_instance_ts (writer, data, dds_time());
|
||||
}
|
||||
|
||||
_Pre_satisfies_((writer & DDS_ENTITY_KIND_MASK) == DDS_KIND_WRITER)
|
||||
|
@ -199,11 +182,7 @@ dds_unregister_instance_ih(
|
|||
_In_ dds_entity_t writer,
|
||||
_In_opt_ dds_instance_handle_t handle)
|
||||
{
|
||||
dds_return_t ret;
|
||||
DDS_REPORT_STACK();
|
||||
ret = dds_unregister_instance_ih_ts(writer, handle, dds_time());
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK );
|
||||
return ret;
|
||||
return dds_unregister_instance_ih_ts(writer, handle, dds_time());
|
||||
}
|
||||
|
||||
_Pre_satisfies_((writer & DDS_ENTITY_KIND_MASK) == DDS_KIND_WRITER)
|
||||
|
@ -220,19 +199,20 @@ dds_unregister_instance_ts(
|
|||
void * sample = (void*) data;
|
||||
dds_entity *wr;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (data == NULL){
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Argument data is NULL");
|
||||
DDS_ERROR("Argument data is NULL\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
goto err;
|
||||
}
|
||||
if(timestamp < 0){
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Argument timestamp has negative value");
|
||||
DDS_ERROR("Argument timestamp has negative value\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
goto err;
|
||||
}
|
||||
rc = dds_entity_lock(writer, DDS_KIND_WRITER, &wr);
|
||||
if (rc != DDS_RETCODE_OK) {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking writer");
|
||||
DDS_ERROR("Error occurred on locking writer\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
goto err;
|
||||
}
|
||||
|
||||
|
@ -246,7 +226,6 @@ dds_unregister_instance_ts(
|
|||
ret = dds_write_impl ((dds_writer*)wr, sample, timestamp, action);
|
||||
dds_entity_unlock(wr);
|
||||
err:
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -266,11 +245,10 @@ dds_unregister_instance_ih_ts(
|
|||
const dds_topic *topic;
|
||||
void *sample;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
rc = dds_entity_lock(writer, DDS_KIND_WRITER, &wr);
|
||||
if (rc != DDS_RETCODE_OK) {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking writer");
|
||||
DDS_ERROR("Error occurred on locking writer\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
goto err;
|
||||
}
|
||||
|
||||
|
@ -288,13 +266,13 @@ dds_unregister_instance_ih_ts(
|
|||
if (dds_tkmap_get_key (map, topic->m_stopic, handle, sample)) {
|
||||
ret = dds_write_impl ((dds_writer*)wr, sample, timestamp, action);
|
||||
} else{
|
||||
ret = DDS_ERRNO(DDS_RETCODE_PRECONDITION_NOT_MET, "No instance related with the provided handle is found");
|
||||
DDS_ERROR("No instance related with the provided handle is found\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_PRECONDITION_NOT_MET);
|
||||
}
|
||||
dds_sample_free (sample, topic->m_descriptor, DDS_FREE_ALL);
|
||||
|
||||
dds_entity_unlock(wr);
|
||||
err:
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -309,8 +287,6 @@ dds_writedispose_ts(
|
|||
dds__retcode_t rc;
|
||||
dds_writer *wr;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
rc = dds_writer_lock(writer, &wr);
|
||||
if (rc == DDS_RETCODE_OK) {
|
||||
ret = dds_write_impl (wr, data, timestamp, DDS_WR_ACTION_WRITE_DISPOSE);
|
||||
|
@ -319,9 +295,10 @@ dds_writedispose_ts(
|
|||
}
|
||||
dds_writer_unlock(wr);
|
||||
} else {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking writer");
|
||||
DDS_ERROR("Error occurred on locking writer\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
}
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -352,16 +329,15 @@ dds_dispose_ts(
|
|||
dds__retcode_t rc;
|
||||
dds_writer *wr;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
rc = dds_writer_lock(writer, &wr);
|
||||
if (rc == DDS_RETCODE_OK) {
|
||||
ret = dds_dispose_impl(wr, data, DDS_HANDLE_NIL, timestamp);
|
||||
dds_writer_unlock(wr);
|
||||
} else {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking writer");
|
||||
DDS_ERROR("Error occurred on locking writer\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
}
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -376,8 +352,6 @@ dds_dispose_ih_ts(
|
|||
dds__retcode_t rc;
|
||||
dds_writer *wr;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
rc = dds_writer_lock(writer, &wr);
|
||||
if (rc == DDS_RETCODE_OK) {
|
||||
struct tkmap *map = gv.m_tkmap;
|
||||
|
@ -386,14 +360,16 @@ dds_dispose_ih_ts(
|
|||
if (dds_tkmap_get_key (map, topic->m_stopic, handle, sample)) {
|
||||
ret = dds_dispose_impl(wr, sample, handle, timestamp);
|
||||
} else {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_PRECONDITION_NOT_MET, "No instance related with the provided handle is found");
|
||||
DDS_ERROR("No instance related with the provided handle is found\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_PRECONDITION_NOT_MET);
|
||||
}
|
||||
dds_free(sample);
|
||||
dds_writer_unlock(wr);
|
||||
} else {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking writer");
|
||||
DDS_ERROR("Error occurred on locking writer\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
}
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -407,12 +383,9 @@ dds_instance_lookup(
|
|||
const dds_topic * topic;
|
||||
struct tkmap * map = gv.m_tkmap;
|
||||
struct ddsi_serdata *sd;
|
||||
dds_return_t ret;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if(data == NULL){
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Argument data is NULL");
|
||||
DDS_ERROR("Argument data is NULL\n");
|
||||
goto err;
|
||||
}
|
||||
|
||||
|
@ -421,12 +394,10 @@ dds_instance_lookup(
|
|||
sd = ddsi_serdata_from_sample (topic->m_stopic, SDK_KEY, data);
|
||||
ih = dds_tkmap_lookup (map, sd);
|
||||
ddsi_serdata_unref (sd);
|
||||
ret = DDS_RETCODE_OK;
|
||||
} else {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Acquired topic is NULL");
|
||||
DDS_ERROR("Acquired topic is NULL\n");
|
||||
}
|
||||
err:
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
return ih;
|
||||
}
|
||||
|
||||
|
@ -441,16 +412,16 @@ dds_instance_get_key(
|
|||
const dds_topic * topic;
|
||||
struct tkmap * map = gv.m_tkmap;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if(data == NULL){
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Argument data is NULL");
|
||||
DDS_ERROR("Argument data is NULL\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
goto err;
|
||||
}
|
||||
|
||||
topic = dds_instance_info_by_hdl (entity);
|
||||
if(topic == NULL){
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Could not find topic related to the given entity");
|
||||
DDS_ERROR("Could not find topic related to the given entity\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
goto err;
|
||||
}
|
||||
memset (data, 0, topic->m_descriptor->m_size);
|
||||
|
@ -458,10 +429,10 @@ dds_instance_get_key(
|
|||
if (dds_tkmap_get_key (map, topic->m_stopic, inst, data)) {
|
||||
ret = DDS_RETCODE_OK;
|
||||
} else{
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "No instance related with the provided entity is found");
|
||||
DDS_ERROR("No instance related with the provided entity is found\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
err:
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
#include <assert.h>
|
||||
#include "ddsc/dds.h"
|
||||
#include "dds__listener.h"
|
||||
#include "dds__report.h"
|
||||
|
||||
|
||||
|
||||
|
@ -66,7 +65,7 @@ dds_reset_listener(_Out_ dds_listener_t * __restrict listener)
|
|||
l->on_sample_rejected = DDS_LUNSET;
|
||||
l->on_subscription_matched = DDS_LUNSET;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument listener is NULL");
|
||||
DDS_ERROR("Argument listener is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -83,11 +82,11 @@ dds_copy_listener(_Out_ dds_listener_t * __restrict dst, _In_ const dds_listener
|
|||
c_listener_t *dstl = dst;
|
||||
|
||||
if(!src){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument source(src) is NULL");
|
||||
DDS_ERROR("Argument source(src) is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if(!dst){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument destination(dst) is NULL");
|
||||
DDS_ERROR("Argument destination(dst) is NULL\n");
|
||||
return ;
|
||||
}
|
||||
dstl->on_data_available = srcl->on_data_available;
|
||||
|
@ -119,11 +118,11 @@ dds_merge_listener (_Inout_ dds_listener_t * __restrict dst, _In_ const dds_list
|
|||
c_listener_t *dstl = dst;
|
||||
|
||||
if(!src){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument source(src) is NULL");
|
||||
DDS_ERROR("Argument source(src) is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if(!dst){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument destination(dst) is NULL");
|
||||
DDS_ERROR("Argument destination(dst) is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if (dstl->on_data_available == DDS_LUNSET) {
|
||||
|
@ -183,7 +182,7 @@ dds_lset_data_available (_Inout_ dds_listener_t * __restrict listener, _In_opt_
|
|||
if (listener) {
|
||||
((c_listener_t*)listener)->on_data_available = callback;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument listener is NULL");
|
||||
DDS_ERROR("Argument listener is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -193,7 +192,7 @@ dds_lset_data_on_readers (_Inout_ dds_listener_t * __restrict listener, _In_opt_
|
|||
if (listener) {
|
||||
((c_listener_t*)listener)->on_data_on_readers = callback;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument listener is NULL");
|
||||
DDS_ERROR("Argument listener is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -203,7 +202,7 @@ dds_lset_inconsistent_topic (_Inout_ dds_listener_t * __restrict listener, _In_o
|
|||
if (listener) {
|
||||
((c_listener_t*)listener)->on_inconsistent_topic = callback;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument listener is NULL");
|
||||
DDS_ERROR("Argument listener is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -213,7 +212,7 @@ dds_lset_liveliness_changed (_Inout_ dds_listener_t * __restrict listener, _In_o
|
|||
if (listener) {
|
||||
((c_listener_t*)listener)->on_liveliness_changed = callback;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument listener is NULL");
|
||||
DDS_ERROR("Argument listener is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -223,7 +222,7 @@ dds_lset_liveliness_lost (_Inout_ dds_listener_t * __restrict listener, _In_opt_
|
|||
if (listener) {
|
||||
((c_listener_t*)listener)->on_liveliness_lost = callback;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument listener is NULL");
|
||||
DDS_ERROR("Argument listener is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -233,7 +232,7 @@ dds_lset_offered_deadline_missed (_Inout_ dds_listener_t * __restrict listener,
|
|||
if (listener) {
|
||||
((c_listener_t*)listener)->on_offered_deadline_missed = callback;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument listener is NULL");
|
||||
DDS_ERROR("Argument listener is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -243,7 +242,7 @@ dds_lset_offered_incompatible_qos (_Inout_ dds_listener_t * __restrict listener,
|
|||
if (listener) {
|
||||
((c_listener_t*)listener)->on_offered_incompatible_qos = callback;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument listener is NULL");
|
||||
DDS_ERROR("Argument listener is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -253,7 +252,7 @@ dds_lset_publication_matched (_Inout_ dds_listener_t * __restrict listener, _In_
|
|||
if (listener) {
|
||||
((c_listener_t*)listener)->on_publication_matched = callback;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument listener is NULL");
|
||||
DDS_ERROR("Argument listener is NULL");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -263,7 +262,7 @@ dds_lset_requested_deadline_missed (_Inout_ dds_listener_t * __restrict listener
|
|||
if (listener) {
|
||||
((c_listener_t*)listener)->on_requested_deadline_missed = callback;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument listener is NULL");
|
||||
DDS_ERROR("Argument listener is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -273,7 +272,7 @@ dds_lset_requested_incompatible_qos (_Inout_ dds_listener_t * __restrict listene
|
|||
if (listener) {
|
||||
((c_listener_t*)listener)->on_requested_incompatible_qos = callback;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument listener is NULL");
|
||||
DDS_ERROR("Argument listener is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -283,7 +282,7 @@ dds_lset_sample_lost (_Inout_ dds_listener_t * __restrict listener, _In_opt_ dds
|
|||
if (listener) {
|
||||
((c_listener_t*)listener)->on_sample_lost = callback;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument listener is NULL");
|
||||
DDS_ERROR("Argument listener is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -293,7 +292,7 @@ dds_lset_sample_rejected (_Inout_ dds_listener_t * __restrict listener, _In_opt_
|
|||
if (listener) {
|
||||
((c_listener_t*)listener)->on_sample_rejected = callback;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument listener is NULL");
|
||||
DDS_ERROR("Argument listener is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -303,7 +302,7 @@ dds_lset_subscription_matched (_Inout_ dds_listener_t * __restrict listener, _In
|
|||
if (listener) {
|
||||
((c_listener_t*)listener)->on_subscription_matched = callback;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument listener is NULL");
|
||||
DDS_ERROR("Argument listener is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -315,11 +314,11 @@ void
|
|||
dds_lget_data_available (_In_ const dds_listener_t * __restrict listener, _Outptr_result_maybenull_ dds_on_data_available_fn *callback)
|
||||
{
|
||||
if(!callback){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument callback is NULL");
|
||||
DDS_ERROR("Argument callback is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if (!listener) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument listener is NULL");
|
||||
DDS_ERROR("Argument listener is NULL\n");
|
||||
return ;
|
||||
}
|
||||
*callback = ((c_listener_t*)listener)->on_data_available;
|
||||
|
@ -329,11 +328,11 @@ void
|
|||
dds_lget_data_on_readers (_In_ const dds_listener_t * __restrict listener, _Outptr_result_maybenull_ dds_on_data_on_readers_fn *callback)
|
||||
{
|
||||
if(!callback){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument callback is NULL");
|
||||
DDS_ERROR("Argument callback is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if (!listener) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument listener is NULL");
|
||||
DDS_ERROR("Argument listener is NULL\n");
|
||||
return ;
|
||||
}
|
||||
*callback = ((c_listener_t*)listener)->on_data_on_readers;
|
||||
|
@ -342,11 +341,11 @@ dds_lget_data_on_readers (_In_ const dds_listener_t * __restrict listener, _Outp
|
|||
void dds_lget_inconsistent_topic (_In_ const dds_listener_t * __restrict listener, _Outptr_result_maybenull_ dds_on_inconsistent_topic_fn *callback)
|
||||
{
|
||||
if(!callback){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument callback is NULL");
|
||||
DDS_ERROR("Argument callback is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if (!listener) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument listener is NULL");
|
||||
DDS_ERROR("Argument listener is NULL\n");
|
||||
return ;
|
||||
}
|
||||
*callback = ((c_listener_t*)listener)->on_inconsistent_topic;
|
||||
|
@ -356,11 +355,11 @@ void
|
|||
dds_lget_liveliness_changed (_In_ const dds_listener_t * __restrict listener, _Outptr_result_maybenull_ dds_on_liveliness_changed_fn *callback)
|
||||
{
|
||||
if(!callback){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument callback is NULL");
|
||||
DDS_ERROR("Argument callback is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if (!listener) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument listener is NULL");
|
||||
DDS_ERROR("Argument listener is NULL\n");
|
||||
return ;
|
||||
}
|
||||
*callback = ((c_listener_t*)listener)->on_liveliness_changed;
|
||||
|
@ -370,11 +369,11 @@ void
|
|||
dds_lget_liveliness_lost (_In_ const dds_listener_t * __restrict listener, _Outptr_result_maybenull_ dds_on_liveliness_lost_fn *callback)
|
||||
{
|
||||
if(!callback){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument callback is NULL");
|
||||
DDS_ERROR("Argument callback is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if (!listener) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument listener is NULL");
|
||||
DDS_ERROR("Argument listener is NULL\n");
|
||||
return ;
|
||||
}
|
||||
*callback = ((c_listener_t*)listener)->on_liveliness_lost;
|
||||
|
@ -384,11 +383,11 @@ void
|
|||
dds_lget_offered_deadline_missed (_In_ const dds_listener_t * __restrict listener, _Outptr_result_maybenull_ dds_on_offered_deadline_missed_fn *callback)
|
||||
{
|
||||
if(!callback){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument callback is NULL");
|
||||
DDS_ERROR("Argument callback is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if (!listener) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument listener is NULL");
|
||||
DDS_ERROR("Argument listener is NULL\n");
|
||||
return ;
|
||||
}
|
||||
*callback = ((c_listener_t*)listener)->on_offered_deadline_missed;
|
||||
|
@ -398,11 +397,11 @@ void
|
|||
dds_lget_offered_incompatible_qos (_In_ const dds_listener_t * __restrict listener, _Outptr_result_maybenull_ dds_on_offered_incompatible_qos_fn *callback)
|
||||
{
|
||||
if(!callback){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument callback is NULL");
|
||||
DDS_ERROR("Argument callback is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if (!listener) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument listener is NULL");
|
||||
DDS_ERROR("Argument listener is NULL\n");
|
||||
return ;
|
||||
}
|
||||
*callback = ((c_listener_t*)listener)->on_offered_incompatible_qos;
|
||||
|
@ -412,11 +411,11 @@ void
|
|||
dds_lget_publication_matched (_In_ const dds_listener_t * __restrict listener, _Outptr_result_maybenull_ dds_on_publication_matched_fn *callback)
|
||||
{
|
||||
if(!callback){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument callback is NULL");
|
||||
DDS_ERROR("Argument callback is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if (!listener) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument listener is NULL");
|
||||
DDS_ERROR("Argument listener is NULL\n");
|
||||
return ;
|
||||
}
|
||||
*callback = ((c_listener_t*)listener)->on_publication_matched;
|
||||
|
@ -426,11 +425,11 @@ void
|
|||
dds_lget_requested_deadline_missed (_In_ const dds_listener_t * __restrict listener, _Outptr_result_maybenull_ dds_on_requested_deadline_missed_fn *callback)
|
||||
{
|
||||
if(!callback) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument callback is NULL");
|
||||
DDS_ERROR("Argument callback is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if (!listener) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument listener is NULL");
|
||||
DDS_ERROR("Argument listener is NULL\n");
|
||||
return ;
|
||||
}
|
||||
*callback = ((c_listener_t*)listener)->on_requested_deadline_missed;
|
||||
|
@ -440,11 +439,11 @@ void
|
|||
dds_lget_requested_incompatible_qos (_In_ const dds_listener_t * __restrict listener, _Outptr_result_maybenull_ dds_on_requested_incompatible_qos_fn *callback)
|
||||
{
|
||||
if(!callback) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument callback is NULL");
|
||||
DDS_ERROR("Argument callback is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if (!listener) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument listener is NULL");
|
||||
DDS_ERROR("Argument listener is NULL\n");
|
||||
return ;
|
||||
}
|
||||
*callback = ((c_listener_t*)listener)->on_requested_incompatible_qos;
|
||||
|
@ -454,11 +453,11 @@ void
|
|||
dds_lget_sample_lost (_In_ const dds_listener_t *__restrict listener, _Outptr_result_maybenull_ dds_on_sample_lost_fn *callback)
|
||||
{
|
||||
if(!callback) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument callback is NULL");
|
||||
DDS_ERROR("Argument callback is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if (!listener) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument listener is NULL");
|
||||
DDS_ERROR("Argument listener is NULL\n");
|
||||
return ;
|
||||
}
|
||||
*callback = ((c_listener_t*)listener)->on_sample_lost;
|
||||
|
@ -468,11 +467,11 @@ void
|
|||
dds_lget_sample_rejected (_In_ const dds_listener_t *__restrict listener, _Outptr_result_maybenull_ dds_on_sample_rejected_fn *callback)
|
||||
{
|
||||
if(!callback) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument callback is NULL");
|
||||
DDS_ERROR("Argument callback is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if (!listener) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument listener is NULL");
|
||||
DDS_ERROR("Argument listener is NULL\n");
|
||||
return ;
|
||||
}
|
||||
*callback = ((c_listener_t*)listener)->on_sample_rejected;
|
||||
|
@ -482,11 +481,11 @@ void
|
|||
dds_lget_subscription_matched (_In_ const dds_listener_t * __restrict listener, _Outptr_result_maybenull_ dds_on_subscription_matched_fn *callback)
|
||||
{
|
||||
if(!callback) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument callback is NULL");
|
||||
DDS_ERROR("Argument callback is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if (!listener) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument listener is NULL");
|
||||
DDS_ERROR("Argument listener is NULL\n");
|
||||
return ;
|
||||
}
|
||||
*callback = ((c_listener_t*)listener)->on_subscription_matched;
|
||||
|
|
|
@ -1,73 +0,0 @@
|
|||
/*
|
||||
* Copyright(c) 2006 to 2018 ADLINK Technology Limited and others
|
||||
*
|
||||
* 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
|
||||
*/
|
||||
#include <assert.h>
|
||||
#include <string.h>
|
||||
#include <stdarg.h>
|
||||
#include "ddsc/dds.h"
|
||||
#include "ddsi/q_log.h"
|
||||
|
||||
#define DDS_FMT_MAX 128
|
||||
|
||||
void dds_log_info (const char * fmt, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
va_start (args, fmt);
|
||||
nn_vlog (LC_INFO, fmt, args);
|
||||
va_end (args);
|
||||
}
|
||||
|
||||
void dds_log_warn (const char * fmt, ...)
|
||||
{
|
||||
va_list args;
|
||||
char fmt2 [DDS_FMT_MAX];
|
||||
|
||||
strcpy (fmt2, "<Warning> ");
|
||||
strncat (fmt2, fmt, DDS_FMT_MAX - 11);
|
||||
fmt2[DDS_FMT_MAX-1] = 0;
|
||||
fmt = fmt2;
|
||||
|
||||
va_start (args, fmt);
|
||||
nn_vlog (LC_WARNING, fmt, args);
|
||||
va_end (args);
|
||||
}
|
||||
|
||||
void dds_log_error (const char * fmt, ...)
|
||||
{
|
||||
va_list args;
|
||||
char fmt2 [DDS_FMT_MAX];
|
||||
|
||||
strcpy (fmt2, "<Error> ");
|
||||
strncat (fmt2, fmt, DDS_FMT_MAX - 9);
|
||||
fmt2[DDS_FMT_MAX-1] = 0;
|
||||
fmt = fmt2;
|
||||
|
||||
va_start (args, fmt);
|
||||
nn_vlog (LC_ERROR, fmt, args);
|
||||
va_end (args);
|
||||
}
|
||||
|
||||
void dds_log_fatal (const char * fmt, ...)
|
||||
{
|
||||
va_list args;
|
||||
char fmt2 [DDS_FMT_MAX];
|
||||
|
||||
strcpy (fmt2, "<Fatal> ");
|
||||
strncat (fmt2, fmt, DDS_FMT_MAX - 9);
|
||||
fmt2[DDS_FMT_MAX-1] = 0;
|
||||
fmt = fmt2;
|
||||
|
||||
va_start (args, fmt);
|
||||
nn_vlog (LC_FATAL, fmt, args);
|
||||
va_end (args);
|
||||
DDS_FAIL (fmt);
|
||||
}
|
|
@ -18,7 +18,6 @@
|
|||
#include "dds__domain.h"
|
||||
#include "dds__participant.h"
|
||||
#include "dds__err.h"
|
||||
#include "dds__report.h"
|
||||
|
||||
#define DDS_PARTICIPANT_STATUS_MASK 0u
|
||||
|
||||
|
@ -30,9 +29,14 @@ static dds_return_t
|
|||
dds_participant_status_validate(
|
||||
uint32_t mask)
|
||||
{
|
||||
return (mask & ~(DDS_PARTICIPANT_STATUS_MASK)) ?
|
||||
DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Argument mask is invalid") :
|
||||
DDS_RETCODE_OK;
|
||||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
|
||||
if (mask & ~(DDS_PARTICIPANT_STATUS_MASK)) {
|
||||
DDS_ERROR("Argument mask is invalid\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static dds_return_t
|
||||
|
@ -104,10 +108,12 @@ dds_participant_qos_validate(
|
|||
|
||||
/* Check consistency. */
|
||||
if ((qos->present & QP_USER_DATA) && !validate_octetseq(&qos->user_data)) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY, "User data QoS policy is inconsistent and caused an error");
|
||||
DDS_ERROR("User data QoS policy is inconsistent and caused an error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY);
|
||||
}
|
||||
if ((qos->present & QP_PRISMTECH_ENTITY_FACTORY) && !validate_entityfactory_qospolicy(&qos->entity_factory)) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY, "Prismtech entity factory QoS policy is inconsistent and caused an error");
|
||||
DDS_ERROR("Prismtech entity factory QoS policy is inconsistent and caused an error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
@ -124,7 +130,8 @@ dds_participant_qos_set(
|
|||
if (ret == DDS_RETCODE_OK) {
|
||||
if (enabled) {
|
||||
/* TODO: CHAM-95: DDSI does not support changing QoS policies. */
|
||||
ret = DDS_ERRNO(DDS_RETCODE_UNSUPPORTED, "Changing the participant QoS is not supported.");
|
||||
DDS_ERROR("Changing the participant QoS is not supported\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_UNSUPPORTED);
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
|
@ -153,9 +160,6 @@ dds_create_participant(
|
|||
goto fail_dds_init;
|
||||
}
|
||||
|
||||
/* Report stack is only useful after dds (and thus os) init. */
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
/* Check domain id */
|
||||
ret = dds__check_domain (domain);
|
||||
if (ret != DDS_RETCODE_OK) {
|
||||
|
@ -194,7 +198,8 @@ dds_create_participant(
|
|||
}
|
||||
nn_plist_fini (&plist);
|
||||
if (q_rc != 0) {
|
||||
e = DDS_ERRNO(DDS_RETCODE_ERROR, "Internal error");
|
||||
DDS_ERROR("Internal error");
|
||||
e = DDS_ERRNO(DDS_RETCODE_ERROR);
|
||||
goto fail_new_participant;
|
||||
}
|
||||
|
||||
|
@ -219,7 +224,6 @@ dds_create_participant(
|
|||
dds_pp_head = &pp->m_entity;
|
||||
os_mutexUnlock (&dds_global.m_mutex);
|
||||
|
||||
DDS_REPORT_FLUSH(false);
|
||||
return e;
|
||||
|
||||
fail_entity_init:
|
||||
|
@ -228,7 +232,6 @@ fail_new_participant:
|
|||
dds_delete_qos(new_qos);
|
||||
fail_qos_validation:
|
||||
fail_domain_check:
|
||||
DDS_REPORT_FLUSH(true);
|
||||
dds_fini();
|
||||
fail_dds_init:
|
||||
return e;
|
||||
|
@ -247,14 +250,14 @@ dds_lookup_participant(
|
|||
os_osInit();
|
||||
init_mutex = os_getSingletonMutex();
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if ((participants != NULL) && ((size <= 0) || (size >= INT32_MAX))) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Array is given, but with invalid size");
|
||||
DDS_ERROR("Array is given, but with invalid size\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
goto err;
|
||||
}
|
||||
if ((participants == NULL) && (size != 0)) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Size is given, but no array");
|
||||
DDS_ERROR("Size is given, but no array\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
goto err;
|
||||
}
|
||||
|
||||
|
@ -284,7 +287,6 @@ dds_lookup_participant(
|
|||
os_mutexUnlock (init_mutex);
|
||||
|
||||
err:
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
os_osExit();
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
#include "dds__qos.h"
|
||||
#include "dds__err.h"
|
||||
#include "ddsi/q_entity.h"
|
||||
#include "dds__report.h"
|
||||
#include "ddsc/ddsc_project.h"
|
||||
|
||||
#define DDS_PUBLISHER_STATUS_MASK 0u
|
||||
|
@ -28,7 +27,8 @@ dds_publisher_instance_hdl(
|
|||
(void)e;
|
||||
(void)i;
|
||||
/* TODO: Get/generate proper handle. */
|
||||
return DDS_ERRNO(DDS_RETCODE_UNSUPPORTED, "Getting publisher instance handle is not supported");
|
||||
DDS_ERROR("Getting publisher instance handle is not supported\n");
|
||||
return DDS_ERRNO(DDS_RETCODE_UNSUPPORTED);
|
||||
}
|
||||
|
||||
static dds_return_t
|
||||
|
@ -41,20 +41,25 @@ dds_publisher_qos_validate(
|
|||
|
||||
/* Check consistency. */
|
||||
if((qos->present & QP_GROUP_DATA) && !validate_octetseq(&qos->group_data)){
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY, "Group data policy is inconsistent and caused an error");
|
||||
DDS_ERROR("Group data policy is inconsistent and caused an error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY);
|
||||
}
|
||||
if((qos->present & QP_PRESENTATION) && (validate_presentation_qospolicy(&qos->presentation) != 0)){
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY, "Presentation policy is inconsistent and caused an error");
|
||||
DDS_ERROR("Presentation policy is inconsistent and caused an error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY);
|
||||
}
|
||||
if((qos->present & QP_PARTITION) && !validate_stringseq(&qos->partition)){
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY, "Partition policy is inconsistent and caused an error");
|
||||
DDS_ERROR("Partition policy is inconsistent and caused an error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY);
|
||||
}
|
||||
if((qos->present & QP_PRISMTECH_ENTITY_FACTORY) && !validate_entityfactory_qospolicy(&qos->entity_factory)){
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY, "Prismtech entity factory policy is inconsistent and caused an error");
|
||||
DDS_ERROR("Prismtech entity factory policy is inconsistent and caused an error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY);
|
||||
}
|
||||
if(ret == DDS_RETCODE_OK && enabled && (qos->present & QP_PRESENTATION)){
|
||||
/* TODO: Improve/check immutable check. */
|
||||
ret = DDS_ERRNO(DDS_RETCODE_IMMUTABLE_POLICY, "Presentation policy is immutable");
|
||||
DDS_ERROR("Presentation policy is immutable\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_IMMUTABLE_POLICY);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
@ -70,7 +75,8 @@ dds_publisher_qos_set(
|
|||
if (ret == DDS_RETCODE_OK) {
|
||||
if (enabled) {
|
||||
/* TODO: CHAM-95: DDSI does not support changing QoS policies. */
|
||||
ret = DDS_ERRNO(DDS_RETCODE_UNSUPPORTED, DDSC_PROJECT_NAME" does not support changing QoS policies yet");
|
||||
DDS_ERROR(DDSC_PROJECT_NAME" does not support changing QoS policies yet\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_UNSUPPORTED);
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
|
@ -78,9 +84,14 @@ dds_publisher_qos_set(
|
|||
|
||||
static dds_return_t dds_publisher_status_validate (uint32_t mask)
|
||||
{
|
||||
return (mask & ~(DDS_PUBLISHER_STATUS_MASK)) ?
|
||||
DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Invalid status mask") :
|
||||
DDS_RETCODE_OK;
|
||||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
|
||||
if (mask & ~(DDS_PUBLISHER_STATUS_MASK)) {
|
||||
DDS_ERROR("Invalid status mask\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
_Pre_satisfies_((participant & DDS_ENTITY_KIND_MASK) == DDS_KIND_PARTICIPANT)
|
||||
|
@ -97,11 +108,10 @@ dds_create_publisher(
|
|||
dds_return_t ret;
|
||||
dds__retcode_t rc;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
rc = dds_entity_lock(participant, DDS_KIND_PARTICIPANT, &par);
|
||||
if (rc != DDS_RETCODE_OK) {
|
||||
hdl = DDS_ERRNO(rc, "Error occurred on locking participant");
|
||||
DDS_ERROR("Error occurred on locking participant\n");
|
||||
hdl = DDS_ERRNO(rc);
|
||||
goto lock_err;
|
||||
}
|
||||
|
||||
|
@ -128,7 +138,6 @@ dds_create_publisher(
|
|||
qos_err:
|
||||
dds_entity_unlock(par);
|
||||
lock_err:
|
||||
DDS_REPORT_FLUSH(hdl <= 0);
|
||||
return hdl;
|
||||
}
|
||||
|
||||
|
@ -140,16 +149,15 @@ dds_suspend(
|
|||
{
|
||||
dds_return_t ret;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if(dds_entity_kind(publisher) != DDS_KIND_PUBLISHER) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Provided entity is not a publisher kind");
|
||||
DDS_ERROR("Provided entity is not a publisher kind\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
goto err;
|
||||
}
|
||||
/* TODO: CHAM-123 Currently unsupported. */
|
||||
ret = DDS_ERRNO(DDS_RETCODE_UNSUPPORTED, "Suspend publication operation does not being supported yet");
|
||||
DDS_ERROR("Suspend publication operation does not being supported yet\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_UNSUPPORTED);
|
||||
err:
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -161,16 +169,15 @@ dds_resume(
|
|||
{
|
||||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if(dds_entity_kind(publisher) != DDS_KIND_PUBLISHER) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER,"Provided entity is not a publisher kind");
|
||||
DDS_ERROR("Provided entity is not a publisher kind\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
goto err;
|
||||
}
|
||||
/* TODO: CHAM-123 Currently unsupported. */
|
||||
ret = DDS_ERRNO(DDS_RETCODE_UNSUPPORTED, "Suspend publication operation does not being supported yet");
|
||||
DDS_ERROR("Suspend publication operation does not being supported yet\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_UNSUPPORTED);
|
||||
err:
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -183,23 +190,25 @@ dds_wait_for_acks(
|
|||
_In_ dds_duration_t timeout)
|
||||
{
|
||||
dds_return_t ret;
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
/* TODO: CHAM-125 Currently unsupported. */
|
||||
OS_UNUSED_ARG(timeout);
|
||||
|
||||
switch(dds_entity_kind(publisher_or_writer)) {
|
||||
case DDS_KIND_WRITER:
|
||||
ret = DDS_ERRNO(DDS_RETCODE_UNSUPPORTED, "Wait for acknowledgments on a writer is not being supported yet");
|
||||
DDS_ERROR("Wait for acknowledgments on a writer is not being supported yet\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_UNSUPPORTED);
|
||||
break;
|
||||
case DDS_KIND_PUBLISHER:
|
||||
ret = DDS_ERRNO(DDS_RETCODE_UNSUPPORTED, "Wait for acknowledgments on a publisher is not being supported yet");
|
||||
DDS_ERROR("Wait for acknowledgments on a publisher is not being supported yet\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_UNSUPPORTED);
|
||||
break;
|
||||
default:
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Provided entity is not a publisher nor a writer");
|
||||
DDS_ERROR("Provided entity is not a publisher nor a writer\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
break;
|
||||
}
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -209,7 +218,8 @@ dds_publisher_begin_coherent(
|
|||
{
|
||||
/* TODO: CHAM-124 Currently unsupported. */
|
||||
(void)e;
|
||||
return DDS_ERRNO(DDS_RETCODE_UNSUPPORTED, "Using coherency to get a coherent data set is not being supported yet");
|
||||
DDS_ERROR("Using coherency to get a coherent data set is not being supported yet\n");
|
||||
return DDS_ERRNO(DDS_RETCODE_UNSUPPORTED);
|
||||
}
|
||||
|
||||
dds_return_t
|
||||
|
@ -218,6 +228,7 @@ dds_publisher_end_coherent(
|
|||
{
|
||||
/* TODO: CHAM-124 Currently unsupported. */
|
||||
(void)e;
|
||||
return DDS_ERRNO(DDS_RETCODE_UNSUPPORTED, "Using coherency to get a coherent data set is not being supported yet");
|
||||
DDS_ERROR("Using coherency to get a coherent data set is not being supported yet\n");
|
||||
return DDS_ERRNO(DDS_RETCODE_UNSUPPORTED);
|
||||
}
|
||||
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
#include "dds__qos.h"
|
||||
#include "dds__err.h"
|
||||
#include "ddsi/q_config.h"
|
||||
#include "dds__report.h"
|
||||
|
||||
/* TODO: dd_duration_t is converted to nn_ddsi_time_t declared in q_time.h
|
||||
This structure contain seconds and fractions.
|
||||
|
@ -135,25 +134,32 @@ dds_qos_validate_mutable_common (
|
|||
|
||||
/* TODO: Check whether immutable QoS are changed should actually incorporate change to current QoS */
|
||||
if (qos->present & QP_DEADLINE) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_IMMUTABLE_POLICY, "Deadline QoS policy caused immutable error");
|
||||
DDS_ERROR("Deadline QoS policy caused immutable error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_IMMUTABLE_POLICY);
|
||||
}
|
||||
if (qos->present & QP_OWNERSHIP) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_IMMUTABLE_POLICY, "Ownership QoS policy caused immutable error");
|
||||
DDS_ERROR("Ownership QoS policy caused immutable error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_IMMUTABLE_POLICY);
|
||||
}
|
||||
if (qos->present & QP_LIVELINESS) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_IMMUTABLE_POLICY, "Liveliness QoS policy caused immutable error");
|
||||
DDS_ERROR("Liveliness QoS policy caused immutable error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_IMMUTABLE_POLICY);
|
||||
}
|
||||
if (qos->present & QP_RELIABILITY) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_IMMUTABLE_POLICY, "Reliability QoS policy caused immutable error");
|
||||
DDS_ERROR("Reliability QoS policy caused immutable error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_IMMUTABLE_POLICY);
|
||||
}
|
||||
if (qos->present & QP_DESTINATION_ORDER) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_IMMUTABLE_POLICY, "Destination order QoS policy caused immutable error");
|
||||
DDS_ERROR("Destination order QoS policy caused immutable error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_IMMUTABLE_POLICY);
|
||||
}
|
||||
if (qos->present & QP_HISTORY) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_IMMUTABLE_POLICY, "History QoS policy caused immutable error");
|
||||
DDS_ERROR("History QoS policy caused immutable error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_IMMUTABLE_POLICY);
|
||||
}
|
||||
if (qos->present & QP_RESOURCE_LIMITS) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_IMMUTABLE_POLICY, "Resource limits QoS policy caused immutable error");
|
||||
DDS_ERROR("Resource limits QoS policy caused immutable error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_IMMUTABLE_POLICY);
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
@ -215,7 +221,7 @@ dds_reset_qos(
|
|||
nn_xqos_fini (qos);
|
||||
dds_qos_init_defaults (qos);
|
||||
} else {
|
||||
DDS_WARNING(DDS_RETCODE_BAD_PARAMETER, "Argument QoS is NULL");
|
||||
DDS_WARNING("Argument QoS is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -249,10 +255,12 @@ dds_copy_qos (
|
|||
_In_ const dds_qos_t * __restrict src)
|
||||
{
|
||||
if(!src){
|
||||
return DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Argument source(src) is NULL");
|
||||
DDS_ERROR("Argument source(src) is NULL\n");
|
||||
return DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
}
|
||||
if(!dst){
|
||||
return DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Argument destination(dst) is NULL");
|
||||
DDS_ERROR("Argument destination(dst) is NULL\n");
|
||||
return DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
}
|
||||
nn_xqos_copy (dst, src);
|
||||
return DDS_RETCODE_OK;
|
||||
|
@ -271,11 +279,11 @@ void dds_merge_qos (
|
|||
_In_ const dds_qos_t * __restrict src)
|
||||
{
|
||||
if(!src){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument source(src) is NULL");
|
||||
DDS_ERROR("Argument source(src) is NULL\n");
|
||||
return;
|
||||
}
|
||||
if(!dst){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument destination(dst) is NULL");
|
||||
DDS_ERROR("Argument destination(dst) is NULL\n");
|
||||
return;
|
||||
}
|
||||
/* Copy qos from source to destination unless already set */
|
||||
|
@ -309,7 +317,7 @@ void dds_qset_userdata(
|
|||
_In_ size_t sz)
|
||||
{
|
||||
if (!qos) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument qos is NULL");
|
||||
DDS_ERROR("Argument qos is NULL\n");
|
||||
return ;
|
||||
}
|
||||
dds_qos_data_copy_in(&qos->user_data, value, sz);
|
||||
|
@ -322,7 +330,7 @@ void dds_qset_topicdata(
|
|||
_In_ size_t sz)
|
||||
{
|
||||
if (!qos) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument qos is NULL");
|
||||
DDS_ERROR("Argument qos is NULL\n");
|
||||
return ;
|
||||
}
|
||||
dds_qos_data_copy_in (&qos->topic_data, value, sz);
|
||||
|
@ -335,7 +343,7 @@ void dds_qset_groupdata(
|
|||
_In_ size_t sz)
|
||||
{
|
||||
if (!qos) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument qos is NULL");
|
||||
DDS_ERROR("Argument qos is NULL\n");
|
||||
return ;
|
||||
}
|
||||
dds_qos_data_copy_in (&qos->group_data, value, sz);
|
||||
|
@ -352,7 +360,7 @@ void dds_qset_durability
|
|||
qos->durability.kind = (nn_durability_kind_t) kind;
|
||||
qos->present |= QP_DURABILITY;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument QoS is NULL");
|
||||
DDS_ERROR("Argument QoS is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -368,7 +376,7 @@ void dds_qset_history
|
|||
qos->history.depth = depth;
|
||||
qos->present |= QP_HISTORY;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument QoS is NULL");
|
||||
DDS_ERROR("Argument QoS is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -386,7 +394,7 @@ void dds_qset_resource_limits
|
|||
qos->resource_limits.max_samples_per_instance = max_samples_per_instance;
|
||||
qos->present |= QP_RESOURCE_LIMITS;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument QoS is NULL");
|
||||
DDS_ERROR("Argument QoS is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -404,7 +412,7 @@ void dds_qset_presentation
|
|||
qos->presentation.ordered_access = ordered_access;
|
||||
qos->present |= QP_PRESENTATION;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument QoS is NULL");
|
||||
DDS_ERROR("Argument QoS is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -418,7 +426,7 @@ void dds_qset_lifespan
|
|||
qos->lifespan.duration = nn_to_ddsi_duration (lifespan);
|
||||
qos->present |= QP_LIFESPAN;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument QoS is NULL");
|
||||
DDS_ERROR("Argument QoS is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -432,7 +440,7 @@ void dds_qset_deadline
|
|||
qos->deadline.deadline = nn_to_ddsi_duration (deadline);
|
||||
qos->present |= QP_DEADLINE;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument QoS is NULL");
|
||||
DDS_ERROR("Argument QoS is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -446,7 +454,7 @@ void dds_qset_latency_budget
|
|||
qos->latency_budget.duration = nn_to_ddsi_duration (duration);
|
||||
qos->present |= QP_LATENCY_BUDGET;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument QoS is NULL");
|
||||
DDS_ERROR("Argument QoS is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -460,7 +468,7 @@ void dds_qset_ownership
|
|||
qos->ownership.kind = (nn_ownership_kind_t) kind;
|
||||
qos->present |= QP_OWNERSHIP;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument QoS is NULL");
|
||||
DDS_ERROR("Argument QoS is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -474,7 +482,7 @@ void dds_qset_ownership_strength
|
|||
qos->ownership_strength.value = value;
|
||||
qos->present |= QP_OWNERSHIP_STRENGTH;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument QoS is NULL");
|
||||
DDS_ERROR("Argument QoS is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -490,7 +498,7 @@ void dds_qset_liveliness
|
|||
qos->liveliness.lease_duration = nn_to_ddsi_duration (lease_duration);
|
||||
qos->present |= QP_LIVELINESS;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument QoS is NULL");
|
||||
DDS_ERROR("Argument QoS is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -504,7 +512,7 @@ void dds_qset_time_based_filter
|
|||
qos->time_based_filter.minimum_separation = nn_to_ddsi_duration (minimum_separation);
|
||||
qos->present |= QP_TIME_BASED_FILTER;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument QoS is NULL");
|
||||
DDS_ERROR("Argument QoS is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -519,11 +527,11 @@ void dds_qset_partition
|
|||
size_t len;
|
||||
|
||||
if(!qos) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument qos may not be NULL");
|
||||
DDS_ERROR("Argument qos may not be NULL\n");
|
||||
return ;
|
||||
}
|
||||
if(n && !ps) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument ps is NULL, but n (%u) > 0", n);
|
||||
DDS_ERROR("Argument ps is NULL, but n (%u) > 0", n);
|
||||
return ;
|
||||
}
|
||||
|
||||
|
@ -560,7 +568,7 @@ void dds_qset_reliability
|
|||
qos->reliability.max_blocking_time = nn_to_ddsi_duration (max_blocking_time);
|
||||
qos->present |= QP_RELIABILITY;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument QoS is NULL");
|
||||
DDS_ERROR("Argument QoS is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -574,7 +582,7 @@ void dds_qset_transport_priority
|
|||
qos->transport_priority.value = value;
|
||||
qos->present |= QP_TRANSPORT_PRIORITY;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument QoS is NULL");
|
||||
DDS_ERROR("Argument QoS is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -589,7 +597,7 @@ void dds_qset_destination_order
|
|||
qos->destination_order.kind = (nn_destination_order_kind_t) kind;
|
||||
qos->present |= QP_DESTINATION_ORDER;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument QoS is NULL");
|
||||
DDS_ERROR("Argument QoS is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -603,7 +611,7 @@ void dds_qset_writer_data_lifecycle
|
|||
qos->writer_data_lifecycle.autodispose_unregistered_instances = autodispose;
|
||||
qos->present |= QP_PRISMTECH_WRITER_DATA_LIFECYCLE;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument QoS is NULL");
|
||||
DDS_ERROR("Argument QoS is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -621,7 +629,7 @@ void dds_qset_reader_data_lifecycle
|
|||
nn_to_ddsi_duration (autopurge_disposed_samples_delay);
|
||||
qos->present |= QP_PRISMTECH_READER_DATA_LIFECYCLE;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument QoS is NULL");
|
||||
DDS_ERROR("Argument QoS is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -645,7 +653,7 @@ void dds_qset_durability_service
|
|||
qos->durability_service.resource_limits.max_samples_per_instance = max_samples_per_instance;
|
||||
qos->present |= QP_DURABILITY_SERVICE;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument QoS is NULL");
|
||||
DDS_ERROR("Argument QoS is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -657,15 +665,15 @@ void dds_qget_userdata
|
|||
)
|
||||
{
|
||||
if(!qos) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument QoS is NULL");
|
||||
DDS_ERROR("Argument QoS is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if(!value) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument value is NULL");
|
||||
DDS_ERROR("Argument value is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if(!sz) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument sz is NULL");
|
||||
DDS_ERROR("Argument sz is NULL\n");
|
||||
return ;
|
||||
}
|
||||
dds_qos_data_copy_out (&qos->user_data, value, sz);
|
||||
|
@ -679,15 +687,15 @@ void dds_qget_topicdata
|
|||
)
|
||||
{
|
||||
if(!qos) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument QoS is NULL");
|
||||
DDS_ERROR("Argument QoS is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if(!value) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument value is NULL");
|
||||
DDS_ERROR("Argument value is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if(!sz) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument sz is NULL");
|
||||
DDS_ERROR("Argument sz is NULL\n");
|
||||
return ;
|
||||
}
|
||||
dds_qos_data_copy_out (&qos->topic_data, value, sz);
|
||||
|
@ -701,15 +709,15 @@ void dds_qget_groupdata
|
|||
)
|
||||
{
|
||||
if(!qos) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument QoS is NULL");
|
||||
DDS_ERROR("Argument QoS is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if(!value) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument value is NULL");
|
||||
DDS_ERROR("Argument value is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if(!sz) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument sz is NULL");
|
||||
DDS_ERROR("Argument sz is NULL\n");
|
||||
return ;
|
||||
}
|
||||
dds_qos_data_copy_out (&qos->group_data, value, sz);
|
||||
|
@ -722,11 +730,11 @@ void dds_qget_durability
|
|||
)
|
||||
{
|
||||
if(!qos) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument QoS is NULL");
|
||||
DDS_ERROR("Argument QoS is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if(!kind) {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument kind is NULL");
|
||||
DDS_ERROR("Argument kind is NULL\n");
|
||||
return ;
|
||||
}
|
||||
*kind = (dds_durability_kind_t) qos->durability.kind;
|
||||
|
@ -743,7 +751,7 @@ void dds_qget_history
|
|||
if (kind) *kind = (dds_history_kind_t) qos->history.kind;
|
||||
if (depth) *depth = qos->history.depth;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument qos is NULL");
|
||||
DDS_ERROR("Argument qos is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -762,7 +770,7 @@ void dds_qget_resource_limits
|
|||
*max_samples_per_instance = qos->resource_limits.max_samples_per_instance;
|
||||
}
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument qos is NULL");
|
||||
DDS_ERROR("Argument qos is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -779,7 +787,7 @@ void dds_qget_presentation
|
|||
if (coherent_access) *coherent_access = qos->presentation.coherent_access;
|
||||
if (ordered_access) *ordered_access = qos->presentation.ordered_access;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument qos is NULL");
|
||||
DDS_ERROR("Argument qos is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -790,11 +798,11 @@ void dds_qget_lifespan
|
|||
)
|
||||
{
|
||||
if(!qos){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument qos is NULL");
|
||||
DDS_ERROR("Argument qos is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if(!lifespan){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument lifespan is NULL");
|
||||
DDS_ERROR("Argument lifespan is NULL\n");
|
||||
return ;
|
||||
}
|
||||
*lifespan = nn_from_ddsi_duration (qos->lifespan.duration);
|
||||
|
@ -807,11 +815,11 @@ void dds_qget_deadline
|
|||
)
|
||||
{
|
||||
if(!qos){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument qos is NULL");
|
||||
DDS_ERROR("Argument qos is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if(!deadline){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument deadline is NULL");
|
||||
DDS_ERROR("Argument deadline is NULL\n");
|
||||
return ;
|
||||
}
|
||||
*deadline = nn_from_ddsi_duration (qos->deadline.deadline);
|
||||
|
@ -824,11 +832,11 @@ void dds_qget_latency_budget
|
|||
)
|
||||
{
|
||||
if(!qos){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument qos is NULL");
|
||||
DDS_ERROR("Argument qos is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if(!duration){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument duration is NULL");
|
||||
DDS_ERROR("Argument duration is NULL\n");
|
||||
return ;
|
||||
}
|
||||
*duration = nn_from_ddsi_duration (qos->latency_budget.duration);
|
||||
|
@ -841,11 +849,11 @@ void dds_qget_ownership
|
|||
)
|
||||
{
|
||||
if(!qos){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument qos is NULL");
|
||||
DDS_ERROR("Argument qos is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if(!kind){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument kind is NULL");
|
||||
DDS_ERROR("Argument kind is NULL\n");
|
||||
return ;
|
||||
}
|
||||
*kind = (dds_ownership_kind_t) qos->ownership.kind;
|
||||
|
@ -858,11 +866,11 @@ void dds_qget_ownership_strength
|
|||
)
|
||||
{
|
||||
if(!qos){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument qos is NULL");
|
||||
DDS_ERROR("Argument qos is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if(!value){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument value is NULL");
|
||||
DDS_ERROR("Argument value is NULL\n");
|
||||
return ;
|
||||
}
|
||||
*value = qos->ownership_strength.value;
|
||||
|
@ -879,7 +887,7 @@ void dds_qget_liveliness
|
|||
if (kind) *kind = (dds_liveliness_kind_t) qos->liveliness.kind;
|
||||
if (lease_duration) *lease_duration = nn_from_ddsi_duration (qos->liveliness.lease_duration);
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument qos is NULL");
|
||||
DDS_ERROR("Argument qos is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -890,11 +898,11 @@ void dds_qget_time_based_filter
|
|||
)
|
||||
{
|
||||
if(!qos){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument qos is NULL");
|
||||
DDS_ERROR("Argument qos is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if(!minimum_separation){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument minimum_separation is NULL");
|
||||
DDS_ERROR("Argument minimum_separation is NULL\n");
|
||||
return ;
|
||||
}
|
||||
*minimum_separation = nn_from_ddsi_duration (qos->time_based_filter.minimum_separation);
|
||||
|
@ -911,11 +919,11 @@ void dds_qget_partition
|
|||
uint32_t i;
|
||||
|
||||
if(!qos){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument qos is NULL");
|
||||
DDS_ERROR("Argument qos is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if(!n){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument n is NULL");
|
||||
DDS_ERROR("Argument n is NULL\n");
|
||||
return ;
|
||||
}
|
||||
|
||||
|
@ -945,7 +953,7 @@ void dds_qget_reliability
|
|||
if (kind) *kind = (dds_reliability_kind_t) qos->reliability.kind;
|
||||
if (max_blocking_time) *max_blocking_time = nn_from_ddsi_duration (qos->reliability.max_blocking_time);
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument qos is NULL");
|
||||
DDS_ERROR("Argument qos is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -956,11 +964,11 @@ void dds_qget_transport_priority
|
|||
)
|
||||
{
|
||||
if(!qos){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument qos is NULL");
|
||||
DDS_ERROR("Argument qos is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if(!value){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument value is NULL");
|
||||
DDS_ERROR("Argument value is NULL\n");
|
||||
return ;
|
||||
}
|
||||
*value = qos->transport_priority.value;
|
||||
|
@ -973,11 +981,11 @@ void dds_qget_destination_order
|
|||
)
|
||||
{
|
||||
if(!qos){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument qos is NULL");
|
||||
DDS_ERROR("Argument qos is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if(!kind){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument kind is NULL");
|
||||
DDS_ERROR("Argument kind is NULL\n");
|
||||
return ;
|
||||
}
|
||||
*kind = (dds_destination_order_kind_t) qos->destination_order.kind;
|
||||
|
@ -990,11 +998,11 @@ void dds_qget_writer_data_lifecycle
|
|||
)
|
||||
{
|
||||
if(!qos){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument qos is NULL");
|
||||
DDS_ERROR("Argument qos is NULL\n");
|
||||
return ;
|
||||
}
|
||||
if(!autodispose){
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument autodispose is NULL");
|
||||
DDS_ERROR("Argument autodispose is NULL\n");
|
||||
return ;
|
||||
}
|
||||
*autodispose = qos->writer_data_lifecycle.autodispose_unregistered_instances;
|
||||
|
@ -1017,7 +1025,7 @@ void dds_qget_reader_data_lifecycle
|
|||
nn_from_ddsi_duration (qos->reader_data_lifecycle.autopurge_disposed_samples_delay);
|
||||
}
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument qos is NULL");
|
||||
DDS_ERROR("Argument qos is NULL\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1040,6 +1048,6 @@ void dds_qget_durability_service
|
|||
if (max_instances) *max_instances = qos->durability_service.resource_limits.max_instances;
|
||||
if (max_samples_per_instance) *max_samples_per_instance = qos->durability_service.resource_limits.max_samples_per_instance;
|
||||
} else {
|
||||
DDS_ERROR(DDS_RETCODE_BAD_PARAMETER, "Argument qos is NULL");
|
||||
DDS_ERROR("Argument qos is NULL\n");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
#include "dds__err.h"
|
||||
#include "ddsi/ddsi_serdata.h"
|
||||
#include "ddsi/ddsi_sertopic.h"
|
||||
#include "dds__report.h"
|
||||
|
||||
_Pre_satisfies_((reader & DDS_ENTITY_KIND_MASK) == DDS_KIND_READER)
|
||||
DDS_EXPORT dds_entity_t
|
||||
|
@ -31,8 +30,6 @@ dds_create_querycondition(
|
|||
dds__retcode_t rc;
|
||||
dds_reader *r;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
rc = dds_reader_lock(reader, &r);
|
||||
if (rc == DDS_RETCODE_OK) {
|
||||
dds_readcond *cond = dds_create_readcond(r, DDS_KIND_COND_QUERY, mask);
|
||||
|
@ -41,8 +38,9 @@ dds_create_querycondition(
|
|||
cond->m_query.m_filter = filter;
|
||||
dds_reader_unlock(r);
|
||||
} else {
|
||||
hdl = DDS_ERRNO(rc, "Error occurred on locking reader");
|
||||
DDS_ERROR("Error occurred on locking reader\n");
|
||||
hdl = DDS_ERRNO(rc);
|
||||
}
|
||||
DDS_REPORT_FLUSH(hdl <= 0);
|
||||
|
||||
return hdl;
|
||||
}
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
#include "ddsi/q_thread.h"
|
||||
#include "ddsi/q_ephash.h"
|
||||
#include "ddsi/q_entity.h"
|
||||
#include "dds__report.h"
|
||||
|
||||
|
||||
static _Check_return_ dds__retcode_t
|
||||
|
@ -46,19 +45,19 @@ dds_read_lock(
|
|||
rc = dds_entity_lock(parent->m_hdl, DDS_KIND_READER, (dds_entity**)reader);
|
||||
if (rc != DDS_RETCODE_OK) {
|
||||
dds_entity_unlock((dds_entity*)*condition);
|
||||
DDS_ERROR(rc, "Failed to lock condition reader.");
|
||||
DDS_ERROR("Failed to lock condition reader\n");
|
||||
}
|
||||
} else {
|
||||
DDS_ERROR(rc, "Failed to lock condition.");
|
||||
DDS_ERROR("Failed to lock condition\n");
|
||||
}
|
||||
} else {
|
||||
DDS_ERROR(rc, "Given entity is not a reader nor a condition.");
|
||||
DDS_ERROR("Given entity is not a reader nor a condition\n");
|
||||
}
|
||||
} else {
|
||||
DDS_ERROR(rc, "Given entity is not a reader.");
|
||||
DDS_ERROR("Given entity is not a reader\n");
|
||||
}
|
||||
} else if (rc != DDS_RETCODE_OK) {
|
||||
DDS_ERROR(rc, "Failed to lock reader.");
|
||||
DDS_ERROR("Failed to lock reader\n");
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
@ -106,34 +105,41 @@ dds_read_impl(
|
|||
thread_state_awake (thr);
|
||||
}
|
||||
if (buf == NULL) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "The provided buffer is NULL");
|
||||
DDS_ERROR("The provided buffer is NULL\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
goto fail;
|
||||
}
|
||||
if (si == NULL) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Provided pointer to an array of dds_sample_info_t is NULL");
|
||||
DDS_ERROR("Provided pointer to an array of dds_sample_info_t is NULL\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
goto fail;
|
||||
}
|
||||
if (maxs == 0) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "The maximum number of samples to read is zero");
|
||||
DDS_ERROR("The maximum number of samples to read is zero\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
goto fail;
|
||||
}
|
||||
if (bufsz == 0) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "The size of buffer is zero");
|
||||
DDS_ERROR("The size of buffer is zero\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
goto fail;
|
||||
}
|
||||
if (bufsz < maxs) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "The provided size of buffer is smaller than the maximum number of samples to read");
|
||||
DDS_ERROR("The provided size of buffer is smaller than the maximum number of samples to read\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
rc = dds_read_lock(reader_or_condition, &rd, &cond, only_reader);
|
||||
if (rc != DDS_RETCODE_OK) {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking entity");
|
||||
DDS_ERROR("Error occurred on locking entity\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
goto fail;
|
||||
}
|
||||
if (hand != DDS_HANDLE_NIL) {
|
||||
if (dds_tkmap_find_by_id(gv.m_tkmap, hand) == NULL) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_PRECONDITION_NOT_MET, "Could not find instance");
|
||||
DDS_ERROR("Could not find instance\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_PRECONDITION_NOT_MET);
|
||||
dds_read_unlock(rd, cond);
|
||||
goto fail;
|
||||
}
|
||||
|
@ -235,7 +241,8 @@ dds_readcdr_impl(
|
|||
}
|
||||
dds_read_unlock(rd, cond);
|
||||
} else {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking entity");
|
||||
DDS_ERROR("Error occurred on locking entity\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
}
|
||||
|
||||
if (asleep)
|
||||
|
@ -258,18 +265,14 @@ dds_read(
|
|||
_In_ uint32_t maxs)
|
||||
{
|
||||
bool lock = true;
|
||||
dds_return_t ret;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
if (maxs == DDS_READ_WITHOUT_LOCK) {
|
||||
lock = false;
|
||||
/* Use a more sensible maxs, so use bufsz instead.
|
||||
* CHAM-306 will remove this ugly piece of code. */
|
||||
maxs = (uint32_t)bufsz;
|
||||
}
|
||||
ret = dds_read_impl (false, rd_or_cnd, buf, bufsz, maxs, si, NO_STATE_MASK_SET, DDS_HANDLE_NIL, lock, false);
|
||||
DDS_REPORT_FLUSH(ret < 0);
|
||||
return ret;
|
||||
return dds_read_impl (false, rd_or_cnd, buf, bufsz, maxs, si, NO_STATE_MASK_SET, DDS_HANDLE_NIL, lock, false);
|
||||
}
|
||||
|
||||
_Pre_satisfies_(((rd_or_cnd & DDS_ENTITY_KIND_MASK) == DDS_KIND_READER ) ||\
|
||||
|
@ -283,9 +286,6 @@ dds_read_wl(
|
|||
_In_ uint32_t maxs)
|
||||
{
|
||||
bool lock = true;
|
||||
dds_return_t ret;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (maxs == DDS_READ_WITHOUT_LOCK) {
|
||||
lock = false;
|
||||
|
@ -293,9 +293,7 @@ dds_read_wl(
|
|||
* CHAM-306 will remove this ugly piece of code. */
|
||||
maxs = 100;
|
||||
}
|
||||
ret = dds_read_impl (false, rd_or_cnd, buf, maxs, maxs, si, NO_STATE_MASK_SET, DDS_HANDLE_NIL, lock, false);
|
||||
DDS_REPORT_FLUSH(ret < 0);
|
||||
return ret;
|
||||
return dds_read_impl (false, rd_or_cnd, buf, maxs, maxs, si, NO_STATE_MASK_SET, DDS_HANDLE_NIL, lock, false);
|
||||
}
|
||||
|
||||
_Pre_satisfies_(((rd_or_cnd & DDS_ENTITY_KIND_MASK) == DDS_KIND_READER ) ||\
|
||||
|
@ -311,9 +309,6 @@ dds_read_mask(
|
|||
_In_ uint32_t mask)
|
||||
{
|
||||
bool lock = true;
|
||||
dds_return_t ret;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (maxs == DDS_READ_WITHOUT_LOCK) {
|
||||
lock = false;
|
||||
|
@ -321,9 +316,7 @@ dds_read_mask(
|
|||
* CHAM-306 will remove this ugly piece of code. */
|
||||
maxs = (uint32_t)bufsz;
|
||||
}
|
||||
ret = dds_read_impl (false, rd_or_cnd, buf, bufsz, maxs, si, mask, DDS_HANDLE_NIL, lock, false);
|
||||
DDS_REPORT_FLUSH(ret < 0);
|
||||
return ret;
|
||||
return dds_read_impl (false, rd_or_cnd, buf, bufsz, maxs, si, mask, DDS_HANDLE_NIL, lock, false);
|
||||
}
|
||||
|
||||
_Pre_satisfies_(((rd_or_cnd & DDS_ENTITY_KIND_MASK) == DDS_KIND_READER ) ||\
|
||||
|
@ -338,9 +331,6 @@ dds_read_mask_wl(
|
|||
_In_ uint32_t mask)
|
||||
{
|
||||
bool lock = true;
|
||||
dds_return_t ret;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (maxs == DDS_READ_WITHOUT_LOCK) {
|
||||
lock = false;
|
||||
|
@ -348,9 +338,7 @@ dds_read_mask_wl(
|
|||
* CHAM-306 will remove this ugly piece of code. */
|
||||
maxs = 100;
|
||||
}
|
||||
ret = dds_read_impl (false, rd_or_cnd, buf, maxs, maxs, si, mask, DDS_HANDLE_NIL, lock, false);
|
||||
DDS_REPORT_FLUSH(ret < 0 );
|
||||
return ret;
|
||||
return dds_read_impl (false, rd_or_cnd, buf, maxs, maxs, si, mask, DDS_HANDLE_NIL, lock, false);
|
||||
}
|
||||
|
||||
_Pre_satisfies_(((rd_or_cnd & DDS_ENTITY_KIND_MASK) == DDS_KIND_READER ) ||\
|
||||
|
@ -367,10 +355,10 @@ dds_read_instance(
|
|||
{
|
||||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
bool lock = true;
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (handle == DDS_HANDLE_NIL) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_PRECONDITION_NOT_MET, "DDS_HANDLE_NIL was provided");
|
||||
DDS_ERROR("DDS_HANDLE_NIL was provided\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_PRECONDITION_NOT_MET);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
@ -382,7 +370,6 @@ dds_read_instance(
|
|||
}
|
||||
ret = dds_read_impl(false, rd_or_cnd, buf, bufsz, maxs, si, NO_STATE_MASK_SET, handle, lock, false);
|
||||
fail:
|
||||
DDS_REPORT_FLUSH(ret < 0 );
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -399,10 +386,10 @@ dds_read_instance_wl(
|
|||
{
|
||||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
bool lock = true;
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (handle == DDS_HANDLE_NIL) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_PRECONDITION_NOT_MET, "DDS_HANDLE_NIL was provided");
|
||||
DDS_ERROR("DDS_HANDLE_NIL was provided\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_PRECONDITION_NOT_MET);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
@ -414,7 +401,6 @@ dds_read_instance_wl(
|
|||
}
|
||||
ret = dds_read_impl(false, rd_or_cnd, buf, maxs, maxs, si, NO_STATE_MASK_SET, handle, lock, false);
|
||||
fail:
|
||||
DDS_REPORT_FLUSH(ret < 0);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -434,10 +420,10 @@ dds_read_instance_mask(
|
|||
{
|
||||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
bool lock = true;
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (handle == DDS_HANDLE_NIL) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_PRECONDITION_NOT_MET, "DDS_HANDLE_NIL was provided");
|
||||
DDS_ERROR("DDS_HANDLE_NIL was provided\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_PRECONDITION_NOT_MET);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
@ -449,7 +435,6 @@ dds_read_instance_mask(
|
|||
}
|
||||
ret = dds_read_impl(false, rd_or_cnd, buf, bufsz, maxs, si, mask, handle, lock, false);
|
||||
fail:
|
||||
DDS_REPORT_FLUSH(ret < 0);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -468,10 +453,10 @@ dds_read_instance_mask_wl(
|
|||
{
|
||||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
bool lock = true;
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (handle == DDS_HANDLE_NIL) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_PRECONDITION_NOT_MET, "DDS_HANDLE_NIL was provided");
|
||||
DDS_ERROR("DDS_HANDLE_NIL was provided\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_PRECONDITION_NOT_MET);
|
||||
goto fail;
|
||||
}
|
||||
if (maxs == DDS_READ_WITHOUT_LOCK) {
|
||||
|
@ -482,7 +467,6 @@ dds_read_instance_mask_wl(
|
|||
}
|
||||
ret = dds_read_impl(false, rd_or_cnd, buf, maxs, maxs, si, mask, handle, lock, false);
|
||||
fail:
|
||||
DDS_REPORT_FLUSH(ret < 0);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -494,13 +478,7 @@ dds_read_next(
|
|||
_Out_ dds_sample_info_t *si)
|
||||
{
|
||||
uint32_t mask = DDS_NOT_READ_SAMPLE_STATE | DDS_ANY_VIEW_STATE | DDS_ANY_INSTANCE_STATE;
|
||||
dds_return_t ret;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
ret = dds_read_impl (false, reader, buf, 1u, 1u, si, mask, DDS_HANDLE_NIL, true, true);
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
return ret;
|
||||
return dds_read_impl (false, reader, buf, 1u, 1u, si, mask, DDS_HANDLE_NIL, true, true);
|
||||
}
|
||||
|
||||
_Pre_satisfies_((reader & DDS_ENTITY_KIND_MASK) == DDS_KIND_READER )
|
||||
|
@ -511,12 +489,7 @@ dds_read_next_wl(
|
|||
_Out_ dds_sample_info_t *si)
|
||||
{
|
||||
uint32_t mask = DDS_NOT_READ_SAMPLE_STATE | DDS_ANY_VIEW_STATE | DDS_ANY_INSTANCE_STATE;
|
||||
dds_return_t ret;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
ret = dds_read_impl (false, reader, buf, 1u, 1u, si, mask, DDS_HANDLE_NIL, true, true);
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
return ret;
|
||||
return dds_read_impl (false, reader, buf, 1u, 1u, si, mask, DDS_HANDLE_NIL, true, true);
|
||||
}
|
||||
|
||||
_Pre_satisfies_(((rd_or_cnd & DDS_ENTITY_KIND_MASK) == DDS_KIND_READER ) ||\
|
||||
|
@ -531,9 +504,6 @@ dds_take(
|
|||
_In_ uint32_t maxs)
|
||||
{
|
||||
bool lock = true;
|
||||
dds_return_t ret;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (maxs == DDS_READ_WITHOUT_LOCK) {
|
||||
lock = false;
|
||||
|
@ -541,9 +511,7 @@ dds_take(
|
|||
* CHAM-306 will remove this ugly piece of code. */
|
||||
maxs = (uint32_t)bufsz;
|
||||
}
|
||||
ret = dds_read_impl (true, rd_or_cnd, buf, bufsz, maxs, si, NO_STATE_MASK_SET, DDS_HANDLE_NIL, lock, false);
|
||||
DDS_REPORT_FLUSH(ret < 0);
|
||||
return ret;
|
||||
return dds_read_impl (true, rd_or_cnd, buf, bufsz, maxs, si, NO_STATE_MASK_SET, DDS_HANDLE_NIL, lock, false);
|
||||
}
|
||||
|
||||
_Pre_satisfies_(((rd_or_cnd & DDS_ENTITY_KIND_MASK) == DDS_KIND_READER ) ||\
|
||||
|
@ -557,9 +525,6 @@ dds_take_wl(
|
|||
_In_ uint32_t maxs)
|
||||
{
|
||||
bool lock = true;
|
||||
dds_return_t ret;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (maxs == DDS_READ_WITHOUT_LOCK) {
|
||||
lock = false;
|
||||
|
@ -567,9 +532,7 @@ dds_take_wl(
|
|||
* CHAM-306 will remove this ugly piece of code. */
|
||||
maxs = 100;
|
||||
}
|
||||
ret = dds_read_impl (true, rd_or_cnd, buf, maxs, maxs, si, NO_STATE_MASK_SET, DDS_HANDLE_NIL, lock, false);
|
||||
DDS_REPORT_FLUSH(ret < 0);
|
||||
return ret;
|
||||
return dds_read_impl (true, rd_or_cnd, buf, maxs, maxs, si, NO_STATE_MASK_SET, DDS_HANDLE_NIL, lock, false);
|
||||
}
|
||||
|
||||
_Pre_satisfies_(((rd_or_cnd & DDS_ENTITY_KIND_MASK) == DDS_KIND_READER ) ||\
|
||||
|
@ -585,9 +548,6 @@ dds_take_mask(
|
|||
_In_ uint32_t mask)
|
||||
{
|
||||
bool lock = true;
|
||||
dds_return_t ret;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (maxs == DDS_READ_WITHOUT_LOCK) {
|
||||
lock = false;
|
||||
|
@ -595,9 +555,7 @@ dds_take_mask(
|
|||
* CHAM-306 will remove this ugly piece of code. */
|
||||
maxs = (uint32_t)bufsz;
|
||||
}
|
||||
ret = dds_read_impl (true, rd_or_cnd, buf, bufsz, maxs, si, mask, DDS_HANDLE_NIL, lock, false);
|
||||
DDS_REPORT_FLUSH(ret < 0);
|
||||
return ret;
|
||||
return dds_read_impl (true, rd_or_cnd, buf, bufsz, maxs, si, mask, DDS_HANDLE_NIL, lock, false);
|
||||
}
|
||||
|
||||
_Pre_satisfies_(((rd_or_cnd & DDS_ENTITY_KIND_MASK) == DDS_KIND_READER ) ||\
|
||||
|
@ -612,9 +570,6 @@ dds_take_mask_wl(
|
|||
_In_ uint32_t mask)
|
||||
{
|
||||
bool lock = true;
|
||||
dds_return_t ret;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (maxs == DDS_READ_WITHOUT_LOCK) {
|
||||
lock = false;
|
||||
|
@ -622,9 +577,7 @@ dds_take_mask_wl(
|
|||
* CHAM-306 will remove this ugly piece of code. */
|
||||
maxs = 100;
|
||||
}
|
||||
ret = dds_read_impl (true, rd_or_cnd, buf, maxs, maxs, si, mask, DDS_HANDLE_NIL, lock, false);
|
||||
DDS_REPORT_FLUSH(ret < 0);
|
||||
return ret;
|
||||
return dds_read_impl (true, rd_or_cnd, buf, maxs, maxs, si, mask, DDS_HANDLE_NIL, lock, false);
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -636,6 +589,7 @@ dds_takecdr(
|
|||
uint32_t mask)
|
||||
{
|
||||
bool lock = true;
|
||||
|
||||
if (maxs == DDS_READ_WITHOUT_LOCK) {
|
||||
lock = false;
|
||||
/* Use a more sensible maxs. Just an arbitrarily number.
|
||||
|
@ -661,10 +615,9 @@ dds_take_instance(
|
|||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
bool lock = true;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (handle == DDS_HANDLE_NIL) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_PRECONDITION_NOT_MET, "DDS_HANDLE_NIL was provided");
|
||||
DDS_ERROR("DDS_HANDLE_NIL was provided\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_PRECONDITION_NOT_MET);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
@ -676,7 +629,6 @@ dds_take_instance(
|
|||
}
|
||||
ret = dds_read_impl(true, rd_or_cnd, buf, bufsz, maxs, si, NO_STATE_MASK_SET, handle, lock, false);
|
||||
fail:
|
||||
DDS_REPORT_FLUSH(ret < 0);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -694,10 +646,9 @@ dds_take_instance_wl(
|
|||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
bool lock = true;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (handle == DDS_HANDLE_NIL) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_PRECONDITION_NOT_MET, "DDS_HANDLE_NIL was provided");
|
||||
DDS_ERROR("DDS_HANDLE_NIL was provided\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_PRECONDITION_NOT_MET);
|
||||
goto fail;
|
||||
}
|
||||
if (maxs == DDS_READ_WITHOUT_LOCK) {
|
||||
|
@ -708,7 +659,6 @@ dds_take_instance_wl(
|
|||
}
|
||||
ret = dds_read_impl(true, rd_or_cnd, buf, maxs, maxs, si, NO_STATE_MASK_SET, handle, lock, false);
|
||||
fail:
|
||||
DDS_REPORT_FLUSH(ret < 0);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -729,10 +679,9 @@ dds_take_instance_mask(
|
|||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
bool lock = true;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (handle == DDS_HANDLE_NIL) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_PRECONDITION_NOT_MET, "DDS_HANDLE_NIL was provided");
|
||||
DDS_ERROR("DDS_HANDLE_NIL was provided\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_PRECONDITION_NOT_MET);
|
||||
goto fail;
|
||||
}
|
||||
if (maxs == DDS_READ_WITHOUT_LOCK) {
|
||||
|
@ -743,7 +692,6 @@ dds_take_instance_mask(
|
|||
}
|
||||
ret = dds_read_impl(true, rd_or_cnd, buf, bufsz, maxs, si, mask, handle, lock, false);
|
||||
fail:
|
||||
DDS_REPORT_FLUSH(ret < 0);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -763,10 +711,9 @@ dds_take_instance_mask_wl(
|
|||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
bool lock = true;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (handle == DDS_HANDLE_NIL) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_PRECONDITION_NOT_MET, "DDS_HANDLE_NIL was provided");
|
||||
DDS_ERROR("DDS_HANDLE_NIL was provided\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_PRECONDITION_NOT_MET);
|
||||
goto fail;
|
||||
}
|
||||
if (maxs == DDS_READ_WITHOUT_LOCK) {
|
||||
|
@ -777,7 +724,6 @@ dds_take_instance_mask_wl(
|
|||
}
|
||||
ret = dds_read_impl(true, rd_or_cnd, buf, maxs, maxs, si, mask, handle, lock, false);
|
||||
fail:
|
||||
DDS_REPORT_FLUSH(ret < 0);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -789,11 +735,7 @@ dds_take_next(
|
|||
_Out_ dds_sample_info_t *si)
|
||||
{
|
||||
uint32_t mask = DDS_NOT_READ_SAMPLE_STATE | DDS_ANY_VIEW_STATE | DDS_ANY_INSTANCE_STATE;
|
||||
dds_return_t ret;
|
||||
DDS_REPORT_STACK();
|
||||
ret = dds_read_impl (true, reader, buf, 1u, 1u, si, mask, DDS_HANDLE_NIL, true, true);
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
return ret;
|
||||
return dds_read_impl (true, reader, buf, 1u, 1u, si, mask, DDS_HANDLE_NIL, true, true);
|
||||
}
|
||||
|
||||
_Pre_satisfies_((reader & DDS_ENTITY_KIND_MASK) == DDS_KIND_READER )
|
||||
|
@ -804,11 +746,7 @@ dds_take_next_wl(
|
|||
_Out_ dds_sample_info_t *si)
|
||||
{
|
||||
uint32_t mask = DDS_NOT_READ_SAMPLE_STATE | DDS_ANY_VIEW_STATE | DDS_ANY_INSTANCE_STATE;
|
||||
dds_return_t ret;
|
||||
DDS_REPORT_STACK();
|
||||
ret = dds_read_impl (true, reader, buf, 1u, 1u, si, mask, DDS_HANDLE_NIL, true, true);
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
return ret;
|
||||
return dds_read_impl (true, reader, buf, 1u, 1u, si, mask, DDS_HANDLE_NIL, true, true);
|
||||
}
|
||||
|
||||
_Pre_satisfies_(((reader_or_condition & DDS_ENTITY_KIND_MASK) == DDS_KIND_READER ) ||\
|
||||
|
@ -826,20 +764,21 @@ dds_return_loan(
|
|||
dds_readcond *cond;
|
||||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (!buf ) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Argument buf is NULL");
|
||||
DDS_ERROR("Argument buf is NULL\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
goto fail;
|
||||
}
|
||||
if(*buf == NULL && bufsz > 0){
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Argument buf is NULL");
|
||||
DDS_ERROR("Argument buf is NULL\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
rc = dds_read_lock(reader_or_condition, &rd, &cond, false);
|
||||
if (rc != DDS_RETCODE_OK) {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking entity");
|
||||
DDS_ERROR("Error occurred on locking entity\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
goto fail;
|
||||
}
|
||||
desc = rd->m_topic->m_descriptor;
|
||||
|
@ -861,6 +800,5 @@ dds_return_loan(
|
|||
|
||||
dds_read_unlock(rd, cond);
|
||||
fail:
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
#include "ddsi/q_ephash.h"
|
||||
#include "ddsi/q_entity.h"
|
||||
#include "ddsi/q_thread.h"
|
||||
#include "dds__report.h"
|
||||
|
||||
static dds_return_t
|
||||
dds_readcond_delete(
|
||||
|
@ -57,8 +56,6 @@ dds_create_readcondition(
|
|||
dds_reader * rd;
|
||||
dds__retcode_t rc;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
rc = dds_reader_lock(reader, &rd);
|
||||
if (rc == DDS_RETCODE_OK) {
|
||||
dds_readcond *cond = dds_create_readcond(rd, DDS_KIND_COND_READ, mask);
|
||||
|
@ -66,9 +63,10 @@ dds_create_readcondition(
|
|||
hdl = cond->m_entity.m_hdl;
|
||||
dds_reader_unlock(rd);
|
||||
} else {
|
||||
hdl = DDS_ERRNO(rc, "Error occurred on locking reader");
|
||||
DDS_ERROR("Error occurred on locking reader\n");
|
||||
hdl = DDS_ERRNO(rc);
|
||||
}
|
||||
DDS_REPORT_FLUSH(hdl <= 0);
|
||||
|
||||
return hdl;
|
||||
}
|
||||
|
||||
|
@ -80,15 +78,15 @@ dds_get_datareader(
|
|||
{
|
||||
dds_entity_t hdl;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
if (dds_entity_kind(condition) == DDS_KIND_COND_READ) {
|
||||
hdl = dds_get_parent(condition);
|
||||
} else if (dds_entity_kind(condition) == DDS_KIND_COND_QUERY) {
|
||||
hdl = dds_get_parent(condition);
|
||||
} else {
|
||||
hdl = DDS_ERRNO(dds_valid_hdl(condition, DDS_KIND_COND_READ), "Argument condition is not valid");
|
||||
DDS_ERROR("Argument condition is not valid\n");
|
||||
hdl = DDS_ERRNO(dds_valid_hdl(condition, DDS_KIND_COND_READ));
|
||||
}
|
||||
DDS_REPORT_FLUSH(hdl <= 0);
|
||||
|
||||
return hdl;
|
||||
}
|
||||
|
||||
|
@ -104,8 +102,6 @@ dds_get_mask(
|
|||
dds_readcond *cond;
|
||||
dds__retcode_t rc;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (mask != NULL) {
|
||||
*mask = 0;
|
||||
if ((dds_entity_kind(condition) == DDS_KIND_COND_READ ) ||
|
||||
|
@ -116,14 +112,17 @@ dds_get_mask(
|
|||
dds_entity_unlock((dds_entity*)cond);
|
||||
ret = DDS_RETCODE_OK;
|
||||
} else{
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking condition");
|
||||
DDS_ERROR("Error occurred on locking condition\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
}
|
||||
} else {
|
||||
ret = DDS_ERRNO(dds_valid_hdl(condition, DDS_KIND_COND_READ), "Argument condition is not valid");
|
||||
DDS_ERROR("Argument condition is not valid\n");
|
||||
ret = DDS_ERRNO(dds_valid_hdl(condition, DDS_KIND_COND_READ));
|
||||
}
|
||||
} else {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Argument mask is NULL");
|
||||
DDS_ERROR("Argument mask is NULL\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
}
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -21,11 +21,9 @@
|
|||
#include "dds__err.h"
|
||||
#include "ddsi/q_entity.h"
|
||||
#include "ddsi/q_thread.h"
|
||||
#include "dds__report.h"
|
||||
#include "dds__builtin.h"
|
||||
#include "ddsc/ddsc_project.h"
|
||||
|
||||
#include <string.h>
|
||||
#include "os/os.h"
|
||||
|
||||
|
||||
|
@ -65,8 +63,9 @@ dds_reader_close(
|
|||
thread_state_awake(thr);
|
||||
}
|
||||
if (delete_reader(&e->m_guid) != 0) {
|
||||
DDS_ERROR("Internal error");
|
||||
rc = DDS_RETCODE_ERROR;
|
||||
ret = DDS_ERRNO(rc, "Internal error");
|
||||
ret = DDS_ERRNO(rc);
|
||||
}
|
||||
if (asleep) {
|
||||
thread_state_asleep(thr);
|
||||
|
@ -103,22 +102,28 @@ dds_reader_qos_validate(
|
|||
|
||||
/* Check consistency. */
|
||||
if(!dds_qos_validate_common(qos)) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR, "Argument Qos is not valid");
|
||||
DDS_ERROR("Argument Qos is not valid\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR);
|
||||
}
|
||||
if((qos->present & QP_USER_DATA) && !(validate_octetseq (&qos->user_data))) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY, "User data policy is inconsistent and caused an error");
|
||||
DDS_ERROR("User data policy is inconsistent and caused an error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY);
|
||||
}
|
||||
if((qos->present & QP_PRISMTECH_READER_DATA_LIFECYCLE) && (validate_reader_data_lifecycle (&qos->reader_data_lifecycle) != 0)) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY, "Prismtech reader data lifecycle policy is inconsistent and caused an error");
|
||||
DDS_ERROR("Prismtech reader data lifecycle policy is inconsistent and caused an error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY);
|
||||
}
|
||||
if((qos->present & QP_TIME_BASED_FILTER) && (validate_duration (&qos->time_based_filter.minimum_separation) != 0)) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY, "Time based filter policy is inconsistent and caused an error");
|
||||
DDS_ERROR("Time based filter policy is inconsistent and caused an error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY);
|
||||
}
|
||||
if((qos->present & QP_HISTORY) && (qos->present & QP_RESOURCE_LIMITS) && (validate_history_and_resource_limits (&qos->history, &qos->resource_limits) != 0)) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY, "History and resource limits policy is inconsistent and caused an error");
|
||||
DDS_ERROR("History and resource limits policy is inconsistent and caused an error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY);
|
||||
}
|
||||
if((qos->present & QP_TIME_BASED_FILTER) && (qos->present & QP_DEADLINE) && !(validate_deadline_and_timebased_filter (qos->deadline.deadline, qos->time_based_filter.minimum_separation))) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY, "Time based filter and deadline policy is inconsistent and caused an error");
|
||||
DDS_ERROR("Time based filter and deadline policy is inconsistent and caused an error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY);
|
||||
}
|
||||
if(ret == DDS_RETCODE_OK && enabled) {
|
||||
ret = dds_qos_validate_mutable_common(qos);
|
||||
|
@ -138,7 +143,8 @@ dds_reader_qos_set(
|
|||
if (ret == DDS_RETCODE_OK) {
|
||||
if (enabled) {
|
||||
/* TODO: CHAM-95: DDSI does not support changing QoS policies. */
|
||||
ret = DDS_ERRNO(DDS_RETCODE_UNSUPPORTED, DDSC_PROJECT_NAME" does not support changing QoS policies");
|
||||
DDS_ERROR(DDSC_PROJECT_NAME" does not support changing QoS policies\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_UNSUPPORTED);
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
|
@ -149,7 +155,7 @@ dds_reader_status_validate(
|
|||
uint32_t mask)
|
||||
{
|
||||
return (mask & ~(DDS_READER_STATUS_MASK)) ?
|
||||
DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Invalid status mask") :
|
||||
DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER) :
|
||||
DDS_RETCODE_OK;
|
||||
}
|
||||
|
||||
|
@ -162,8 +168,6 @@ dds_reader_status_cb(
|
|||
dds__retcode_t rc;
|
||||
void *metrics = NULL;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
/* When data is NULL, it means that the DDSI reader is deleted. */
|
||||
if (data == NULL) {
|
||||
/* Release the initial claim that was done during the create. This
|
||||
|
@ -173,8 +177,6 @@ dds_reader_status_cb(
|
|||
}
|
||||
|
||||
if (dds_reader_lock(((dds_entity*)entity)->m_hdl, &rd) != DDS_RETCODE_OK) {
|
||||
/* There's a deletion or closing going on. */
|
||||
DDS_REPORT_FLUSH(false);
|
||||
return;
|
||||
}
|
||||
assert(rd == entity);
|
||||
|
@ -333,8 +335,6 @@ dds_reader_status_cb(
|
|||
} else {
|
||||
/* Something went wrong up the hierarchy. */
|
||||
}
|
||||
|
||||
DDS_REPORT_FLUSH(rc != DDS_RETCODE_OK);
|
||||
}
|
||||
|
||||
|
||||
|
@ -362,8 +362,6 @@ dds_create_reader(
|
|||
const bool asleep = !vtime_awake_p (thr->vtime);
|
||||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (dds_entity_kind(topic) != DDS_KIND_INTERNAL) {
|
||||
/* Try claiming a participant. If that's not working, then it could be a subscriber. */
|
||||
if (dds_entity_kind(participant_or_subscriber) == DDS_KIND_PARTICIPANT) {
|
||||
|
@ -380,7 +378,8 @@ dds_create_reader(
|
|||
|
||||
rc = dds_entity_lock(subscriber, DDS_KIND_SUBSCRIBER, &sub);
|
||||
if (rc != DDS_RETCODE_OK) {
|
||||
reader = DDS_ERRNO(rc, "Error occurred on locking subscriber");
|
||||
DDS_ERROR("Error occurred on locking subscriber\n");
|
||||
reader = DDS_ERRNO(rc);
|
||||
goto err_sub_lock;
|
||||
}
|
||||
|
||||
|
@ -392,7 +391,8 @@ dds_create_reader(
|
|||
|
||||
rc = dds_entity_lock(t, DDS_KIND_TOPIC, &tp);
|
||||
if (rc != DDS_RETCODE_OK) {
|
||||
reader = DDS_ERRNO(rc, "Error occurred on locking topic");
|
||||
DDS_ERROR("Error occurred on locking topic\n");
|
||||
reader = DDS_ERRNO(rc);
|
||||
goto err_tp_lock;
|
||||
}
|
||||
assert (((dds_topic*)tp)->m_stopic);
|
||||
|
@ -472,7 +472,6 @@ dds_create_reader(
|
|||
dds_delete(t);
|
||||
}
|
||||
|
||||
DDS_REPORT_FLUSH(reader <= 0);
|
||||
return reader;
|
||||
|
||||
err_bad_qos:
|
||||
|
@ -483,7 +482,6 @@ err_tp_lock:
|
|||
(void)dds_delete(subscriber);
|
||||
}
|
||||
err_sub_lock:
|
||||
DDS_REPORT_FLUSH(reader <= 0);
|
||||
return reader;
|
||||
}
|
||||
|
||||
|
@ -560,7 +558,6 @@ dds_reader_wait_for_historical_data(
|
|||
int ret;
|
||||
dds_reader *rd;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
assert (reader);
|
||||
|
||||
ret = dds_reader_lock(reader, &rd);
|
||||
|
@ -568,13 +565,15 @@ dds_reader_wait_for_historical_data(
|
|||
if (((dds_entity*)rd)->m_qos->durability.kind > NN_TRANSIENT_LOCAL_DURABILITY_QOS) {
|
||||
ret = (dds_global.m_dur_wait) (rd, max_wait);
|
||||
} else {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR, "Can not wait for historical data on a reader with volatile durability");
|
||||
DDS_ERROR("Can not wait for historical data on a reader with volatile durability\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR);
|
||||
}
|
||||
dds_reader_unlock(rd);
|
||||
} else {
|
||||
ret = DDS_ERRNO(ret, "Error occurred on locking reader");
|
||||
DDS_ERROR("Error occurred on locking reader\n");
|
||||
ret = DDS_ERRNO(ret);
|
||||
}
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -587,8 +586,6 @@ dds_get_subscriber(
|
|||
{
|
||||
dds_entity_t hdl;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (dds_entity_kind(entity) == DDS_KIND_READER) {
|
||||
hdl = dds_get_parent(entity);
|
||||
} else if (dds_entity_kind(entity) == DDS_KIND_COND_READ || dds_entity_kind(entity) == DDS_KIND_COND_QUERY) {
|
||||
|
@ -596,12 +593,13 @@ dds_get_subscriber(
|
|||
if(hdl > 0){
|
||||
hdl = dds_get_subscriber(hdl);
|
||||
} else {
|
||||
DDS_ERROR(hdl, "Reader of this condition is already deleted");
|
||||
DDS_ERROR("Reader of this condition is already deleted\n");
|
||||
}
|
||||
} else {
|
||||
hdl = DDS_ERRNO(dds_valid_hdl(entity, DDS_KIND_READER), "Provided entity is not a reader nor a condition");
|
||||
DDS_ERROR("Provided entity is not a reader nor a condition\n");
|
||||
hdl = DDS_ERRNO(dds_valid_hdl(entity, DDS_KIND_READER));
|
||||
}
|
||||
DDS_REPORT_FLUSH(hdl <= 0);
|
||||
|
||||
return hdl;
|
||||
}
|
||||
|
||||
|
@ -615,11 +613,10 @@ dds_get_subscription_matched_status (
|
|||
dds_reader *rd;
|
||||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
rc = dds_reader_lock(reader, &rd);
|
||||
if (rc != DDS_RETCODE_OK) {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking reader");
|
||||
DDS_ERROR("Error occurred on locking reader\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
goto fail;
|
||||
}
|
||||
/* status = NULL, application do not need the status, but reset the counter & triggered bit */
|
||||
|
@ -633,7 +630,6 @@ dds_get_subscription_matched_status (
|
|||
}
|
||||
dds_reader_unlock(rd);
|
||||
fail:
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -647,11 +643,10 @@ dds_get_liveliness_changed_status (
|
|||
dds_reader *rd;
|
||||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
rc = dds_reader_lock(reader, &rd);
|
||||
if (rc != DDS_RETCODE_OK) {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking reader");
|
||||
DDS_ERROR("Error occurred on locking reader\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
goto fail;
|
||||
}
|
||||
/* status = NULL, application do not need the status, but reset the counter & triggered bit */
|
||||
|
@ -665,7 +660,6 @@ dds_get_liveliness_changed_status (
|
|||
}
|
||||
dds_reader_unlock(rd);
|
||||
fail:
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -678,11 +672,10 @@ dds_return_t dds_get_sample_rejected_status (
|
|||
dds_reader *rd;
|
||||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
rc = dds_reader_lock(reader, &rd);
|
||||
if (rc != DDS_RETCODE_OK) {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking reader");
|
||||
DDS_ERROR("Error occurred on locking reader\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
goto fail;
|
||||
}
|
||||
/* status = NULL, application do not need the status, but reset the counter & triggered bit */
|
||||
|
@ -696,7 +689,6 @@ dds_return_t dds_get_sample_rejected_status (
|
|||
}
|
||||
dds_reader_unlock(rd);
|
||||
fail:
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -709,11 +701,10 @@ dds_return_t dds_get_sample_lost_status (
|
|||
dds_reader *rd;
|
||||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
rc = dds_reader_lock(reader, &rd);
|
||||
if (rc != DDS_RETCODE_OK) {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking reader");
|
||||
DDS_ERROR("Error occurred on locking reader\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
goto fail;
|
||||
}
|
||||
/* status = NULL, application do not need the status, but reset the counter & triggered bit */
|
||||
|
@ -726,7 +717,6 @@ dds_return_t dds_get_sample_lost_status (
|
|||
}
|
||||
dds_reader_unlock(rd);
|
||||
fail:
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -739,10 +729,10 @@ dds_return_t dds_get_requested_deadline_missed_status (
|
|||
dds_reader *rd;
|
||||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
rc = dds_reader_lock(reader, &rd);
|
||||
if (rc != DDS_RETCODE_OK) {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking reader");
|
||||
DDS_ERROR("Error occurred on locking reader\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
goto fail;
|
||||
}
|
||||
/* status = NULL, application do not need the status, but reset the counter & triggered bit */
|
||||
|
@ -755,7 +745,6 @@ dds_return_t dds_get_requested_deadline_missed_status (
|
|||
}
|
||||
dds_reader_unlock(rd);
|
||||
fail:
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -768,11 +757,10 @@ dds_return_t dds_get_requested_incompatible_qos_status (
|
|||
dds_reader *rd;
|
||||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
rc = dds_reader_lock(reader, &rd);
|
||||
if (rc != DDS_RETCODE_OK) {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking reader");
|
||||
DDS_ERROR("Error occurred on locking reader\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
goto fail;
|
||||
}
|
||||
/* status = NULL, application do not need the status, but reset the counter & triggered bit */
|
||||
|
@ -785,6 +773,5 @@ dds_return_t dds_get_requested_incompatible_qos_status (
|
|||
}
|
||||
dds_reader_unlock(rd);
|
||||
fail:
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -1,53 +0,0 @@
|
|||
/*
|
||||
* Copyright(c) 2006 to 2018 ADLINK Technology Limited and others
|
||||
*
|
||||
* 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
|
||||
*/
|
||||
#include "ddsc/dds.h"
|
||||
#include "os/os.h"
|
||||
#include "os/os_report.h"
|
||||
#include <assert.h>
|
||||
#include <string.h>
|
||||
#include "dds__report.h"
|
||||
|
||||
void
|
||||
dds_report(
|
||||
os_reportType reportType,
|
||||
const char *function,
|
||||
int32_t line,
|
||||
const char *file,
|
||||
dds_return_t code,
|
||||
const char *format,
|
||||
...)
|
||||
{
|
||||
const char *retcode = NULL;
|
||||
/* os_report truncates messages to <OS_REPORT_BUFLEN> bytes */
|
||||
char buffer[OS_REPORT_BUFLEN];
|
||||
size_t offset = 0;
|
||||
va_list args;
|
||||
|
||||
assert (function != NULL);
|
||||
assert (file != NULL);
|
||||
assert (format != NULL);
|
||||
/* probably never happens, but you can never be to sure */
|
||||
assert (OS_REPORT_BUFLEN > 0);
|
||||
|
||||
retcode = dds_err_str(code*-1);
|
||||
offset = strlen(retcode);
|
||||
assert (offset < OS_REPORT_BUFLEN);
|
||||
(void)memcpy(buffer, retcode, offset);
|
||||
buffer[offset] = ' ';
|
||||
offset++;
|
||||
|
||||
va_start (args, format);
|
||||
(void)os_vsnprintf (buffer + offset, sizeof(buffer) - offset, format, args);
|
||||
va_end (args);
|
||||
os_report (reportType, function, file, line, code, "%s", buffer);
|
||||
}
|
||||
|
|
@ -38,7 +38,6 @@
|
|||
#include "ddsi/ddsi_serdata.h"
|
||||
#include "ddsi/ddsi_serdata_default.h"
|
||||
#include "ddsi/sysdeps.h"
|
||||
#include "dds__report.h"
|
||||
|
||||
/* INSTANCE MANAGEMENT
|
||||
===================
|
||||
|
@ -764,7 +763,7 @@ static void dds_rhc_register (struct rhc *rhc, struct rhc_instance *inst, uint64
|
|||
{
|
||||
const uint64_t inst_wr_iid = inst->wr_iid_islive ? inst->wr_iid : 0;
|
||||
|
||||
TRACE ((" register:"));
|
||||
DDS_TRACE(" register:");
|
||||
|
||||
/* Is an implicitly registering dispose semantically equivalent to
|
||||
register ; dispose? If so, both no_writers_gen and disposed_gen
|
||||
|
@ -779,7 +778,7 @@ static void dds_rhc_register (struct rhc *rhc, struct rhc_instance *inst, uint64
|
|||
/* Same writer as last time => we know it is registered already.
|
||||
This is the fast path -- we don't have to check anything
|
||||
else. */
|
||||
TRACE (("cached"));
|
||||
DDS_TRACE("cached");
|
||||
assert (inst->wrcount > 0);
|
||||
return;
|
||||
}
|
||||
|
@ -797,7 +796,7 @@ static void dds_rhc_register (struct rhc *rhc, struct rhc_instance *inst, uint64
|
|||
}
|
||||
inst->wrcount++;
|
||||
inst->no_writers_gen++;
|
||||
TRACE (("new1"));
|
||||
DDS_TRACE("new1");
|
||||
|
||||
if (!INST_IS_EMPTY (inst) && !inst->isdisposed)
|
||||
rhc->n_not_alive_no_writers--;
|
||||
|
@ -822,14 +821,14 @@ static void dds_rhc_register (struct rhc *rhc, struct rhc_instance *inst, uint64
|
|||
if (lwregs_add (&rhc->registrations, inst->iid, wr_iid))
|
||||
{
|
||||
inst->wrcount++;
|
||||
TRACE (("new2iidnull"));
|
||||
DDS_TRACE("new2iidnull");
|
||||
}
|
||||
else
|
||||
{
|
||||
int x = lwregs_delete (&rhc->registrations, inst->iid, wr_iid);
|
||||
assert (x);
|
||||
(void) x;
|
||||
TRACE (("restore"));
|
||||
DDS_TRACE("restore");
|
||||
}
|
||||
/* to avoid wr_iid update when register is called for sample rejected */
|
||||
if (iid_update)
|
||||
|
@ -845,7 +844,7 @@ static void dds_rhc_register (struct rhc *rhc, struct rhc_instance *inst, uint64
|
|||
if (inst->wrcount == 1)
|
||||
{
|
||||
/* 2nd writer => properly register the one we knew about */
|
||||
TRACE (("rescue1"));
|
||||
DDS_TRACE("rescue1");
|
||||
int x;
|
||||
x = lwregs_add (&rhc->registrations, inst->iid, inst_wr_iid);
|
||||
assert (x);
|
||||
|
@ -856,12 +855,12 @@ static void dds_rhc_register (struct rhc *rhc, struct rhc_instance *inst, uint64
|
|||
/* as soon as we reach at least two writers, we have to check
|
||||
the result of lwregs_add to know whether this sample
|
||||
registers a previously unknown writer or not */
|
||||
TRACE (("new3"));
|
||||
DDS_TRACE("new3");
|
||||
inst->wrcount++;
|
||||
}
|
||||
else
|
||||
{
|
||||
TRACE (("known"));
|
||||
DDS_TRACE("known");
|
||||
}
|
||||
assert (inst->wrcount >= 2);
|
||||
/* the most recent writer gets the fast path */
|
||||
|
@ -890,7 +889,7 @@ static int rhc_unregister_isreg_w_sideeffects (struct rhc *rhc, const struct rhc
|
|||
/* Returns 1 if last registration just disappeared */
|
||||
if (inst->wrcount == 0)
|
||||
{
|
||||
TRACE (("unknown(#0)"));
|
||||
DDS_TRACE("unknown(#0)");
|
||||
return 0;
|
||||
}
|
||||
else if (inst->wrcount == 1 && inst->wr_iid_islive)
|
||||
|
@ -898,23 +897,23 @@ static int rhc_unregister_isreg_w_sideeffects (struct rhc *rhc, const struct rhc
|
|||
assert(inst->wr_iid != 0);
|
||||
if (wr_iid != inst->wr_iid)
|
||||
{
|
||||
TRACE (("unknown(cache)"));
|
||||
DDS_TRACE("unknown(cache)");
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
TRACE (("last(cache)"));
|
||||
DDS_TRACE("last(cache)");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else if (!lwregs_delete (&rhc->registrations, inst->iid, wr_iid))
|
||||
{
|
||||
TRACE (("unknown(regs)"));
|
||||
DDS_TRACE("unknown(regs)");
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
TRACE (("delreg"));
|
||||
DDS_TRACE("delreg");
|
||||
/* If we transition from 2 to 1 writer, and we are deleting a
|
||||
writer other than the one cached in the instance, that means
|
||||
afterward there will be 1 writer, it will be cached, and its
|
||||
|
@ -922,7 +921,7 @@ static int rhc_unregister_isreg_w_sideeffects (struct rhc *rhc, const struct rhc
|
|||
and wr_iid != 0 the wr_iid is not in "registrations") */
|
||||
if (inst->wrcount == 2 && inst->wr_iid_islive && inst->wr_iid != wr_iid)
|
||||
{
|
||||
TRACE ((",delreg(remain)"));
|
||||
DDS_TRACE(",delreg(remain)");
|
||||
lwregs_delete (&rhc->registrations, inst->iid, inst->wr_iid);
|
||||
}
|
||||
return 1;
|
||||
|
@ -947,7 +946,7 @@ static int rhc_unregister_updateinst
|
|||
/* Reset the ownership strength to allow samples to be read from other
|
||||
writer(s) */
|
||||
inst->strength = 0;
|
||||
TRACE ((",clearcache"));
|
||||
DDS_TRACE(",clearcache");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -977,14 +976,14 @@ static int rhc_unregister_updateinst
|
|||
else if (inst->isdisposed)
|
||||
{
|
||||
/* No content left, no registrations left, so drop */
|
||||
TRACE ((",#0,empty,disposed,drop"));
|
||||
DDS_TRACE(",#0,empty,disposed,drop");
|
||||
drop_instance_noupdate_no_writers (rhc, inst);
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Add invalid samples for transition to no-writers */
|
||||
TRACE ((",#0,empty,nowriters"));
|
||||
DDS_TRACE(",#0,empty,nowriters");
|
||||
assert (INST_IS_EMPTY (inst));
|
||||
inst_set_invsample (rhc, inst);
|
||||
update_inst (rhc, inst, pwr_info, false, tstamp);
|
||||
|
@ -1002,7 +1001,7 @@ static void dds_rhc_unregister
|
|||
)
|
||||
{
|
||||
/* 'post' always gets set; instance may have been freed upon return. */
|
||||
TRACE ((" unregister:"));
|
||||
DDS_TRACE(" unregister:");
|
||||
if (!rhc_unregister_isreg_w_sideeffects (rhc, inst, pwr_info->iid))
|
||||
{
|
||||
/* other registrations remain */
|
||||
|
@ -1141,13 +1140,13 @@ bool dds_rhc_store
|
|||
bool notify_data_available = true;
|
||||
bool delivered = true;
|
||||
|
||||
TRACE (("rhc_store(%"PRIx64",%"PRIx64" si %x has_data %d:", tk->m_iid, wr_iid, statusinfo, has_data));
|
||||
DDS_TRACE("rhc_store(%"PRIx64",%"PRIx64" si %x has_data %d:", tk->m_iid, wr_iid, statusinfo, has_data);
|
||||
if (!has_data && statusinfo == 0)
|
||||
{
|
||||
/* Write with nothing but a key -- I guess that would be a
|
||||
register, which we do implicitly. (Currently DDSI2 won't allow
|
||||
it through anyway.) */
|
||||
TRACE ((" ignore explicit register)\n"));
|
||||
DDS_TRACE(" ignore explicit register)\n");
|
||||
return delivered;
|
||||
}
|
||||
|
||||
|
@ -1166,12 +1165,12 @@ bool dds_rhc_store
|
|||
*/
|
||||
if (!has_data && !is_dispose)
|
||||
{
|
||||
TRACE ((" disp/unreg on unknown instance"));
|
||||
DDS_TRACE(" disp/unreg on unknown instance");
|
||||
goto error_or_nochange;
|
||||
}
|
||||
else
|
||||
{
|
||||
TRACE ((" new instance"));
|
||||
DDS_TRACE(" new instance");
|
||||
stored = rhc_store_new_instance (&post, rhc, pwr_info, sample, tk, has_data, &cb_data);
|
||||
if (stored != RHC_STORED)
|
||||
{
|
||||
|
@ -1187,7 +1186,7 @@ bool dds_rhc_store
|
|||
will raise a SAMPLE_REJECTED, and indicate that the system should
|
||||
kill itself.) Not letting instances go to ALIVE or NEW based on
|
||||
a rejected sample - (no one knows, it seemed) */
|
||||
TRACE ((" instance rejects sample"));
|
||||
DDS_TRACE(" instance rejects sample");
|
||||
|
||||
|
||||
get_trigger_info (&pre, inst, true);
|
||||
|
@ -1217,7 +1216,7 @@ bool dds_rhc_store
|
|||
{
|
||||
get_trigger_info (&pre, inst, true);
|
||||
|
||||
TRACE ((" wc %"PRIu32, inst->wrcount));
|
||||
DDS_TRACE(" wc %"PRIu32, inst->wrcount);
|
||||
|
||||
if (has_data || is_dispose)
|
||||
{
|
||||
|
@ -1245,7 +1244,7 @@ bool dds_rhc_store
|
|||
/* Sample arriving for a NOT_ALIVE instance => view state NEW */
|
||||
if (has_data && not_alive)
|
||||
{
|
||||
TRACE ((" notalive->alive"));
|
||||
DDS_TRACE(" notalive->alive");
|
||||
inst->isnew = 1;
|
||||
}
|
||||
|
||||
|
@ -1258,7 +1257,7 @@ bool dds_rhc_store
|
|||
and the operation is WD. */
|
||||
if (has_data && inst->isdisposed)
|
||||
{
|
||||
TRACE ((" disposed->notdisposed"));
|
||||
DDS_TRACE(" disposed->notdisposed");
|
||||
inst->isdisposed = 0;
|
||||
inst->disposed_gen++;
|
||||
}
|
||||
|
@ -1266,17 +1265,17 @@ bool dds_rhc_store
|
|||
{
|
||||
inst->isdisposed = 1;
|
||||
inst_became_disposed = !old_isdisposed;
|
||||
TRACE ((" dispose(%d)", inst_became_disposed));
|
||||
DDS_TRACE(" dispose(%d)", inst_became_disposed);
|
||||
}
|
||||
|
||||
/* Only need to add a sample to the history if the input actually
|
||||
is a sample. */
|
||||
if (has_data)
|
||||
{
|
||||
TRACE ((" add_sample"));
|
||||
DDS_TRACE(" add_sample");
|
||||
if (! add_sample (rhc, inst, pwr_info, sample, &cb_data))
|
||||
{
|
||||
TRACE (("(reject)"));
|
||||
DDS_TRACE("(reject)");
|
||||
stored = RHC_REJECTED;
|
||||
goto error_or_nochange;
|
||||
}
|
||||
|
@ -1338,7 +1337,7 @@ bool dds_rhc_store
|
|||
}
|
||||
}
|
||||
|
||||
TRACE ((")\n"));
|
||||
DDS_TRACE(")\n");
|
||||
|
||||
/* do not send data available notification when an instance is dropped */
|
||||
if ((post.qminst == ~0u) && (post.has_read == 0) && (post.has_not_read == 0) && (post.has_changed == false))
|
||||
|
@ -1377,7 +1376,7 @@ error_or_nochange:
|
|||
}
|
||||
|
||||
os_mutexUnlock (&rhc->lock);
|
||||
TRACE ((")\n"));
|
||||
DDS_TRACE(")\n");
|
||||
|
||||
/* Make any reader status callback */
|
||||
|
||||
|
@ -1411,7 +1410,7 @@ void dds_rhc_unregister_wr
|
|||
const int auto_dispose = pwr_info->auto_dispose;
|
||||
|
||||
os_mutexLock (&rhc->lock);
|
||||
TRACE (("rhc_unregister_wr_iid(%"PRIx64",%d:\n", wr_iid, auto_dispose));
|
||||
DDS_TRACE("rhc_unregister_wr_iid(%"PRIx64",%d:\n", wr_iid, auto_dispose);
|
||||
for (inst = ut_hhIterFirst (rhc->instances, &iter); inst; inst = ut_hhIterNext (&iter))
|
||||
{
|
||||
if ((inst->wr_iid_islive && inst->wr_iid == wr_iid) || lwregs_contains (&rhc->registrations, inst->iid, wr_iid))
|
||||
|
@ -1419,7 +1418,7 @@ void dds_rhc_unregister_wr
|
|||
struct trigger_info pre, post;
|
||||
get_trigger_info (&pre, inst, true);
|
||||
|
||||
TRACE ((" %"PRIx64":", inst->iid));
|
||||
DDS_TRACE(" %"PRIx64":", inst->iid);
|
||||
|
||||
assert (inst->wrcount > 0);
|
||||
if (auto_dispose && !inst->isdisposed)
|
||||
|
@ -1445,7 +1444,7 @@ void dds_rhc_unregister_wr
|
|||
|
||||
dds_rhc_unregister (&post, rhc, inst, pwr_info, inst->tstamp);
|
||||
|
||||
TRACE (("\n"));
|
||||
DDS_TRACE("\n");
|
||||
|
||||
if (trigger_info_differs (&pre, &post))
|
||||
{
|
||||
|
@ -1458,7 +1457,7 @@ void dds_rhc_unregister_wr
|
|||
assert (rhc_check_counts_locked (rhc, true));
|
||||
}
|
||||
}
|
||||
TRACE ((")\n"));
|
||||
DDS_TRACE(")\n");
|
||||
os_mutexUnlock (&rhc->lock);
|
||||
|
||||
if (trigger_waitsets)
|
||||
|
@ -1472,7 +1471,7 @@ void dds_rhc_relinquish_ownership (struct rhc * __restrict rhc, const uint64_t w
|
|||
struct rhc_instance *inst;
|
||||
struct ut_hhIter iter;
|
||||
os_mutexLock (&rhc->lock);
|
||||
TRACE (("rhc_relinquish_ownership(%"PRIx64":\n", wr_iid));
|
||||
DDS_TRACE("rhc_relinquish_ownership(%"PRIx64":\n", wr_iid);
|
||||
for (inst = ut_hhIterFirst (rhc->instances, &iter); inst; inst = ut_hhIterNext (&iter))
|
||||
{
|
||||
if (inst->wr_iid_islive && inst->wr_iid == wr_iid)
|
||||
|
@ -1480,7 +1479,7 @@ void dds_rhc_relinquish_ownership (struct rhc * __restrict rhc, const uint64_t w
|
|||
inst->wr_iid_islive = 0;
|
||||
}
|
||||
}
|
||||
TRACE ((")\n"));
|
||||
DDS_TRACE(")\n");
|
||||
assert (rhc_check_counts_locked (rhc, true));
|
||||
os_mutexUnlock (&rhc->lock);
|
||||
}
|
||||
|
@ -1636,11 +1635,11 @@ static int dds_rhc_read_w_qminv
|
|||
os_mutexLock (&rhc->lock);
|
||||
}
|
||||
|
||||
TRACE (("read_w_qminv(%p,%p,%p,%u,%x) - inst %u nonempty %u disp %u nowr %u new %u samples %u+%u read %u+%u\n",
|
||||
DDS_TRACE("read_w_qminv(%p,%p,%p,%u,%x) - inst %u nonempty %u disp %u nowr %u new %u samples %u+%u read %u+%u\n",
|
||||
(void *) rhc, (void *) values, (void *) info_seq, max_samples, qminv,
|
||||
rhc->n_instances, rhc->n_nonempty_instances, rhc->n_not_alive_disposed,
|
||||
rhc->n_not_alive_no_writers, rhc->n_new, rhc->n_vsamples, rhc->n_invsamples,
|
||||
rhc->n_vread, rhc->n_invread));
|
||||
rhc->n_vread, rhc->n_invread);
|
||||
|
||||
if (rhc->nonempty_instances)
|
||||
{
|
||||
|
@ -1674,7 +1673,7 @@ static int dds_rhc_read_w_qminv
|
|||
{
|
||||
if (!sample->isread)
|
||||
{
|
||||
TRACE (("s"));
|
||||
DDS_TRACE("s");
|
||||
sample->isread = true;
|
||||
inst->nvread++;
|
||||
rhc->n_vread++;
|
||||
|
@ -1735,7 +1734,7 @@ static int dds_rhc_read_w_qminv
|
|||
}
|
||||
while (inst != end && n < max_samples);
|
||||
}
|
||||
TRACE (("read: returning %u\n", n));
|
||||
DDS_TRACE("read: returning %u\n", n);
|
||||
assert (rhc_check_counts_locked (rhc, true));
|
||||
os_mutexUnlock (&rhc->lock);
|
||||
|
||||
|
@ -1763,11 +1762,11 @@ static int dds_rhc_take_w_qminv
|
|||
os_mutexLock (&rhc->lock);
|
||||
}
|
||||
|
||||
TRACE (("take_w_qminv(%p,%p,%p,%u,%x) - inst %u nonempty %u disp %u nowr %u new %u samples %u+%u read %u+%u\n",
|
||||
DDS_TRACE("take_w_qminv(%p,%p,%p,%u,%x) - inst %u nonempty %u disp %u nowr %u new %u samples %u+%u read %u+%u\n",
|
||||
(void*) rhc, (void*) values, (void*) info_seq, max_samples, qminv,
|
||||
rhc->n_instances, rhc->n_nonempty_instances, rhc->n_not_alive_disposed,
|
||||
rhc->n_not_alive_no_writers, rhc->n_new, rhc->n_vsamples,
|
||||
rhc->n_invsamples, rhc->n_vread, rhc->n_invread));
|
||||
rhc->n_invsamples, rhc->n_vread, rhc->n_invread);
|
||||
|
||||
if (rhc->nonempty_instances)
|
||||
{
|
||||
|
@ -1877,7 +1876,7 @@ static int dds_rhc_take_w_qminv
|
|||
}
|
||||
if (inst->wrcount == 0)
|
||||
{
|
||||
TRACE (("take: iid %"PRIx64" #0,empty,drop\n", iid));
|
||||
DDS_TRACE("take: iid %"PRIx64" #0,empty,drop\n", iid);
|
||||
if (!inst->isdisposed)
|
||||
{
|
||||
/* disposed has priority over no writers (why not just 2 bits?) */
|
||||
|
@ -1899,7 +1898,7 @@ static int dds_rhc_take_w_qminv
|
|||
inst = inst1;
|
||||
}
|
||||
}
|
||||
TRACE (("take: returning %u\n", n));
|
||||
DDS_TRACE("take: returning %u\n", n);
|
||||
assert (rhc_check_counts_locked (rhc, true));
|
||||
os_mutexUnlock (&rhc->lock);
|
||||
|
||||
|
@ -1928,11 +1927,11 @@ static int dds_rhc_takecdr_w_qminv
|
|||
os_mutexLock (&rhc->lock);
|
||||
}
|
||||
|
||||
TRACE (("take_w_qminv(%p,%p,%p,%u,%x) - inst %u nonempty %u disp %u nowr %u new %u samples %u+%u read %u+%u\n",
|
||||
DDS_TRACE("take_w_qminv(%p,%p,%p,%u,%x) - inst %u nonempty %u disp %u nowr %u new %u samples %u+%u read %u+%u\n",
|
||||
(void*) rhc, (void*) values, (void*) info_seq, max_samples, qminv,
|
||||
rhc->n_instances, rhc->n_nonempty_instances, rhc->n_not_alive_disposed,
|
||||
rhc->n_not_alive_no_writers, rhc->n_new, rhc->n_vsamples,
|
||||
rhc->n_invsamples, rhc->n_vread, rhc->n_invread));
|
||||
rhc->n_invsamples, rhc->n_vread, rhc->n_invread);
|
||||
|
||||
if (rhc->nonempty_instances)
|
||||
{
|
||||
|
@ -2028,7 +2027,7 @@ static int dds_rhc_takecdr_w_qminv
|
|||
}
|
||||
if (inst->wrcount == 0)
|
||||
{
|
||||
TRACE (("take: iid %"PRIx64" #0,empty,drop\n", iid));
|
||||
DDS_TRACE("take: iid %"PRIx64" #0,empty,drop\n", iid);
|
||||
if (!inst->isdisposed)
|
||||
{
|
||||
/* disposed has priority over no writers (why not just 2 bits?) */
|
||||
|
@ -2050,7 +2049,7 @@ static int dds_rhc_takecdr_w_qminv
|
|||
inst = inst1;
|
||||
}
|
||||
}
|
||||
TRACE (("take: returning %u\n", n));
|
||||
DDS_TRACE("take: returning %u\n", n);
|
||||
assert (rhc_check_counts_locked (rhc, true));
|
||||
os_mutexUnlock (&rhc->lock);
|
||||
|
||||
|
@ -2084,7 +2083,7 @@ static uint32_t rhc_get_cond_trigger (struct rhc_instance * const inst, const dd
|
|||
m = m && !INST_IS_EMPTY (inst);
|
||||
break;
|
||||
default:
|
||||
NN_FATAL ("update_readconditions: sample_states invalid: %x\n", c->m_sample_states);
|
||||
DDS_FATAL("update_readconditions: sample_states invalid: %x\n", c->m_sample_states);
|
||||
}
|
||||
return m ? 1 : 0;
|
||||
}
|
||||
|
@ -2118,9 +2117,9 @@ void dds_rhc_add_readcondition (dds_readcond * cond)
|
|||
rhc->nconds++;
|
||||
rhc->conds = cond;
|
||||
|
||||
TRACE (("add_readcondition(%p, %x, %x, %x) => %p qminv %x ; rhc %u conds\n",
|
||||
DDS_TRACE("add_readcondition(%p, %x, %x, %x) => %p qminv %x ; rhc %u conds\n",
|
||||
(void *) rhc, cond->m_sample_states, cond->m_view_states,
|
||||
cond->m_instance_states, cond, cond->m_qminv, rhc->nconds));
|
||||
cond->m_instance_states, cond, cond->m_qminv, rhc->nconds);
|
||||
|
||||
os_mutexUnlock (&rhc->conds_lock);
|
||||
os_mutexUnlock (&rhc->lock);
|
||||
|
@ -2172,9 +2171,9 @@ static bool update_conditions_locked
|
|||
const struct dds_topic_descriptor *desc = rhc->topic->status_cb_entity->m_descriptor;
|
||||
char *tmp = NULL;
|
||||
|
||||
TRACE (("update_conditions_locked(%p) - inst %u nonempty %u disp %u nowr %u new %u samples %u read %u\n",
|
||||
DDS_TRACE("update_conditions_locked(%p) - inst %u nonempty %u disp %u nowr %u new %u samples %u read %u\n",
|
||||
(void *) rhc, rhc->n_instances, rhc->n_nonempty_instances, rhc->n_not_alive_disposed,
|
||||
rhc->n_not_alive_no_writers, rhc->n_new, rhc->n_vsamples, rhc->n_vread));
|
||||
rhc->n_not_alive_no_writers, rhc->n_new, rhc->n_vsamples, rhc->n_vread);
|
||||
|
||||
assert (rhc->n_nonempty_instances >= rhc->n_not_alive_disposed + rhc->n_not_alive_no_writers);
|
||||
assert (rhc->n_nonempty_instances >= rhc->n_new);
|
||||
|
@ -2203,13 +2202,13 @@ static bool update_conditions_locked
|
|||
m_post = m_post && (post->has_read + post->has_not_read);
|
||||
break;
|
||||
default:
|
||||
NN_FATAL ("update_readconditions: sample_states invalid: %x\n", iter->m_sample_states);
|
||||
DDS_FATAL("update_readconditions: sample_states invalid: %x\n", iter->m_sample_states);
|
||||
}
|
||||
|
||||
TRACE ((" cond %p: ", (void *) iter));
|
||||
DDS_TRACE(" cond %p: ", (void *) iter);
|
||||
if (m_pre == m_post)
|
||||
{
|
||||
TRACE (("no change"));
|
||||
DDS_TRACE("no change");
|
||||
}
|
||||
else if (m_pre < m_post)
|
||||
{
|
||||
|
@ -2226,27 +2225,27 @@ static bool update_conditions_locked
|
|||
|| (iter->m_query.m_filter != NULL && iter->m_query.m_filter (tmp))
|
||||
)
|
||||
{
|
||||
TRACE (("now matches"));
|
||||
DDS_TRACE("now matches");
|
||||
if (iter->m_entity.m_trigger++ == 0)
|
||||
{
|
||||
TRACE ((" (cond now triggers)"));
|
||||
DDS_TRACE(" (cond now triggers)");
|
||||
trigger = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
TRACE (("no longer matches"));
|
||||
DDS_TRACE("no longer matches");
|
||||
if (--iter->m_entity.m_trigger == 0)
|
||||
{
|
||||
TRACE ((" (cond no longer triggers)"));
|
||||
DDS_TRACE(" (cond no longer triggers)");
|
||||
}
|
||||
}
|
||||
if (iter->m_entity.m_trigger) {
|
||||
dds_entity_status_signal(&(iter->m_entity));
|
||||
}
|
||||
|
||||
TRACE (("\n"));
|
||||
DDS_TRACE("\n");
|
||||
iter = iter->m_rhc_next;
|
||||
}
|
||||
|
||||
|
|
|
@ -165,7 +165,7 @@ size_t dds_stream_check_optimize (_In_ const dds_topic_descriptor_t * desc)
|
|||
dds_sample_free_contents (sample, desc->m_ops);
|
||||
dds_free (sample);
|
||||
dds_stream_fini (&os);
|
||||
dds_log_info ("Marshalling for type: %s is%s optimised\n", desc->m_typename, size ? "" : " not");
|
||||
DDS_INFO("Marshalling for type: %s is%s optimised\n", desc->m_typename, size ? "" : " not");
|
||||
return size;
|
||||
}
|
||||
|
||||
|
@ -490,7 +490,7 @@ static void dds_stream_write
|
|||
{
|
||||
type = DDS_OP_TYPE (op);
|
||||
#ifdef OP_DEBUG_WRITE
|
||||
TRACE (("W-ADR: %s offset %d\n", stream_op_type[type], ops[1]));
|
||||
DDS_TRACE("W-ADR: %s offset %d\n", stream_op_type[type], ops[1]);
|
||||
#endif
|
||||
addr = data + ops[1];
|
||||
ops += 2;
|
||||
|
@ -519,7 +519,7 @@ static void dds_stream_write
|
|||
case DDS_OP_VAL_STR:
|
||||
{
|
||||
#ifdef OP_DEBUG_WRITE
|
||||
TRACE (("W-STR: %s\n", *((char**) addr)));
|
||||
DDS_TRACE("W-STR: %s\n", *((char**) addr));
|
||||
#endif
|
||||
dds_stream_write_string (os, *((char**) addr));
|
||||
break;
|
||||
|
@ -531,7 +531,7 @@ static void dds_stream_write
|
|||
num = seq->_length;
|
||||
|
||||
#ifdef OP_DEBUG_WRITE
|
||||
TRACE (("W-SEQ: %s <%d>\n", stream_op_type[subtype], num));
|
||||
DDS_TRACE("W-SEQ: %s <%d>\n", stream_op_type[subtype], num);
|
||||
#endif
|
||||
DDS_OS_PUT4 (os, num, uint32_t);
|
||||
if (num || (subtype > DDS_OP_VAL_STR))
|
||||
|
@ -558,7 +558,7 @@ static void dds_stream_write
|
|||
while (num--)
|
||||
{
|
||||
#ifdef OP_DEBUG_WRITE
|
||||
TRACE (("W-SEQ STR: %s\n", *ptr));
|
||||
DDS_TRACE("W-SEQ STR: %s\n", *ptr);
|
||||
#endif
|
||||
dds_stream_write_string (os, *ptr);
|
||||
ptr++;
|
||||
|
@ -572,7 +572,7 @@ static void dds_stream_write
|
|||
while (num--)
|
||||
{
|
||||
#ifdef OP_DEBUG_WRITE
|
||||
TRACE (("W-SEQ BST[%d]: %s\n", align, ptr));
|
||||
DDS_TRACE("W-SEQ BST[%d]: %s\n", align, ptr);
|
||||
#endif
|
||||
dds_stream_write_string (os, ptr);
|
||||
ptr += align;
|
||||
|
@ -603,7 +603,7 @@ static void dds_stream_write
|
|||
num = *ops++;
|
||||
|
||||
#ifdef OP_DEBUG_WRITE
|
||||
TRACE (("W-ARR: %s [%d]\n", stream_op_type[subtype], num));
|
||||
DDS_TRACE("W-ARR: %s [%d]\n", stream_op_type[subtype], num);
|
||||
#endif
|
||||
switch (subtype)
|
||||
{
|
||||
|
@ -693,7 +693,7 @@ static void dds_stream_write
|
|||
default: assert (0);
|
||||
}
|
||||
#ifdef OP_DEBUG_WRITE
|
||||
TRACE (("W-UNI: switch %s case %d/%d\n", stream_op_type[subtype], disc, num));
|
||||
DDS_TRACE("W-UNI: switch %s case %d/%d\n", stream_op_type[subtype], disc, num);
|
||||
#endif
|
||||
|
||||
/* Write case matching discriminant */
|
||||
|
@ -710,7 +710,7 @@ static void dds_stream_write
|
|||
addr = data + jeq_op[2];
|
||||
|
||||
#ifdef OP_DEBUG_WRITE
|
||||
TRACE (("W-UNI: case type %s\n", stream_op_type[subtype]));
|
||||
DDS_TRACE("W-UNI: case type %s\n", stream_op_type[subtype]);
|
||||
#endif
|
||||
switch (subtype)
|
||||
{
|
||||
|
@ -753,7 +753,7 @@ static void dds_stream_write
|
|||
case DDS_OP_VAL_BST:
|
||||
{
|
||||
#ifdef OP_DEBUG_WRITE
|
||||
TRACE (("W-BST: %s\n", (char*) addr));
|
||||
DDS_TRACE("W-BST: %s\n", (char*) addr);
|
||||
#endif
|
||||
dds_stream_write_string (os, (char*) addr);
|
||||
ops++;
|
||||
|
@ -766,7 +766,7 @@ static void dds_stream_write
|
|||
case DDS_OP_JSR: /* Implies nested type */
|
||||
{
|
||||
#ifdef OP_DEBUG_WRITE
|
||||
TRACE (("W-JSR: %d\n", DDS_OP_JUMP (op)));
|
||||
DDS_TRACE("W-JSR: %d\n", DDS_OP_JUMP (op));
|
||||
#endif
|
||||
dds_stream_write (os, data, ops + DDS_OP_JUMP (op));
|
||||
ops++;
|
||||
|
@ -776,7 +776,7 @@ static void dds_stream_write
|
|||
}
|
||||
}
|
||||
#ifdef OP_DEBUG_WRITE
|
||||
TRACE (("W-RTS:\n"));
|
||||
DDS_TRACE("W-RTS:\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -797,7 +797,7 @@ static void dds_stream_read (dds_stream_t * is, char * data, const uint32_t * op
|
|||
{
|
||||
type = DDS_OP_TYPE (op);
|
||||
#ifdef OP_DEBUG_READ
|
||||
TRACE (("R-ADR: %s offset %d\n", stream_op_type[type], ops[1]));
|
||||
DDS_TRACE("R-ADR: %s offset %d\n", stream_op_type[type], ops[1]);
|
||||
#endif
|
||||
addr = data + ops[1];
|
||||
ops += 2;
|
||||
|
@ -826,7 +826,7 @@ static void dds_stream_read (dds_stream_t * is, char * data, const uint32_t * op
|
|||
case DDS_OP_VAL_STR:
|
||||
{
|
||||
#ifdef OP_DEBUG_READ
|
||||
TRACE (("R-STR: @ %p\n", addr));
|
||||
DDS_TRACE("R-STR: @ %p\n", addr);
|
||||
#endif
|
||||
*(char**) addr = dds_stream_reuse_string (is, *((char**) addr), 0);
|
||||
break;
|
||||
|
@ -838,7 +838,7 @@ static void dds_stream_read (dds_stream_t * is, char * data, const uint32_t * op
|
|||
num = dds_stream_read_uint32 (is);
|
||||
|
||||
#ifdef OP_DEBUG_READ
|
||||
TRACE (("R-SEQ: %s <%d>\n", stream_op_type[subtype], num));
|
||||
DDS_TRACE("R-SEQ: %s <%d>\n", stream_op_type[subtype], num);
|
||||
#endif
|
||||
/* Maintain max sequence length (may not have been set by caller) */
|
||||
|
||||
|
@ -987,7 +987,7 @@ static void dds_stream_read (dds_stream_t * is, char * data, const uint32_t * op
|
|||
num = *ops++;
|
||||
|
||||
#ifdef OP_DEBUG_READ
|
||||
TRACE (("R-ARR: %s [%d]\n", stream_op_type[subtype], num));
|
||||
DDS_TRACE("R-ARR: %s [%d]\n", stream_op_type[subtype], num);
|
||||
#endif
|
||||
switch (subtype)
|
||||
{
|
||||
|
@ -1080,7 +1080,7 @@ static void dds_stream_read (dds_stream_t * is, char * data, const uint32_t * op
|
|||
}
|
||||
|
||||
#ifdef OP_DEBUG_READ
|
||||
TRACE (("R-UNI: switch %s case %d/%d\n", stream_op_type[subtype], disc, num));
|
||||
DDS_TRACE("R-UNI: switch %s case %d/%d\n", stream_op_type[subtype], disc, num);
|
||||
#endif
|
||||
|
||||
/* Read case matching discriminant */
|
||||
|
@ -1094,7 +1094,7 @@ static void dds_stream_read (dds_stream_t * is, char * data, const uint32_t * op
|
|||
addr = data + jeq_op[2];
|
||||
|
||||
#ifdef OP_DEBUG_READ
|
||||
TRACE (("R-UNI: case type %s\n", stream_op_type[subtype]));
|
||||
DDS_TRACE("R-UNI: case type %s\n", stream_op_type[subtype]);
|
||||
#endif
|
||||
switch (subtype)
|
||||
{
|
||||
|
@ -1142,7 +1142,7 @@ static void dds_stream_read (dds_stream_t * is, char * data, const uint32_t * op
|
|||
case DDS_OP_VAL_BST:
|
||||
{
|
||||
#ifdef OP_DEBUG_READ
|
||||
TRACE (("R-BST: @ %p\n", addr));
|
||||
DDS_TRACE("R-BST: @ %p\n", addr);
|
||||
#endif
|
||||
dds_stream_reuse_string (is, (char*) addr, *ops);
|
||||
ops++;
|
||||
|
@ -1155,7 +1155,7 @@ static void dds_stream_read (dds_stream_t * is, char * data, const uint32_t * op
|
|||
case DDS_OP_JSR: /* Implies nested type */
|
||||
{
|
||||
#ifdef OP_DEBUG_READ
|
||||
TRACE (("R-JSR: %d\n", DDS_OP_JUMP (op)));
|
||||
DDS_TRACE("R-JSR: %d\n", DDS_OP_JUMP (op));
|
||||
#endif
|
||||
dds_stream_read (is, data, ops + DDS_OP_JUMP (op));
|
||||
ops++;
|
||||
|
@ -1165,7 +1165,7 @@ static void dds_stream_read (dds_stream_t * is, char * data, const uint32_t * op
|
|||
}
|
||||
}
|
||||
#ifdef OP_DEBUG_READ
|
||||
TRACE (("R-RTS:\n"));
|
||||
DDS_TRACE("R-RTS:\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -1304,7 +1304,7 @@ uint32_t dds_stream_extract_key (dds_stream_t *is, dds_stream_t *os, const uint3
|
|||
#ifdef OP_DEBUG_KEY
|
||||
if (is_key)
|
||||
{
|
||||
TRACE (("K-ADR: %s\n", stream_op_type[type]));
|
||||
DDS_TRACE("K-ADR: %s\n", stream_op_type[type]);
|
||||
}
|
||||
#endif
|
||||
switch (type)
|
||||
|
@ -1347,7 +1347,7 @@ uint32_t dds_stream_extract_key (dds_stream_t *is, dds_stream_t *os, const uint3
|
|||
DDS_OS_PUT4 (os, len, uint32_t);
|
||||
DDS_OS_PUT_BYTES(os, DDS_CDR_ADDRESS (is, void), len);
|
||||
#ifdef OP_DEBUG_KEY
|
||||
TRACE (("K-ADR: String/BString (%d)\n", len));
|
||||
DDS_TRACE("K-ADR: String/BString (%d)\n", len);
|
||||
#endif
|
||||
}
|
||||
is->m_index += len;
|
||||
|
@ -1417,7 +1417,7 @@ uint32_t dds_stream_extract_key (dds_stream_t *is, dds_stream_t *os, const uint3
|
|||
#ifdef OP_DEBUG_KEY
|
||||
if (is_key)
|
||||
{
|
||||
TRACE (("K-ADR: %s[%d]\n", stream_op_type[subtype], num));
|
||||
DDS_TRACE("K-ADR: %s[%d]\n", stream_op_type[subtype], num);
|
||||
}
|
||||
#endif
|
||||
switch (subtype)
|
||||
|
@ -1479,7 +1479,7 @@ uint32_t dds_stream_extract_key (dds_stream_t *is, dds_stream_t *os, const uint3
|
|||
assert (! is_key);
|
||||
|
||||
#ifdef OP_DEBUG_KEY
|
||||
TRACE (("K-UNI: switch %s cases %d\n", stream_op_type[subtype], num));
|
||||
DDS_TRACE("K-UNI: switch %s cases %d\n", stream_op_type[subtype], num);
|
||||
#endif
|
||||
/* Read discriminant */
|
||||
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
#include "dds__qos.h"
|
||||
#include "dds__err.h"
|
||||
#include "ddsi/q_entity.h"
|
||||
#include "dds__report.h"
|
||||
#include "ddsc/ddsc_project.h"
|
||||
|
||||
#define DDS_SUBSCRIBER_STATUS_MASK \
|
||||
|
@ -28,7 +27,8 @@ dds_subscriber_instance_hdl(
|
|||
(void)e;
|
||||
(void)i;
|
||||
/* TODO: Get/generate proper handle. */
|
||||
return DDS_ERRNO(DDS_RETCODE_UNSUPPORTED, "Generating subscriber instance handle is not supported");
|
||||
DDS_ERROR("Generating subscriber instance handle is not supported");
|
||||
return DDS_ERRNO(DDS_RETCODE_UNSUPPORTED);
|
||||
}
|
||||
|
||||
static dds_return_t
|
||||
|
@ -41,20 +41,25 @@ dds__subscriber_qos_validate(
|
|||
assert(qos);
|
||||
|
||||
if((qos->present & QP_GROUP_DATA) && !validate_octetseq(&qos->group_data)) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY, "Group data policy is inconsistent and caused an error");
|
||||
DDS_ERROR("Group data policy is inconsistent and caused an error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY);
|
||||
}
|
||||
if((qos->present & QP_PARTITION) && !validate_stringseq(&qos->partition)) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY, "Partition policy is inconsistent and caused an error");
|
||||
DDS_ERROR("Partition policy is inconsistent and caused an error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY);
|
||||
}
|
||||
if((qos->present & QP_PRESENTATION) && validate_presentation_qospolicy(&qos->presentation)) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY, "Presentation policy is inconsistent and caused an error");
|
||||
DDS_ERROR("Presentation policy is inconsistent and caused an error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY);
|
||||
}
|
||||
if((qos->present & QP_PRISMTECH_ENTITY_FACTORY) && !validate_entityfactory_qospolicy(&qos->entity_factory)) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY, "Prismtech entity factory policy is inconsistent and caused an error");
|
||||
DDS_ERROR("Prismtech entity factory policy is inconsistent and caused an error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY);
|
||||
}
|
||||
if(ret == DDS_RETCODE_OK && enabled && (qos->present & QP_PRESENTATION)) {
|
||||
/* TODO: Improve/check immutable check. */
|
||||
ret = DDS_ERRNO(DDS_RETCODE_IMMUTABLE_POLICY, "Presentation QoS policy is immutable");
|
||||
DDS_ERROR("Presentation QoS policy is immutable\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_IMMUTABLE_POLICY);
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
@ -71,7 +76,8 @@ dds_subscriber_qos_set(
|
|||
if (ret == DDS_RETCODE_OK) {
|
||||
if (enabled) {
|
||||
/* TODO: CHAM-95: DDSI does not support changing QoS policies. */
|
||||
ret = DDS_ERRNO(DDS_RETCODE_UNSUPPORTED, DDSC_PROJECT_NAME" does not support changing QoS policies yet");
|
||||
DDS_ERROR(DDSC_PROJECT_NAME" does not support changing QoS policies yet\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_UNSUPPORTED);
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
|
@ -81,9 +87,14 @@ static dds_return_t
|
|||
dds_subscriber_status_validate(
|
||||
uint32_t mask)
|
||||
{
|
||||
return (mask & ~(DDS_SUBSCRIBER_STATUS_MASK)) ?
|
||||
DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Invalid status mask") :
|
||||
DDS_RETCODE_OK;
|
||||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
|
||||
if (mask & ~(DDS_SUBSCRIBER_STATUS_MASK)) {
|
||||
DDS_ERROR("Invalid status mask\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -159,18 +170,16 @@ dds_create_subscriber(
|
|||
dds_entity_t hdl;
|
||||
dds__retcode_t errnr;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
errnr = dds_entity_lock(participant, DDS_KIND_PARTICIPANT, &par);
|
||||
if (errnr != DDS_RETCODE_OK) {
|
||||
hdl = DDS_ERRNO(errnr, "Error occurred on locking participant");
|
||||
DDS_ERROR("Error occurred on locking participant\n");
|
||||
hdl = DDS_ERRNO(errnr);
|
||||
return hdl;
|
||||
}
|
||||
|
||||
hdl = dds__create_subscriber_l(par, qos, listener);
|
||||
dds_entity_unlock(par);
|
||||
|
||||
DDS_REPORT_FLUSH(hdl <= 0);
|
||||
return hdl;
|
||||
}
|
||||
|
||||
|
@ -184,12 +193,11 @@ dds_notify_readers(
|
|||
dds__retcode_t errnr;
|
||||
dds_return_t ret;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
errnr = dds_entity_lock(subscriber, DDS_KIND_SUBSCRIBER, &sub);
|
||||
if (errnr == DDS_RETCODE_OK) {
|
||||
errnr = DDS_RETCODE_UNSUPPORTED;
|
||||
ret = DDS_ERRNO(errnr, "Unsupported operation");
|
||||
DDS_ERROR("Unsupported operation\n");
|
||||
ret = DDS_ERRNO(errnr);
|
||||
iter = sub->m_children;
|
||||
while (iter) {
|
||||
os_mutexLock(&iter->m_mutex);
|
||||
|
@ -199,10 +207,10 @@ dds_notify_readers(
|
|||
}
|
||||
dds_entity_unlock(sub);
|
||||
} else {
|
||||
ret = DDS_ERRNO(errnr, "Error occurred on locking subscriber");
|
||||
DDS_ERROR("Error occurred on locking subscriber\n");
|
||||
ret = DDS_ERRNO(errnr);
|
||||
}
|
||||
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -212,7 +220,8 @@ dds_subscriber_begin_coherent(
|
|||
{
|
||||
/* TODO: CHAM-124 Currently unsupported. */
|
||||
(void)e;
|
||||
return DDS_ERRNO(DDS_RETCODE_UNSUPPORTED, "Using coherency to get a coherent data set is not currently being supported");
|
||||
DDS_ERROR("Using coherency to get a coherent data set is not currently being supported\n");
|
||||
return DDS_ERRNO(DDS_RETCODE_UNSUPPORTED);
|
||||
}
|
||||
|
||||
dds_return_t
|
||||
|
@ -221,6 +230,7 @@ dds_subscriber_end_coherent(
|
|||
{
|
||||
/* TODO: CHAM-124 Currently unsupported. */
|
||||
(void)e;
|
||||
return DDS_ERRNO(DDS_RETCODE_UNSUPPORTED, "Using coherency to get a coherent data set is not currently being supported");
|
||||
DDS_ERROR("Using coherency to get a coherent data set is not currently being supported\n");
|
||||
return DDS_ERRNO(DDS_RETCODE_UNSUPPORTED);
|
||||
}
|
||||
|
||||
|
|
|
@ -234,7 +234,7 @@ retry:
|
|||
|
||||
if (tk && rd)
|
||||
{
|
||||
TRACE (("tk=%p iid=%"PRIx64" ", &tk, tk->m_iid));
|
||||
DDS_TRACE("tk=%p iid=%"PRIx64" ", &tk, tk->m_iid);
|
||||
}
|
||||
return tk;
|
||||
}
|
||||
|
|
|
@ -24,7 +24,6 @@
|
|||
#include "ddsi/ddsi_sertopic.h"
|
||||
#include "ddsi/q_ddsi_discovery.h"
|
||||
#include "os/os_atomics.h"
|
||||
#include "dds__report.h"
|
||||
#include "dds__iid.h"
|
||||
|
||||
#define DDS_TOPIC_STATUS_MASK \
|
||||
|
@ -82,9 +81,14 @@ static dds_return_t
|
|||
dds_topic_status_validate(
|
||||
uint32_t mask)
|
||||
{
|
||||
return (mask & ~(DDS_TOPIC_STATUS_MASK)) ?
|
||||
DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Argument mask is invalid") :
|
||||
DDS_RETCODE_OK;
|
||||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
|
||||
if (mask & ~(DDS_TOPIC_STATUS_MASK)) {
|
||||
DDS_ERROR("Argument mask is invalid\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -99,11 +103,7 @@ dds_topic_status_cb(
|
|||
dds_topic *topic;
|
||||
dds__retcode_t rc;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (dds_topic_lock(((dds_entity*)cb_t)->m_hdl, &topic) != DDS_RETCODE_OK) {
|
||||
/* There's a deletion or closing going on. */
|
||||
DDS_REPORT_FLUSH(false);
|
||||
return;
|
||||
}
|
||||
assert(topic == cb_t);
|
||||
|
@ -147,8 +147,6 @@ dds_topic_status_cb(
|
|||
} else {
|
||||
/* Something went wrong up the hierarchy. */
|
||||
}
|
||||
|
||||
DDS_REPORT_FLUSH(rc != DDS_RETCODE_OK);
|
||||
}
|
||||
|
||||
struct ddsi_sertopic *
|
||||
|
@ -225,8 +223,6 @@ dds_find_topic(
|
|||
struct ddsi_sertopic *st;
|
||||
dds__retcode_t rc;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (name) {
|
||||
rc = dds_entity_lock(participant, DDS_KIND_PARTICIPANT, &p);
|
||||
if (rc == DDS_RETCODE_OK) {
|
||||
|
@ -236,17 +232,20 @@ dds_find_topic(
|
|||
dds_entity_add_ref (&st->status_cb_entity->m_entity);
|
||||
tp = st->status_cb_entity->m_entity.m_hdl;
|
||||
} else {
|
||||
tp = DDS_ERRNO(DDS_RETCODE_PRECONDITION_NOT_MET, "Topic is not being created yet");
|
||||
DDS_ERROR("Topic is not being created yet\n");
|
||||
tp = DDS_ERRNO(DDS_RETCODE_PRECONDITION_NOT_MET);
|
||||
}
|
||||
os_mutexUnlock (&dds_global.m_mutex);
|
||||
dds_entity_unlock(p);
|
||||
} else {
|
||||
tp = DDS_ERRNO(rc, "Error occurred on locking entity");
|
||||
DDS_ERROR("Error occurred on locking entity\n");
|
||||
tp = DDS_ERRNO(rc);
|
||||
}
|
||||
} else {
|
||||
tp = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Argument name is not valid");
|
||||
DDS_ERROR("Argument name is not valid\n");
|
||||
tp = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
}
|
||||
DDS_REPORT_FLUSH(tp <= 0);
|
||||
|
||||
return tp;
|
||||
}
|
||||
|
||||
|
@ -266,22 +265,26 @@ dds_topic_qos_validate(
|
|||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
assert(qos);
|
||||
|
||||
|
||||
/* Check consistency. */
|
||||
if (!dds_qos_validate_common(qos)) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Argument QoS is not valid");
|
||||
DDS_ERROR("Argument QoS is not valid\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
}
|
||||
if ((qos->present & QP_GROUP_DATA) && !validate_octetseq (&qos->group_data)) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY, "Group data QoS policy is inconsistent and caused an error");
|
||||
DDS_ERROR("Group data QoS policy is inconsistent and caused an error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY);
|
||||
}
|
||||
if ((qos->present & QP_DURABILITY_SERVICE) && (validate_durability_service_qospolicy(&qos->durability_service) != 0)) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY, "Durability service QoS policy is inconsistent and caused an error");
|
||||
DDS_ERROR("Durability service QoS policy is inconsistent and caused an error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY);
|
||||
}
|
||||
if ((qos->present & QP_LIFESPAN) && (validate_duration(&qos->lifespan.duration) != 0)) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY, "Lifespan QoS policy is inconsistent and caused an error");
|
||||
DDS_ERROR("Lifespan QoS policy is inconsistent and caused an error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY);
|
||||
}
|
||||
if (qos->present & QP_HISTORY && (qos->present & QP_RESOURCE_LIMITS) && (validate_history_and_resource_limits(&qos->history, &qos->resource_limits) != 0)) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY, "Lifespan QoS policy is inconsistent and caused an error");
|
||||
DDS_ERROR("Lifespan QoS policy is inconsistent and caused an error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY);
|
||||
}
|
||||
if(ret == DDS_RETCODE_OK && enabled){
|
||||
ret = dds_qos_validate_mutable_common(qos);
|
||||
|
@ -301,7 +304,8 @@ dds_topic_qos_set(
|
|||
if (ret == DDS_RETCODE_OK) {
|
||||
if (enabled) {
|
||||
/* TODO: CHAM-95: DDSI does not support changing QoS policies. */
|
||||
ret = DDS_ERRNO(DDS_RETCODE_UNSUPPORTED, "Changing the topic QoS is not supported.");
|
||||
DDS_ERROR("Changing the topic QoS is not supported\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_UNSUPPORTED);
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
|
@ -342,26 +346,28 @@ dds_create_topic(
|
|||
const bool asleep = !vtime_awake_p (thr->vtime);
|
||||
uint32_t index;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (desc == NULL){
|
||||
hdl = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Topic description is NULL");
|
||||
DDS_ERROR("Topic description is NULL\n");
|
||||
hdl = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
goto bad_param_err;
|
||||
}
|
||||
|
||||
if (name == NULL) {
|
||||
hdl = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Topic name is NULL");
|
||||
DDS_ERROR("Topic name is NULL\n");
|
||||
hdl = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
goto bad_param_err;
|
||||
}
|
||||
|
||||
if (!is_valid_name(name)) {
|
||||
hdl = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Topic name contains characters that are not allowed.");
|
||||
DDS_ERROR("Topic name contains characters that are not allowed\n");
|
||||
hdl = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
goto bad_param_err;
|
||||
}
|
||||
|
||||
rc = dds_entity_lock(participant, DDS_KIND_PARTICIPANT, &par);
|
||||
if (rc != DDS_RETCODE_OK) {
|
||||
hdl = DDS_ERRNO(rc, "Error occurred on locking entity");
|
||||
DDS_ERROR("Error occurred on locking entity\n");
|
||||
hdl = DDS_ERRNO(rc);
|
||||
goto lock_err;
|
||||
}
|
||||
|
||||
|
@ -381,10 +387,12 @@ dds_create_topic(
|
|||
st = (struct ddsi_sertopic_default *)stgeneric;
|
||||
if (st->type != desc) {
|
||||
/* FIXME: should copy the type, perhaps? but then the pointers will no longer be the same */
|
||||
hdl = DDS_ERRNO(DDS_RETCODE_PRECONDITION_NOT_MET, "Create topic with mismatching type.");
|
||||
DDS_ERROR("Create topic with mismatching type\n");
|
||||
hdl = DDS_ERRNO(DDS_RETCODE_PRECONDITION_NOT_MET);
|
||||
} else if (!dupdef_qos_ok(qos, stgeneric)) {
|
||||
/* FIXME: should copy the type, perhaps? but then the pointers will no longer be the same */
|
||||
hdl = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY, "Create topic with mismatching qos.");
|
||||
DDS_ERROR("Create topic with mismatching qos\n");
|
||||
hdl = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY);
|
||||
} else {
|
||||
dds_entity_add_ref (&st->c.status_cb_entity->m_entity);
|
||||
hdl = st->c.status_cb_entity->m_entity.m_hdl;
|
||||
|
@ -483,7 +491,6 @@ qos_err:
|
|||
dds_entity_unlock(par);
|
||||
lock_err:
|
||||
bad_param_err:
|
||||
DDS_REPORT_FLUSH(hdl <= 0);
|
||||
return hdl;
|
||||
}
|
||||
|
||||
|
@ -571,14 +578,14 @@ dds_get_name(
|
|||
dds_return_t ret;
|
||||
dds__retcode_t rc;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if(size <= 0){
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Argument size is smaller than 0");
|
||||
DDS_ERROR("Argument size is smaller than 0\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
goto fail;
|
||||
}
|
||||
if(name == NULL){
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Argument name is NULL");
|
||||
DDS_ERROR("Argument name is NULL\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
goto fail;
|
||||
}
|
||||
name[0] = '\0';
|
||||
|
@ -588,11 +595,11 @@ dds_get_name(
|
|||
dds_topic_unlock(t);
|
||||
ret = DDS_RETCODE_OK;
|
||||
} else {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking topic");
|
||||
DDS_ERROR("Error occurred on locking topic\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
goto fail;
|
||||
}
|
||||
fail:
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -607,27 +614,27 @@ dds_get_type_name(
|
|||
dds__retcode_t rc;
|
||||
dds_return_t ret;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if(size <= 0){
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Argument size is smaller than 0");
|
||||
DDS_ERROR("Argument size is smaller than 0\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
goto fail;
|
||||
}
|
||||
if(name == NULL){
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Argument name is NULL");
|
||||
DDS_ERROR("Argument name is NULL\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
goto fail;
|
||||
}
|
||||
name[0] = '\0';
|
||||
rc = dds_topic_lock(topic, &t);
|
||||
if (rc != DDS_RETCODE_OK) {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking topic");
|
||||
DDS_ERROR("Error occurred on locking topic\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
goto fail;
|
||||
}
|
||||
(void)snprintf(name, size, "%s", t->m_stopic->typename);
|
||||
dds_topic_unlock(t);
|
||||
ret = DDS_RETCODE_OK;
|
||||
fail:
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
return ret;
|
||||
}
|
||||
_Pre_satisfies_((topic & DDS_ENTITY_KIND_MASK) == DDS_KIND_TOPIC)
|
||||
|
@ -640,11 +647,10 @@ dds_get_inconsistent_topic_status(
|
|||
dds_topic *t;
|
||||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
rc = dds_topic_lock(topic, &t);
|
||||
if (rc != DDS_RETCODE_OK) {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking topic");
|
||||
DDS_ERROR("Error occurred on locking topic\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
goto fail;
|
||||
}
|
||||
/* status = NULL, application do not need the status, but reset the counter & triggered bit */
|
||||
|
@ -657,6 +663,5 @@ dds_get_inconsistent_topic_status(
|
|||
}
|
||||
dds_topic_unlock(t);
|
||||
fail:
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
#include "dds__readcond.h"
|
||||
#include "dds__rhc.h"
|
||||
#include "dds__err.h"
|
||||
#include "dds__report.h"
|
||||
|
||||
|
||||
#define dds_waitset_lock(hdl, obj) dds_entity_lock(hdl, DDS_KIND_WAITSET, (dds_entity**)obj)
|
||||
|
@ -72,10 +71,12 @@ dds_waitset_wait_impl(
|
|||
dds_attachment *prev;
|
||||
|
||||
if ((xs == NULL) && (nxs != 0)){
|
||||
return DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "A size was given, but no array.");
|
||||
DDS_ERROR("A size was given, but no array\n");
|
||||
return DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
}
|
||||
if ((xs != NULL) && (nxs == 0)){
|
||||
return DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Array is given with an invalid size");
|
||||
DDS_ERROR("Array is given with an invalid size\n");
|
||||
return DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
/* Locking the waitset here will delay a possible deletion until it is
|
||||
|
@ -152,12 +153,14 @@ dds_waitset_wait_impl(
|
|||
} else if (rc == DDS_RETCODE_TIMEOUT) {
|
||||
ret = 0;
|
||||
} else {
|
||||
ret = DDS_ERRNO(rc, "Internal error");
|
||||
DDS_ERROR("Internal error");
|
||||
ret = DDS_ERRNO(rc);
|
||||
}
|
||||
|
||||
dds_waitset_unlock(ws);
|
||||
} else {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking waitset");
|
||||
DDS_ERROR("Error occurred on locking waitset\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
@ -229,8 +232,6 @@ dds_create_waitset(
|
|||
dds_entity *par;
|
||||
dds__retcode_t rc;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
rc = dds_entity_lock(participant, DDS_KIND_PARTICIPANT, &par);
|
||||
if (rc == DDS_RETCODE_OK) {
|
||||
dds_waitset *waitset = dds_alloc(sizeof(*waitset));
|
||||
|
@ -240,9 +241,10 @@ dds_create_waitset(
|
|||
waitset->triggered = NULL;
|
||||
dds_entity_unlock(par);
|
||||
} else {
|
||||
hdl = DDS_ERRNO(rc, "Error occurred on locking entity");
|
||||
DDS_ERROR("Error occurred on locking entity\n");
|
||||
hdl = DDS_ERRNO(rc);
|
||||
}
|
||||
DDS_REPORT_FLUSH(hdl <= 0);
|
||||
|
||||
return hdl;
|
||||
}
|
||||
|
||||
|
@ -258,8 +260,6 @@ dds_waitset_get_entities(
|
|||
dds__retcode_t rc;
|
||||
dds_waitset *ws;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
rc = dds_waitset_lock(waitset, &ws);
|
||||
if (rc == DDS_RETCODE_OK) {
|
||||
dds_attachment* iter;
|
||||
|
@ -283,9 +283,10 @@ dds_waitset_get_entities(
|
|||
}
|
||||
dds_waitset_unlock(ws);
|
||||
} else {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking waitset");
|
||||
DDS_ERROR("Error occurred on locking waitset\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
}
|
||||
DDS_REPORT_FLUSH(ret < 0);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -359,8 +360,6 @@ dds_waitset_attach(
|
|||
dds__retcode_t rc;
|
||||
dds_return_t ret;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
rc = dds_waitset_lock(waitset, &ws);
|
||||
if (rc == DDS_RETCODE_OK) {
|
||||
if (waitset != entity) {
|
||||
|
@ -390,18 +389,21 @@ dds_waitset_attach(
|
|||
}
|
||||
ret = DDS_RETCODE_OK;
|
||||
} else if (rc != DDS_RETCODE_PRECONDITION_NOT_MET) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Entity is not valid");
|
||||
DDS_ERROR("Entity is not valid\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
} else {
|
||||
ret = DDS_ERRNO(rc, "Entity is already attached.");
|
||||
DDS_ERROR("Entity is already attached\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
}
|
||||
if ((e != NULL) && (waitset != entity)) {
|
||||
dds_entity_unlock(e);
|
||||
}
|
||||
dds_waitset_unlock(ws);
|
||||
} else {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking waitset");
|
||||
DDS_ERROR("Error occurred on locking waitset\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
}
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK );
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -415,8 +417,6 @@ dds_waitset_detach(
|
|||
dds__retcode_t rc;
|
||||
dds_return_t ret;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
rc = dds_waitset_lock(waitset, &ws);
|
||||
if (rc == DDS_RETCODE_OK) {
|
||||
/* Possibly fails when entity was not attached. */
|
||||
|
@ -429,15 +429,18 @@ dds_waitset_detach(
|
|||
dds_waitset_remove(ws, entity);
|
||||
ret = DDS_RETCODE_OK;
|
||||
} else if (rc != DDS_RETCODE_PRECONDITION_NOT_MET) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "The given entity to detach is invalid.");
|
||||
DDS_ERROR("The given entity to detach is invalid\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
} else {
|
||||
ret = DDS_ERRNO(rc, "The given entity to detach was not attached previously.");
|
||||
DDS_ERROR("The given entity to detach was not attached previously\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
}
|
||||
dds_waitset_unlock(ws);
|
||||
} else {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking waitset");
|
||||
DDS_ERROR("Error occurred on locking waitset\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
}
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -449,11 +452,7 @@ dds_waitset_wait_until(
|
|||
_In_ size_t nxs,
|
||||
_In_ dds_time_t abstimeout)
|
||||
{
|
||||
dds_return_t ret;
|
||||
DDS_REPORT_STACK();
|
||||
ret = dds_waitset_wait_impl(waitset, xs, nxs, abstimeout, dds_time());
|
||||
DDS_REPORT_FLUSH(ret <0 );
|
||||
return ret;
|
||||
return dds_waitset_wait_impl(waitset, xs, nxs, abstimeout, dds_time());
|
||||
}
|
||||
|
||||
_Pre_satisfies_((waitset & DDS_ENTITY_KIND_MASK) == DDS_KIND_WAITSET)
|
||||
|
@ -465,16 +464,16 @@ dds_waitset_wait(
|
|||
_In_ dds_duration_t reltimeout)
|
||||
{
|
||||
dds_entity_t ret;
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (reltimeout >= 0) {
|
||||
dds_time_t tnow = dds_time();
|
||||
dds_time_t abstimeout = (DDS_INFINITY - reltimeout <= tnow) ? DDS_NEVER : (tnow + reltimeout);
|
||||
ret = dds_waitset_wait_impl(waitset, xs, nxs, abstimeout, tnow);
|
||||
} else{
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Negative timeout");
|
||||
DDS_ERROR("Negative timeout\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
}
|
||||
DDS_REPORT_FLUSH(ret <0 );
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -488,14 +487,13 @@ dds_waitset_set_trigger(
|
|||
dds__retcode_t rc;
|
||||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
/* Locking the waitset here will delay a possible deletion until it is
|
||||
* unlocked. Even when the related mutex is unlocked when we want to send
|
||||
* a signal. */
|
||||
rc = dds_waitset_lock(waitset, &ws);
|
||||
if (rc != DDS_RETCODE_OK) {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking waitset");
|
||||
DDS_ERROR("Error occurred on locking waitset\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
goto fail;
|
||||
}
|
||||
if (trigger) {
|
||||
|
@ -506,7 +504,6 @@ dds_waitset_set_trigger(
|
|||
dds_waitset_signal_entity(ws);
|
||||
dds_waitset_unlock(ws);
|
||||
fail:
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
@ -105,20 +105,6 @@ struct whc_sample_iter_sizecheck {
|
|||
char fits_in_generic_type[sizeof(struct whc_sample_iter_impl) <= sizeof(struct whc_sample_iter) ? 1 : -1];
|
||||
};
|
||||
|
||||
/* Avoiding all nn_log-related activities when LC_WHC is not set
|
||||
(and it hardly ever is, as it is not even included in "trace")
|
||||
saves a couple of % CPU on a high-rate publisher - that's worth
|
||||
it. So we need a macro & a support function. */
|
||||
static int trace_whc (const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
va_start (ap, fmt);
|
||||
nn_vlog (LC_WHC, fmt, ap);
|
||||
va_end (ap);
|
||||
return 0;
|
||||
}
|
||||
#define TRACE_WHC(args) ((config.enabled_logcats & LC_WHC) ? (trace_whc args) : 0)
|
||||
|
||||
/* Hash + interval tree adminitration of samples-by-sequence number
|
||||
* - by definition contains all samples in WHC (unchanged from older versions)
|
||||
* Circular array of samples per instance, inited to all 0
|
||||
|
@ -568,7 +554,7 @@ static void free_one_instance_from_idx (struct whc_impl *whc, seqno_t max_drop_s
|
|||
oldn->idxnode = NULL;
|
||||
if (oldn->seq <= max_drop_seq)
|
||||
{
|
||||
TRACE_WHC((" prune tl whcn %p\n", (void *)oldn));
|
||||
DDS_LOG(DDS_LC_WHC, " prune tl whcn %p\n", (void *)oldn);
|
||||
assert(oldn != whc->maxseq_node);
|
||||
whc_delete_one (whc, oldn);
|
||||
}
|
||||
|
@ -882,7 +868,7 @@ static unsigned whc_default_remove_acked_messages_full (struct whc_impl *whc, se
|
|||
if (whc->is_transient_local && whc->tldepth == 0)
|
||||
{
|
||||
/* KEEP_ALL on transient local, so we can never ever delete anything */
|
||||
TRACE_WHC((" KEEP_ALL transient-local: do nothing\n"));
|
||||
DDS_LOG(DDS_LC_WHC, " KEEP_ALL transient-local: do nothing\n");
|
||||
*deferred_free_list = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
@ -892,11 +878,11 @@ static unsigned whc_default_remove_acked_messages_full (struct whc_impl *whc, se
|
|||
prev_seq = whcn ? whcn->prev_seq : NULL;
|
||||
while (whcn && whcn->seq <= max_drop_seq)
|
||||
{
|
||||
TRACE_WHC((" whcn %p %"PRId64, (void *) whcn, whcn->seq));
|
||||
DDS_LOG(DDS_LC_WHC, " whcn %p %"PRId64, (void *) whcn, whcn->seq);
|
||||
if (whcn_in_tlidx(whc, whcn->idxnode, whcn->idxnode_pos))
|
||||
{
|
||||
/* quickly skip over samples in tlidx */
|
||||
TRACE_WHC((" tl:keep"));
|
||||
DDS_LOG(DDS_LC_WHC, " tl:keep");
|
||||
if (whcn->unacked)
|
||||
{
|
||||
assert (whc->unacked_bytes >= whcn->size);
|
||||
|
@ -914,13 +900,13 @@ static unsigned whc_default_remove_acked_messages_full (struct whc_impl *whc, se
|
|||
}
|
||||
else
|
||||
{
|
||||
TRACE_WHC((" delete"));
|
||||
DDS_LOG(DDS_LC_WHC, " delete");
|
||||
last_to_free->next_seq = whcn;
|
||||
last_to_free = last_to_free->next_seq;
|
||||
whc_delete_one_intv (whc, &intv, &whcn);
|
||||
ndropped++;
|
||||
}
|
||||
TRACE_WHC(("\n"));
|
||||
DDS_LOG(DDS_LC_WHC, "\n");
|
||||
}
|
||||
if (prev_seq)
|
||||
prev_seq->next_seq = whcn;
|
||||
|
@ -937,7 +923,7 @@ static unsigned whc_default_remove_acked_messages_full (struct whc_impl *whc, se
|
|||
if (whc->tldepth > 0 && whc->idxdepth > whc->tldepth)
|
||||
{
|
||||
assert(whc->hdepth == whc->idxdepth);
|
||||
TRACE_WHC((" idxdepth %u > tldepth %u > 0 -- must prune\n", whc->idxdepth, whc->tldepth));
|
||||
DDS_LOG(DDS_LC_WHC, " idxdepth %u > tldepth %u > 0 -- must prune\n", whc->idxdepth, whc->tldepth);
|
||||
|
||||
/* Do a second pass over the sequence number range we just processed: this time we only
|
||||
encounter samples that were retained because of the transient-local durability setting
|
||||
|
@ -948,14 +934,14 @@ static unsigned whc_default_remove_acked_messages_full (struct whc_impl *whc, se
|
|||
struct whc_idxnode * const idxn = whcn->idxnode;
|
||||
unsigned cnt, idx;
|
||||
|
||||
TRACE_WHC((" whcn %p %"PRId64" idxn %p prune_seq %"PRId64":", (void *)whcn, whcn->seq, (void *)idxn, idxn->prune_seq));
|
||||
DDS_LOG(DDS_LC_WHC, " whcn %p %"PRId64" idxn %p prune_seq %"PRId64":", (void *)whcn, whcn->seq, (void *)idxn, idxn->prune_seq);
|
||||
|
||||
assert(whcn_in_tlidx(whc, idxn, whcn->idxnode_pos));
|
||||
assert (idxn->prune_seq <= max_drop_seq);
|
||||
|
||||
if (idxn->prune_seq == max_drop_seq)
|
||||
{
|
||||
TRACE_WHC((" already pruned\n"));
|
||||
DDS_LOG(DDS_LC_WHC, " already pruned\n");
|
||||
whcn = whcn->next_seq;
|
||||
continue;
|
||||
}
|
||||
|
@ -983,7 +969,7 @@ static unsigned whc_default_remove_acked_messages_full (struct whc_impl *whc, se
|
|||
whcn_template.serdata = ddsi_serdata_ref(oldn->serdata);
|
||||
assert(oldn->seq < whcn->seq);
|
||||
#endif
|
||||
TRACE_WHC((" del %p %"PRId64, (void *) oldn, oldn->seq));
|
||||
DDS_LOG(DDS_LC_WHC, " del %p %"PRId64, (void *) oldn, oldn->seq);
|
||||
whc_delete_one (whc, oldn);
|
||||
#ifndef NDEBUG
|
||||
assert(ut_hhLookup(whc->idx_hash, &template) == idxn);
|
||||
|
@ -991,7 +977,7 @@ static unsigned whc_default_remove_acked_messages_full (struct whc_impl *whc, se
|
|||
#endif
|
||||
}
|
||||
}
|
||||
TRACE_WHC(("\n"));
|
||||
DDS_LOG(DDS_LC_WHC, "\n");
|
||||
whcn = whcn->next_seq;
|
||||
}
|
||||
}
|
||||
|
@ -1014,13 +1000,13 @@ static unsigned whc_default_remove_acked_messages (struct whc *whc_generic, seqn
|
|||
assert (max_drop_seq < MAX_SEQ_NUMBER);
|
||||
assert (max_drop_seq >= whc->max_drop_seq);
|
||||
|
||||
if (config.enabled_logcats & LC_WHC)
|
||||
if (dds_get_log_mask() & DDS_LC_WHC)
|
||||
{
|
||||
struct whc_state tmp;
|
||||
get_state_locked(whc, &tmp);
|
||||
TRACE_WHC(("whc_default_remove_acked_messages(%p max_drop_seq %"PRId64")\n", (void *)whc, max_drop_seq));
|
||||
TRACE_WHC((" whc: [%"PRId64",%"PRId64"] max_drop_seq %"PRId64" h %u tl %u\n",
|
||||
tmp.min_seq, tmp.max_seq, whc->max_drop_seq, whc->hdepth, whc->tldepth));
|
||||
DDS_LOG(DDS_LC_WHC, "whc_default_remove_acked_messages(%p max_drop_seq %"PRId64")\n", (void *)whc, max_drop_seq);
|
||||
DDS_LOG(DDS_LC_WHC, " whc: [%"PRId64",%"PRId64"] max_drop_seq %"PRId64" h %u tl %u\n",
|
||||
tmp.min_seq, tmp.max_seq, whc->max_drop_seq, whc->hdepth, whc->tldepth);
|
||||
}
|
||||
|
||||
check_whc (whc);
|
||||
|
@ -1108,13 +1094,13 @@ static int whc_default_insert (struct whc *whc_generic, seqno_t max_drop_seq, se
|
|||
os_mutexLock (&whc->lock);
|
||||
check_whc (whc);
|
||||
|
||||
if (config.enabled_logcats & LC_WHC)
|
||||
if (dds_get_log_mask() & DDS_LC_WHC)
|
||||
{
|
||||
struct whc_state whcst;
|
||||
get_state_locked(whc, &whcst);
|
||||
TRACE_WHC(("whc_default_insert(%p max_drop_seq %"PRId64" seq %"PRId64" plist %p serdata %p:%"PRIx32")\n", (void *)whc, max_drop_seq, seq, (void*)plist, (void*)serdata, serdata->hash));
|
||||
TRACE_WHC((" whc: [%"PRId64",%"PRId64"] max_drop_seq %"PRId64" h %u tl %u\n",
|
||||
whcst.min_seq, whcst.max_seq, whc->max_drop_seq, whc->hdepth, whc->tldepth));
|
||||
DDS_LOG(DDS_LC_WHC, "whc_default_insert(%p max_drop_seq %"PRId64" seq %"PRId64" plist %p serdata %p:%"PRIx32")\n", (void *)whc, max_drop_seq, seq, (void*)plist, (void*)serdata, serdata->hash);
|
||||
DDS_LOG(DDS_LC_WHC, " whc: [%"PRId64",%"PRId64"] max_drop_seq %"PRId64" h %u tl %u\n",
|
||||
whcst.min_seq, whcst.max_seq, whc->max_drop_seq, whc->hdepth, whc->tldepth);
|
||||
}
|
||||
|
||||
assert (max_drop_seq < MAX_SEQ_NUMBER);
|
||||
|
@ -1128,12 +1114,12 @@ static int whc_default_insert (struct whc *whc_generic, seqno_t max_drop_seq, se
|
|||
/* Always insert in seq admin */
|
||||
newn = whc_default_insert_seq (whc, max_drop_seq, seq, plist, serdata);
|
||||
|
||||
TRACE_WHC((" whcn %p:", (void*)newn));
|
||||
DDS_LOG(DDS_LC_WHC, " whcn %p:", (void*)newn);
|
||||
|
||||
/* Special case of empty data (such as commit messages) can't go into index, and if we're not maintaining an index, we're done, too */
|
||||
if (serdata->kind == SDK_EMPTY || whc->idxdepth == 0)
|
||||
{
|
||||
TRACE_WHC((" empty or no hist\n"));
|
||||
DDS_LOG(DDS_LC_WHC, " empty or no hist\n");
|
||||
os_mutexUnlock (&whc->lock);
|
||||
return 0;
|
||||
}
|
||||
|
@ -1142,15 +1128,15 @@ static int whc_default_insert (struct whc *whc_generic, seqno_t max_drop_seq, se
|
|||
if ((idxn = ut_hhLookup (whc->idx_hash, &template)) != NULL)
|
||||
{
|
||||
/* Unregisters cause deleting of index entry, non-unregister of adding/overwriting in history */
|
||||
TRACE_WHC((" idxn %p", (void *)idxn));
|
||||
DDS_LOG(DDS_LC_WHC, " idxn %p", (void *)idxn);
|
||||
if (serdata->statusinfo & NN_STATUSINFO_UNREGISTER)
|
||||
{
|
||||
TRACE_WHC((" unreg:delete\n"));
|
||||
DDS_LOG(DDS_LC_WHC, " unreg:delete\n");
|
||||
delete_one_instance_from_idx (whc, max_drop_seq, idxn);
|
||||
if (newn->seq <= max_drop_seq)
|
||||
{
|
||||
struct whc_node *prev_seq = newn->prev_seq;
|
||||
TRACE_WHC((" unreg:seq <= max_drop_seq: delete newn\n"));
|
||||
DDS_LOG(DDS_LC_WHC, " unreg:seq <= max_drop_seq: delete newn\n");
|
||||
whc_delete_one (whc, newn);
|
||||
whc->maxseq_node = prev_seq;
|
||||
}
|
||||
|
@ -1162,7 +1148,7 @@ static int whc_default_insert (struct whc *whc_generic, seqno_t max_drop_seq, se
|
|||
idxn->headidx = 0;
|
||||
if ((oldn = idxn->hist[idxn->headidx]) != NULL)
|
||||
{
|
||||
TRACE_WHC((" overwrite whcn %p", (void *)oldn));
|
||||
DDS_LOG(DDS_LC_WHC, " overwrite whcn %p", (void *)oldn);
|
||||
oldn->idxnode = NULL;
|
||||
}
|
||||
idxn->hist[idxn->headidx] = newn;
|
||||
|
@ -1171,7 +1157,7 @@ static int whc_default_insert (struct whc *whc_generic, seqno_t max_drop_seq, se
|
|||
|
||||
if (oldn && (whc->hdepth > 0 || oldn->seq <= max_drop_seq))
|
||||
{
|
||||
TRACE_WHC((" prune whcn %p", (void *)oldn));
|
||||
DDS_LOG(DDS_LC_WHC, " prune whcn %p", (void *)oldn);
|
||||
assert(oldn != whc->maxseq_node);
|
||||
whc_delete_one (whc, oldn);
|
||||
}
|
||||
|
@ -1187,23 +1173,23 @@ static int whc_default_insert (struct whc *whc_generic, seqno_t max_drop_seq, se
|
|||
pos -= whc->idxdepth;
|
||||
if ((oldn = idxn->hist[pos]) != NULL)
|
||||
{
|
||||
TRACE_WHC((" prune tl whcn %p", (void *)oldn));
|
||||
DDS_LOG(DDS_LC_WHC, " prune tl whcn %p", (void *)oldn);
|
||||
assert(oldn != whc->maxseq_node);
|
||||
whc_delete_one (whc, oldn);
|
||||
}
|
||||
}
|
||||
TRACE_WHC(("\n"));
|
||||
DDS_LOG(DDS_LC_WHC, "\n");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
TRACE_WHC((" newkey"));
|
||||
DDS_LOG(DDS_LC_WHC, " newkey");
|
||||
/* Ignore unregisters, but insert everything else */
|
||||
if (!(serdata->statusinfo & NN_STATUSINFO_UNREGISTER))
|
||||
{
|
||||
unsigned i;
|
||||
idxn = os_malloc (sizeof (*idxn) + whc->idxdepth * sizeof (idxn->hist[0]));
|
||||
TRACE_WHC((" idxn %p", (void *)idxn));
|
||||
DDS_LOG(DDS_LC_WHC, " idxn %p", (void *)idxn);
|
||||
dds_tkmap_instance_ref(tk);
|
||||
idxn->iid = tk->m_iid;
|
||||
idxn->tk = tk;
|
||||
|
@ -1219,16 +1205,16 @@ static int whc_default_insert (struct whc *whc_generic, seqno_t max_drop_seq, se
|
|||
}
|
||||
else
|
||||
{
|
||||
TRACE_WHC((" unreg:skip"));
|
||||
DDS_LOG(DDS_LC_WHC, " unreg:skip");
|
||||
if (newn->seq <= max_drop_seq)
|
||||
{
|
||||
struct whc_node *prev_seq = newn->prev_seq;
|
||||
TRACE_WHC((" unreg:seq <= max_drop_seq: delete newn\n"));
|
||||
DDS_LOG(DDS_LC_WHC, " unreg:seq <= max_drop_seq: delete newn\n");
|
||||
whc_delete_one (whc, newn);
|
||||
whc->maxseq_node = prev_seq;
|
||||
}
|
||||
}
|
||||
TRACE_WHC(("\n"));
|
||||
DDS_LOG(DDS_LC_WHC, "\n");
|
||||
}
|
||||
os_mutexUnlock (&whc->lock);
|
||||
return 0;
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
|
||||
*/
|
||||
#include <assert.h>
|
||||
#include <string.h>
|
||||
#include "dds__writer.h"
|
||||
#include "dds__write.h"
|
||||
#include "dds__tkmap.h"
|
||||
|
@ -23,9 +24,7 @@
|
|||
#include "ddsi/q_ephash.h"
|
||||
#include "ddsi/q_config.h"
|
||||
#include "ddsi/q_entity.h"
|
||||
#include "dds__report.h"
|
||||
#include "ddsi/q_radmin.h"
|
||||
#include <string.h>
|
||||
|
||||
_Pre_satisfies_((writer & DDS_ENTITY_KIND_MASK) == DDS_KIND_WRITER)
|
||||
dds_return_t
|
||||
|
@ -37,20 +36,20 @@ dds_write(
|
|||
dds__retcode_t rc;
|
||||
dds_writer *wr;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (data != NULL) {
|
||||
rc = dds_writer_lock(writer, &wr);
|
||||
if (rc == DDS_RETCODE_OK) {
|
||||
ret = dds_write_impl(wr, data, dds_time(), 0);
|
||||
dds_writer_unlock(wr);
|
||||
} else {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking entity");
|
||||
DDS_ERROR("Error occurred on locking entity\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
}
|
||||
} else {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "No data buffer provided");
|
||||
DDS_ERROR("No data buffer provided\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
}
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -69,10 +68,12 @@ dds_writecdr(
|
|||
ret = dds_writecdr_impl (wr, serdata, dds_time (), 0);
|
||||
dds_writer_unlock(wr);
|
||||
} else {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking writer");
|
||||
DDS_ERROR("Error occurred on locking writer\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
}
|
||||
} else{
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Given cdr has NULL value");
|
||||
DDS_ERROR("Given cdr has NULL value\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
@ -88,14 +89,14 @@ dds_write_ts(
|
|||
dds__retcode_t rc;
|
||||
dds_writer *wr;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if(data == NULL){
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Argument data has NULL value");
|
||||
DDS_ERROR("Argument data has NULL value\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
goto err;
|
||||
}
|
||||
if(timestamp < 0){
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Argument timestamp has negative value");
|
||||
DDS_ERROR("Argument timestamp has negative value\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
goto err;
|
||||
}
|
||||
rc = dds_writer_lock(writer, &wr);
|
||||
|
@ -103,10 +104,10 @@ dds_write_ts(
|
|||
ret = dds_write_impl(wr, data, timestamp, 0);
|
||||
dds_writer_unlock(wr);
|
||||
} else {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking writer");
|
||||
DDS_ERROR("Error occurred on locking writer\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
}
|
||||
err:
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -126,13 +127,14 @@ deliver_locally(
|
|||
make_proxy_writer_info(&pwr_info, &wr->e, wr->xqos);
|
||||
for (i = 0; rdary[i]; i++) {
|
||||
bool stored;
|
||||
TRACE (("reader %x:%x:%x:%x\n", PGUID (rdary[i]->e.guid)));
|
||||
DDS_TRACE("reader %x:%x:%x:%x\n", PGUID (rdary[i]->e.guid));
|
||||
dds_duration_t max_block_ms = nn_from_ddsi_duration(wr->xqos->reliability.max_blocking_time) / DDS_NSECS_IN_MSEC;
|
||||
do {
|
||||
stored = (ddsi_plugin.rhc_plugin.rhc_store_fn) (rdary[i]->rhc, &pwr_info, payload, tk);
|
||||
if (!stored) {
|
||||
if (max_block_ms <= 0) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_TIMEOUT, "The writer could not deliver data on time, probably due to a local reader resources being full.");
|
||||
DDS_ERROR("The writer could not deliver data on time, probably due to a local reader resources being full\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_TIMEOUT);
|
||||
} else {
|
||||
dds_sleepfor(DDS_MSECS(DDS_HEADBANG_TIMEOUT_MS));
|
||||
}
|
||||
|
@ -163,7 +165,7 @@ deliver_locally(
|
|||
for (m = ut_avlIterFirst (&wr_local_readers_treedef, &wr->local_readers, &it); m != NULL; m = ut_avlIterNext (&it)) {
|
||||
struct reader *rd;
|
||||
if ((rd = ephash_lookup_reader_guid (&m->rd_guid)) != NULL) {
|
||||
TRACE (("reader-via-guid %x:%x:%x:%x\n", PGUID (rd->e.guid)));
|
||||
DDS_TRACE("reader-via-guid %x:%x:%x:%x\n", PGUID (rd->e.guid));
|
||||
/* Copied the return value ignore from DDSI deliver_user_data() function. */
|
||||
(void)(ddsi_plugin.rhc_plugin.rhc_store_fn) (rd->rhc, &pwr_info, payload, tk);
|
||||
}
|
||||
|
@ -195,7 +197,8 @@ dds_write_impl(
|
|||
struct ddsi_serdata *d;
|
||||
|
||||
if (data == NULL) {
|
||||
return DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "No data buffer provided");
|
||||
DDS_ERROR("No data buffer provided\n");
|
||||
return DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
/* Check for topic filter */
|
||||
|
@ -227,11 +230,14 @@ dds_write_impl(
|
|||
}
|
||||
ret = DDS_RETCODE_OK;
|
||||
} else if (w_rc == ERR_TIMEOUT) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_TIMEOUT, "The writer could not deliver data on time, probably due to a reader resources being full.");
|
||||
DDS_ERROR("The writer could not deliver data on time, probably due to a reader resources being full\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_TIMEOUT);
|
||||
} else if (w_rc == ERR_INVALID_DATA) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR, "Invalid data provided");
|
||||
DDS_ERROR("Invalid data provided\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR);
|
||||
} else {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR, "Internal error");
|
||||
DDS_ERROR("Internal error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR);
|
||||
}
|
||||
if (ret == DDS_RETCODE_OK) {
|
||||
ret = deliver_locally (ddsi_wr, d, tk);
|
||||
|
@ -286,11 +292,14 @@ dds_writecdr_impl(
|
|||
}
|
||||
ret = DDS_RETCODE_OK;
|
||||
} else if (w_rc == ERR_TIMEOUT) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_TIMEOUT, "The writer could not deliver data on time, probably due to a reader resources being full.");
|
||||
DDS_ERROR("The writer could not deliver data on time, probably due to a reader resources being full\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_TIMEOUT);
|
||||
} else if (w_rc == ERR_INVALID_DATA) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR, "Invalid data provided");
|
||||
DDS_ERROR("Invalid data provided\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR);
|
||||
} else {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR, "Internal error");
|
||||
DDS_ERROR("Internal error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR);
|
||||
}
|
||||
|
||||
if (ret == DDS_RETCODE_OK) {
|
||||
|
@ -318,9 +327,7 @@ void
|
|||
dds_write_flush(
|
||||
dds_entity_t writer)
|
||||
{
|
||||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
dds__retcode_t rc;
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
struct thread_state1 * const thr = lookup_thread_state ();
|
||||
const bool asleep = !vtime_awake_p (thr->vtime);
|
||||
|
@ -333,14 +340,13 @@ dds_write_flush(
|
|||
if (rc == DDS_RETCODE_OK) {
|
||||
nn_xpack_send (wr->m_xp, true);
|
||||
dds_writer_unlock(wr);
|
||||
ret = DDS_RETCODE_OK;
|
||||
} else{
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking writer");
|
||||
DDS_ERROR("Error occurred on locking writer\n");
|
||||
}
|
||||
|
||||
if (asleep) {
|
||||
thread_state_asleep (thr);
|
||||
}
|
||||
DDS_REPORT_FLUSH(ret < 0);
|
||||
|
||||
return ;
|
||||
}
|
||||
|
|
|
@ -22,7 +22,6 @@
|
|||
#include "dds__init.h"
|
||||
#include "dds__tkmap.h"
|
||||
#include "dds__whc.h"
|
||||
#include "dds__report.h"
|
||||
#include "ddsc/ddsc_project.h"
|
||||
|
||||
#define DDS_WRITER_STATUS_MASK \
|
||||
|
@ -46,9 +45,14 @@ static dds_return_t
|
|||
dds_writer_status_validate(
|
||||
uint32_t mask)
|
||||
{
|
||||
return (mask & ~(DDS_WRITER_STATUS_MASK)) ?
|
||||
DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "Invalid status mask") :
|
||||
DDS_RETCODE_OK;
|
||||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
|
||||
if (mask & ~(DDS_WRITER_STATUS_MASK)) {
|
||||
DDS_ERROR("Invalid status mask\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -75,11 +79,8 @@ dds_writer_status_cb(
|
|||
return;
|
||||
}
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
if (dds_writer_lock(((dds_entity*)entity)->m_hdl, &wr) != DDS_RETCODE_OK) {
|
||||
/* There's a deletion or closing going on. */
|
||||
DDS_REPORT_FLUSH(false);
|
||||
return;
|
||||
}
|
||||
assert(wr == entity);
|
||||
|
@ -180,8 +181,6 @@ dds_writer_status_cb(
|
|||
} else {
|
||||
/* Something went wrong up the hierarchy. */
|
||||
}
|
||||
|
||||
DDS_REPORT_FLUSH(rc != DDS_RETCODE_OK);
|
||||
}
|
||||
|
||||
static uint32_t
|
||||
|
@ -215,7 +214,8 @@ dds_writer_close(
|
|||
nn_xpack_send (wr->m_xp, false);
|
||||
}
|
||||
if (delete_writer (&e->m_guid) != 0) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR, "Internal error");
|
||||
DDS_ERROR("Internal error");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR);
|
||||
}
|
||||
if (asleep) {
|
||||
thread_state_asleep(thr);
|
||||
|
@ -268,19 +268,24 @@ dds_writer_qos_validate(
|
|||
|
||||
/* Check consistency. */
|
||||
if(dds_qos_validate_common(qos) != true){
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY, "Provided inconsistent QoS policy");
|
||||
DDS_ERROR("Provided inconsistent QoS policy\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY);
|
||||
}
|
||||
if((qos->present & QP_USER_DATA) && validate_octetseq(&qos->user_data) != true){
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY, "User Data QoS policy is inconsistent and caused an error");
|
||||
DDS_ERROR("User Data QoS policy is inconsistent and caused an error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY);
|
||||
}
|
||||
if ((qos->present & QP_DURABILITY_SERVICE) && validate_durability_service_qospolicy(&qos->durability_service) != 0){
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY, "Durability service QoS policy is inconsistent and caused an error");
|
||||
DDS_ERROR("Durability service QoS policy is inconsistent and caused an error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY);
|
||||
}
|
||||
if ((qos->present & QP_LIFESPAN) && validate_duration(&qos->lifespan.duration) != 0){
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY, "Lifespan QoS policy is inconsistent and caused an error");
|
||||
DDS_ERROR("Lifespan QoS policy is inconsistent and caused an error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY);
|
||||
}
|
||||
if ((qos->present & QP_HISTORY) && (qos->present & QP_RESOURCE_LIMITS) && (validate_history_and_resource_limits(&qos->history, &qos->resource_limits) != 0)){
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY, "Resource limits QoS policy is inconsistent and caused an error");
|
||||
DDS_ERROR("Resource limits QoS policy is inconsistent and caused an error\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_INCONSISTENT_POLICY);
|
||||
}
|
||||
if(ret == DDS_RETCODE_OK && enabled) {
|
||||
ret = dds_qos_validate_mutable_common(qos);
|
||||
|
@ -330,11 +335,13 @@ dds_writer_qos_set(
|
|||
thread_state_asleep (thr);
|
||||
}
|
||||
} else {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR, "Setting ownership strength doesn't make sense when the ownership is shared.");
|
||||
DDS_ERROR("Setting ownership strength doesn't make sense when the ownership is shared\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_ERROR);
|
||||
}
|
||||
} else {
|
||||
if (enabled) {
|
||||
ret = DDS_ERRNO(DDS_RETCODE_UNSUPPORTED, DDSC_PROJECT_NAME" does not support changing QoS policies yet");
|
||||
DDS_ERROR(DDSC_PROJECT_NAME" does not support changing QoS policies yet\n");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_UNSUPPORTED);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -420,8 +427,6 @@ dds_create_writer(
|
|||
ddsi_tran_conn_t conn = gv.data_conn_uc;
|
||||
dds_return_t ret;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
/* Try claiming a participant. If that's not working, then it could be a subscriber. */
|
||||
if(dds_entity_kind(participant_or_publisher) == DDS_KIND_PARTICIPANT){
|
||||
publisher = dds_create_publisher(participant_or_publisher, qos, NULL);
|
||||
|
@ -431,7 +436,8 @@ dds_create_writer(
|
|||
rc = dds_entity_lock(publisher, DDS_KIND_PUBLISHER, &pub);
|
||||
|
||||
if (rc != DDS_RETCODE_OK) {
|
||||
writer = DDS_ERRNO(rc, "Error occurred on locking publisher");
|
||||
DDS_ERROR("Error occurred on locking publisher\n");
|
||||
writer = DDS_ERRNO(rc);
|
||||
goto err_pub_lock;
|
||||
}
|
||||
|
||||
|
@ -441,7 +447,8 @@ dds_create_writer(
|
|||
|
||||
rc = dds_entity_lock(topic, DDS_KIND_TOPIC, &tp);
|
||||
if (rc != DDS_RETCODE_OK) {
|
||||
writer = DDS_ERRNO(rc, "Error occurred on locking topic");
|
||||
DDS_ERROR("Error occurred on locking topic\n");
|
||||
writer = DDS_ERRNO(rc);
|
||||
goto err_tp_lock;
|
||||
}
|
||||
assert(((dds_topic*)tp)->m_stopic);
|
||||
|
@ -507,7 +514,6 @@ dds_create_writer(
|
|||
}
|
||||
dds_entity_unlock(tp);
|
||||
dds_entity_unlock(pub);
|
||||
DDS_REPORT_FLUSH(writer <= 0);
|
||||
return writer;
|
||||
|
||||
err_bad_qos:
|
||||
|
@ -518,7 +524,6 @@ err_tp_lock:
|
|||
(void)dds_delete(publisher);
|
||||
}
|
||||
err_pub_lock:
|
||||
DDS_REPORT_FLUSH(writer <= 0);
|
||||
return writer;
|
||||
}
|
||||
|
||||
|
@ -531,15 +536,14 @@ dds_get_publisher(
|
|||
{
|
||||
dds_entity_t hdl = DDS_RETCODE_OK;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
hdl = dds_valid_hdl(writer, DDS_KIND_WRITER);
|
||||
if(hdl != DDS_RETCODE_OK){
|
||||
hdl = DDS_ERRNO(hdl, "Provided handle is not writer kind, so it is not valid");
|
||||
DDS_ERROR("Provided handle is not writer kind, so it is not valid\n");
|
||||
hdl = DDS_ERRNO(hdl);
|
||||
} else{
|
||||
hdl = dds_get_parent(writer);
|
||||
}
|
||||
DDS_REPORT_FLUSH(hdl <= 0);
|
||||
|
||||
return hdl;
|
||||
}
|
||||
|
||||
|
@ -553,11 +557,10 @@ dds_get_publication_matched_status (
|
|||
dds_writer *wr;
|
||||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
rc = dds_writer_lock(writer, &wr);
|
||||
if (rc != DDS_RETCODE_OK) {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking writer");
|
||||
DDS_ERROR("Error occurred on locking writer\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
goto fail;
|
||||
}
|
||||
/* status = NULL, application do not need the status, but reset the counter & triggered bit */
|
||||
|
@ -571,7 +574,6 @@ dds_get_publication_matched_status (
|
|||
}
|
||||
dds_writer_unlock(wr);
|
||||
fail:
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -585,11 +587,10 @@ dds_get_liveliness_lost_status (
|
|||
dds_writer *wr;
|
||||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
rc = dds_writer_lock(writer, &wr);
|
||||
if (rc != DDS_RETCODE_OK) {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking writer");
|
||||
DDS_ERROR("Error occurred on locking writer\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
goto fail;
|
||||
}
|
||||
/* status = NULL, application do not need the status, but reset the counter & triggered bit */
|
||||
|
@ -602,7 +603,6 @@ dds_get_liveliness_lost_status (
|
|||
}
|
||||
dds_writer_unlock(wr);
|
||||
fail:
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -616,11 +616,10 @@ dds_get_offered_deadline_missed_status(
|
|||
dds_writer *wr;
|
||||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
rc = dds_writer_lock(writer, &wr);
|
||||
if (rc != DDS_RETCODE_OK) {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking writer");
|
||||
DDS_ERROR("Error occurred on locking writer\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
goto fail;
|
||||
}
|
||||
/* status = NULL, application do not need the status, but reset the counter & triggered bit */
|
||||
|
@ -633,7 +632,6 @@ dds_get_offered_deadline_missed_status(
|
|||
}
|
||||
dds_writer_unlock(wr);
|
||||
fail:
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -647,11 +645,10 @@ dds_get_offered_incompatible_qos_status (
|
|||
dds_writer *wr;
|
||||
dds_return_t ret = DDS_RETCODE_OK;
|
||||
|
||||
DDS_REPORT_STACK();
|
||||
|
||||
rc = dds_writer_lock(writer, &wr);
|
||||
if (rc != DDS_RETCODE_OK) {
|
||||
ret = DDS_ERRNO(rc, "Error occurred on locking writer");
|
||||
DDS_ERROR("Error occurred on locking writer\n");
|
||||
ret = DDS_ERRNO(rc);
|
||||
goto fail;
|
||||
}
|
||||
/* status = NULL, application do not need the status, but reset the counter & triggered bit */
|
||||
|
@ -664,6 +661,5 @@ dds_get_offered_incompatible_qos_status (
|
|||
}
|
||||
dds_writer_unlock(wr);
|
||||
fail:
|
||||
DDS_REPORT_FLUSH(ret != DDS_RETCODE_OK);
|
||||
return ret;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue