コード例 #1
0
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;
}
コード例 #2
0
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;
}
コード例 #3
0
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;
}