示例#1
0
DDS_ReturnCode_t DDS_Subscriber_set_listener (DDS_Subscriber sp,
					      DDS_SubscriberListener *listener,
					      DDS_StatusMask mask)
{
	Domain_t		*dp;
	DDS_ReturnCode_t	ret;

	ctrc_printd (DCPS_ID, DCPS_S_S_LIS, &sp, sizeof (sp));
	ctrc_contd (&listener, sizeof (listener));
	ctrc_contd (&mask, sizeof (mask));
	ctrc_endd ();

	if (!subscriber_ptr (sp, &ret))
		return (ret);

	dp = domain_ptr (sp->domain, 1, &ret);
	if (!dp)
		return (ret);

	dcps_update_listener ((Entity_t *) sp, &dp->lock,
			      &sp->mask, &sp->listener,
			      mask, listener);
	lock_release (dp->lock);
	return (DDS_RETCODE_OK);
}
示例#2
0
DDS_ReturnCode_t DDS_Topic_set_listener (DDS_Topic tp,
					 DDS_TopicListener *listener,
					 DDS_StatusMask mask)
{
	DDS_ReturnCode_t	ret;

	ctrc_begind (DCPS_ID, DCPS_T_S_LIS, &tp, sizeof (tp));
	ctrc_contd (&listener, sizeof (listener));
	ctrc_contd (&mask, sizeof (mask));
	ctrc_endd ();

	if (!topic_ptr (tp, 1, &ret))
		return (ret);

	dcps_update_listener ((Entity_t *) tp, &tp->lock,
			      &tp->mask, &tp->listener,
			      mask, listener);
	lock_release (tp->lock);
	return (DDS_RETCODE_OK);
}
示例#3
0
DDS_ReturnCode_t DDS_DomainParticipant_set_listener (DDS_DomainParticipant dp,
						     DDS_DomainParticipantListener *listener,
						     DDS_StatusMask mask)
{
	DDS_ReturnCode_t	ret;

	ctrc_begind (DCPS_ID, DCPS_DP_S_LIS, &dp, sizeof (dp));
	ctrc_contd (&listener, sizeof (listener));
	ctrc_contd (&mask, sizeof (mask));
	ctrc_endd ();

	/* Get Domain Participant. */
	if (!domain_ptr (dp, 1, &ret)) {
		log_printf (DCPS_ID, 0, "set_listener: domain doesn't exist!\r\n");
		return (ret);
	}
	dcps_update_listener ((Entity_t *) dp, &dp->lock,
			      &dp->mask, &dp->listener,
			      mask, listener);
	lock_release (dp->lock);
	return (DDS_RETCODE_OK);
}
示例#4
0
DDS_ReturnCode_t DDS_DataWriter_set_listener (DDS_DataWriter wp,
					      DDS_DataWriterListener *listener,
					      DDS_StatusMask mask)
{
	DDS_ReturnCode_t ret;

	ctrc_printd (DCPS_ID, DCPS_DW_S_LIS, &wp, sizeof (wp));
	ctrc_contd (&listener, sizeof (listener));
	ctrc_contd (&mask, sizeof (mask));
	ctrc_endd ();

	if (!writer_ptr (wp, 1, &ret))
		return (ret);

	if (listener) 
		wp->w_listener.cookie = listener->cookie;

	dcps_update_listener ((Entity_t *) wp, &wp->w_lock,
			      &wp->w_mask, &wp->w_listener,
			      mask, listener);
	lock_release (wp->w_lock);
	return (DDS_RETCODE_OK);
}