static c_ulong cmx_participantDetach( u_observable o, c_ulong event, c_voidp usrData) { v_serviceStateKind kind; u_serviceManager manager; OS_UNUSED_ARG(o); OS_UNUSED_ARG(event); OS_UNUSED_ARG(usrData); if ((event & V_EVENT_SERVICESTATE_CHANGED) == V_EVENT_SERVICESTATE_CHANGED) { if(cmx_isInitialized() == TRUE){ manager = (u_serviceManager)usrData; if(manager != NULL){ kind = u_serviceManagerGetServiceStateKind(manager, V_SPLICED_NAME); if ((kind != STATE_INITIALISING) && (kind != STATE_OPERATIONAL)) { cmx_internalDetach(); u_objectFree(manager); manager = NULL; } } } } return event; }
static c_ulong u_serviceSpliceListener( u_dispatcher o, c_ulong event, c_voidp usrData) { v_serviceStateKind kind; watchSplicedAdmin admin = watchSplicedAdmin(usrData); kind = u_serviceManagerGetServiceStateKind(admin->serviceManager, V_SPLICED_NAME); if ((kind != STATE_INITIALISING) && (kind != STATE_OPERATIONAL)) { admin->callback(kind, admin->usrData); } return V_EVENT_SERVICESTATE_CHANGED; }