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); }
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); }
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); }
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); }