I am unable to use the RETCODE_OK in java. All the other RETCODE_ work. Is there something that has changed in the API or has this been removed from the java version?
How are you using it? I assume you're using version 5.1.0 and you were using 5.0.0?
Recall that in Java, return codes are exceptions. RETCODE_ERROR is the base class of all other exceptions. I think you shouldn't need to check return values, but try-catch these exceptions.
Does this make sense to you? How were you using RETCODES before?
Yes that does. I was trying to use a C++/C example that had no java conversion written and write the example in java. That is where my confusion was coming in. What would then be the right thing to use in place of RETCODE_OK in the code below?
We have recently translated that example to Java. You can download from example either from the examples section or browse it from our Github repository. This would be a quick translation of the code you posted to Java:
...
StatusCondition status_condition = reader.get_statuscondition();
if (status_condition == null) {
System.err.println("get_statuscondition error\n");
return;
}
status_condition.set_enabled_statuses(
StatusKind.DATA_AVAILABLE_STATUS);
WaitSet waitset = new WaitSet();
ConditionSeq active_conditions_seq =
new ConditionSeq();
Duration_t wait_timeout = new Duration_t();
wait_timeout.sec = 1;
wait_timeout.nanosec = 500000000;
waitset.attach_condition(status_condition);
bool exit = false;
do {
try {
waitset.wait(active_conditions_seq, wait_timeout);
} catch (RETCODE_TIMEOUT e) {
System.out.println(
"Wait timed out!! No conditions were triggered.\n");
exit = true;
} while(!exit);
...
Hi,
How are you using it? I assume you're using version 5.1.0 and you were using 5.0.0?
Recall that in Java, return codes are exceptions. RETCODE_ERROR is the base class of all other exceptions. I think you shouldn't need to check return values, but try-catch these exceptions.
Does this make sense to you? How were you using RETCODES before?
Thanks,
Juanlu
Yes that does. I was trying to use a C++/C example that had no java conversion written and write the example in java. That is where my confusion was coming in. What would then be the right thing to use in place of RETCODE_OK in the code below?
/* set up the waitset: */
DDSWaitSet* waitset =
new
DDSWaitSet();
DDSStatusCondition* cond = writer->get_statuscondition();
DDS_ReturnCode_t retcode;
cond->set_enabled_statuses(DDS_PUBLICATION_MATCHED_STATUS);
retcode = waitset->attach_condition(cond);
if
(retcode != DDS_RETCODE_OK) {
// ... error
}
/* use the waitset to wait for the condition to become true */
DDS_Duration_t timeout = { 1, 0 };
// 1 second
DDS_ConditionSeq active_conditions;
do
{
retcode = waitset->wait(active_conditions, timeout);
}
while
(retcode == DDS_RETCODE_TIMEOUT);
if
(retcode != DDS_RETCODE_OK) {
// ... error
}
/* active_conditions should include a single entry which matches cond */
/* ... */
/* clean up */
delete
waitset;
Hi jgr208,
We have recently translated that example to Java. You can download from example either from the examples section or browse it from our Github repository. This would be a quick translation of the code you posted to Java: