Exemplo n.º 1
0
DDS_ReturnCode_t DDS_KeyedStringDataReader_return_loan (
						DDS_DataReader dr,
						DDS_KeyedStringSeq *data,
						DDS_SampleInfoSeq *info)
{
	return (DDS_DataReader_return_loan (dr, (DDS_DataSeq *) data, info));
}
Exemplo n.º 2
0
void dr_on_statistic_data_available(DDS_DataReaderListener *self, DDS_DataReader dataReader)
{
	acceptance_high_end_StatisticPtrSeq samples;
	DDS_SampleInfoSeq sampleInfos;
	DDS_ReturnCode_t retCode;
	int i;

	DDS_SEQ_INIT(samples);
	DDS_SEQ_INIT(sampleInfos);

	retCode = DDS_DataReader_take(dataReader, (DDS_DataSeq *)&samples, &sampleInfos, -1, DDS_ANY_SAMPLE_STATE, DDS_ANY_VIEW_STATE, DDS_ANY_INSTANCE_STATE);
	if (retCode == DDS_RETCODE_NO_DATA) {
		return;
	}
	else if (retCode != DDS_RETCODE_OK) {
		fprintf(stderr, "Error taking sample (%s).\r\n", DDS_error(retCode));
		return;
	}

	for (i = 0; i < DDS_SEQ_LENGTH (samples); i++)
		if (DDS_SEQ_ITEM (sampleInfos, i)->valid_data)
			nofConfigSamples++;

	retCode = DDS_DataReader_return_loan(dataReader, (DDS_DataSeq *)&samples, &sampleInfos);
	if (retCode != DDS_RETCODE_OK) {
		fprintf(stderr, "Error returning loan (%s).\r\n", DDS_error(retCode));
		return;
	}
}
Exemplo n.º 3
0
void dr_listener_data_available (DDS_DataReaderListener *list,
				 DDS_DataReader         dr)
{
	MsgData_t *data;
	types_t *datax;
	static DDS_DataSeq	rx_sample = DDS_SEQ_INITIALIZER (void *);
	static DDS_SampleInfoSeq rx_info = DDS_SEQ_INITIALIZER (DDS_SampleInfo *);
	DDS_ReturnCode_t error;
	DDS_SampleInfo *info;

	DDS_DataReader_return_loan (dr, &rx_sample, &rx_info);

	error = DDS_DataReader_take_next_instance(dr, &rx_sample, &rx_info, 1, 
						  DDS_HANDLE_NIL, 
						  DDS_NOT_READ_SAMPLE_STATE, DDS_ANY_VIEW_STATE,
						  DDS_ANY_INSTANCE_STATE);

	printf ("dds-interop: Take next instance.\r\n");
	
	if (error)
		printf ("Error taking next instance\r\n");


	/* === print sample === */
  
	if (DDS_SEQ_LENGTH (rx_info)) {
		data = DDS_SEQ_ITEM (rx_sample, 0);
		datax = DDS_SEQ_ITEM (rx_sample, 0);
		info = DDS_SEQ_ITEM (rx_info, 0);
		if (info->instance_state == DDS_ALIVE_INSTANCE_STATE) {
			if (tsm_type == 0)
				printf ("DDS-R: [%2u] ALIVE - %2u :%6llu - %s\r\n", 
					info->instance_handle,
					data->key,
					(unsigned long long) data->counter,
					data->message);
			else
				printf ("DDS-R: [%2u] ALIVE - %2u -  %s\r\n", 
					info->instance_handle, datax->i8, datax->string);
			if (test == 3)
				sem_post (&_sync);
		}
		else if (info->instance_state == DDS_NOT_ALIVE_DISPOSED_INSTANCE_STATE) {
			if (tsm_type == 0)
				printf ("DDS-R: The sample %s with key (%d) has been disposed.\r\n", data->message,  data->key);
			else 
				printf ("DDS-R: The sample has been disposed.\r\n", datax->string);
			if (test == 3)
				sem_post (&_sync);
		}
		else if (info->instance_state == DDS_NOT_ALIVE_NO_WRITERS_INSTANCE_STATE) {
			printf ("DDS-R: There are no more writers.\r\n");
			if (test == 3)
				sem_post (&_sync);
		}
		else
			printf ("DDS-R: Unknown state.\r\n");
	}
	
	DDS_DataReader_return_loan (dr, &rx_sample, &rx_info);

}
Exemplo n.º 4
0
DDS_ReturnCode_t DDS_BytesDataReader_return_loan (DDS_DataReader dr,
						  DDS_BytesSeq *data,
						  DDS_SampleInfoSeq *info)
{
	return (DDS_DataReader_return_loan (dr, (DDS_DataSeq *) data, info));
}