bool ControlPoint::subscribe(Service *service, long timeout) { if (service->isSubscribed() == true) { const char *sid = service->getSID(); return subscribe(service, sid, timeout); } Device *rootDev = service->getRootDevice(); if (rootDev == NULL) return false; lock(); const char *ifAddress = rootDev->getInterfaceAddress(); SubscriptionRequest subReq; string callbackURLBuf; subReq.setSubscribeRequest(service, getEventSubCallbackURL(ifAddress, callbackURLBuf), timeout); if (Debug::isOn() == true) subReq.print(); SubscriptionResponse *subRes = subReq.post(); if (Debug::isOn() == true) subRes->print(); bool ret = false; if (subRes->isSuccessful() == true) { string sidBuf; service->setSID(subRes->getSID(sidBuf)); service->setTimeout(subRes->getTimeout()); ret = true; } else service->clearSID(); unlock(); return ret; }
bool ControlPoint::unsubscribe(Service *service) { SubscriptionRequest subReq; subReq.setUnsubscribeRequest(service); if (Debug::isOn() == true) subReq.print(); SubscriptionResponse *subRes = subReq.post(); if (Debug::isOn() == true) subRes->print(); if (subRes->isSuccessful() == true) { service->clearSID(); return true; } return false; }
bool ControlPoint::subscribe(Service *service, const std::string &uuid, long timeout) { SubscriptionRequest subReq; subReq.setRenewRequest(service, uuid, timeout); if (Debug::isOn() == true) subReq.print(); SubscriptionResponse *subRes = subReq.post(); if (Debug::isOn() == true) subRes->print(); if (subRes->isSuccessful() == true) { string sidBuf; service->setSID(subRes->getSID(sidBuf)); service->setTimeout(subRes->getTimeout()); return true; } service->clearSID(); return false; }