Exemple #1
0
smcp_status_t
smcp_group_set_enabled(smcp_group_t self, bool x)
{
	smcp_status_t status = SMCP_STATUS_OK;
	smcp_group_mgr_t mgr = group_mgr_from_group(self);
#if SMCP_EMBEDDED
	smcp_t const smcp_instance = smcp_get_current_instance();
#else
	smcp_t const smcp_instance = mgr->smcp_instance;
#endif

	if (x != self->enabled) {
		self->enabled = x;

		if (self->stable) {
			smcp_group_mgr_commit_stable(mgr);
		}

		if (self->enabled) {
			status = smcp_plat_multicast_join(smcp_instance, &self->addr, 0);
		} else {
			status = smcp_plat_multicast_leave(smcp_instance, &self->addr, 0);
		}
		smcp_observable_trigger(&self->var_handler.observable, I_ENABLED, 0);
	}

	return status;
}
Exemple #2
0
void
plugtest_obs_timer_callback(smcp_t smcp, void* context) {
	struct plugtest_server_s *self = (void*)context;

	smcp_invalidate_timer(smcp,&self->obs_timer);
	smcp_schedule_timer(smcp,&self->obs_timer,5 * MSEC_PER_SEC);

	smcp_observable_trigger(&self->observable,PLUGTEST_OBS_KEY,0);
}
Exemple #3
0
smcp_status_t
smcp_group_set_stable(smcp_group_t self, bool x)
{
	smcp_group_mgr_t mgr = group_mgr_from_group(self);
	if (x != self->stable) {
		self->stable = x;

		smcp_group_mgr_commit_stable(mgr);
		smcp_observable_trigger(&self->var_handler.observable, I_STABLE, 0);
	}

	return SMCP_STATUS_OK;
}