int UBusSubscriber::UnSubscribe(std::vector<std::string> events) { std::vector<std::string>::iterator it; ILOG_TRACE(UBUS_SUBSCRIBER); for (it = events.begin(); it != events.end(); ++it) UnSubscribe(*it); ILOG_DEBUG(UBUS_SUBSCRIBER, "unsubscribe events success\n"); return 0; }
int Channel::UpdateSubscriber(const ISubscriber* old_subscriber, const ISubscriber* new_subscriber) { if (NULL == old_subscriber || NULL == new_subscriber) { return -1; } int ret = UnSubscribe(old_subscriber); if (ret != 0) { return -2; } ret = Subscribe(new_subscriber); return (ret == 0 ? 0 : -3); }
int UBusSubscriber::Subscribe(std::vector<std::string> events) { std::vector<std::string>::iterator it; int ret; ILOG_TRACE(UBUS_SUBSCRIBER); for (it = events.begin(); it != events.end(); ++it) { ret = Subscribe(*it); if (ret) goto unsubscribe; } ILOG_DEBUG(UBUS_SUBSCRIBER, "subscribe events success\n"); return 0; unsubscribe: for (; it != events.begin(); --it) UnSubscribe(*it); ILOG_ERROR(UBUS_SUBSCRIBER, "subscribe events fail\n"); return -1; }
void Subscription::UnSubscribe(uint32_t handle) { return UnSubscribe(std::vector<uint32_t>(1, handle)); }