int NotificationProducerBindingService::Subscribe(_wsnt__Subscribe *wsnt__Subscribe, _wsnt__SubscribeResponse *wsnt__SubscribeResponse) { std::cout << __FUNCTION__ << std::endl; ServiceContext* ctx = (ServiceContext*)this->soap->user; NotificationConsumerBindingProxy* subcriberProxy = new NotificationConsumerBindingProxy(wsnt__Subscribe->ConsumerReference.Address); _wsnt__Notify notification; notification.NotificationMessage.push_back(soap_new_wsnt__NotificationMessageHolderType(subcriberProxy->soap)); notification.NotificationMessage.back()->Message.__any = soap_dom_element(subcriberProxy->soap, (char*)NULL, (char*)NULL, (char*)"subscribed"); if (subcriberProxy->Notify(¬ification) != SOAP_OK) { subcriberProxy->soap_stream_fault(std::cerr); } ctx->m_subscriber.push_back(subcriberProxy); std::cout << __FUNCTION__ << " nb subscriber:" << ctx->m_subscriber.size() << std::endl; std::ostringstream os; os << "http://" << ctx->getServerIpFromClientIp(htonl(this->soap->ip)) << ":" << ctx->m_port; std::string url(os.str()); time_t sec = time(NULL); wsnt__SubscribeResponse->SubscriptionReference.Address = strcpy((char*)soap_malloc(this->soap, url.size()+1), url.c_str()); wsnt__SubscribeResponse->CurrentTime = soap_new_ptr(this->soap,sec); wsnt__SubscribeResponse->TerminationTime = soap_new_ptr(this->soap,sec+3600); return SOAP_OK; }
int NotificationProducerBindingService::Subscribe(_wsnt__Subscribe *wsnt__Subscribe, _wsnt__SubscribeResponse *wsnt__SubscribeResponse) { std::cout << __FUNCTION__ << std::endl; ServiceContext* ctx = (ServiceContext*)this->soap->user; NotificationConsumerBindingProxy* subcriberProxy = new NotificationConsumerBindingProxy(wsnt__Subscribe->ConsumerReference.Address); _wsnt__Notify notification; notification.NotificationMessage.push_back(soap_new_wsnt__NotificationMessageHolderType(subcriberProxy->soap)); notification.NotificationMessage.back()->Message.__any = soap_dom_element(subcriberProxy->soap, (char*)NULL, (char*)NULL, (char*)"subscribed"); if (subcriberProxy->Notify(¬ification) != SOAP_OK) { subcriberProxy->soap_stream_fault(std::cerr); } ctx->m_subscriber.push_back(subcriberProxy); std::cout << __FUNCTION__ << "nb subscriber:" << ctx->m_subscriber.size() << std::endl; return SOAP_OK; }
int DeviceBindingService::GetServices(_tds__GetServices *tds__GetServices, _tds__GetServicesResponse *tds__GetServicesResponse) { std::cout << __FUNCTION__ << std::endl; ServiceContext* ctx = (ServiceContext*)this->soap->user; std::ostringstream os; os << "http://" << ctx->getServerIpFromClientIp(htonl(this->soap->ip)) << ":" << ctx->m_port; std::string url(os.str()); tds__GetServicesResponse->Service.push_back(soap_new_tds__Service(this->soap)); tds__GetServicesResponse->Service.back()->Namespace = "http://www.onvif.org/ver10/device/wsdl"; tds__GetServicesResponse->Service.back()->XAddr = url; tds__GetServicesResponse->Service.back()->Version = soap_new_req_tt__OnvifVersion(this->soap,2,5); if (tds__GetServices->IncludeCapability) { tds__GetServicesResponse->Service.back()->Capabilities = soap_new__tds__Service_Capabilities(this->soap); tds__DeviceServiceCapabilities *capabilities = ctx->getDeviceServiceCapabilities(this->soap); tds__GetServicesResponse->Service.back()->Capabilities->__any = soap_dom_element(this->soap, NULL, "tds:Capabilities", capabilities, capabilities->soap_type()); } tds__GetServicesResponse->Service.push_back(soap_new_tds__Service(this->soap)); tds__GetServicesResponse->Service.back()->Namespace = "http://www.onvif.org/ver10/media/wsdl"; tds__GetServicesResponse->Service.back()->XAddr = url; tds__GetServicesResponse->Service.back()->Version = soap_new_req_tt__OnvifVersion(this->soap,2,6); if (tds__GetServices->IncludeCapability) { tds__GetServicesResponse->Service.back()->Capabilities = soap_new__tds__Service_Capabilities(this->soap); trt__Capabilities *capabilities = ctx->getMediaServiceCapabilities(this->soap); tds__GetServicesResponse->Service.back()->Capabilities->__any = soap_dom_element(this->soap, NULL, "trt:Capabilities", capabilities, capabilities->soap_type()); } tds__GetServicesResponse->Service.push_back(soap_new_tds__Service(this->soap)); tds__GetServicesResponse->Service.back()->Namespace = "http://www.onvif.org/ver20/imaging/wsdl"; tds__GetServicesResponse->Service.back()->XAddr = url; tds__GetServicesResponse->Service.back()->Version = soap_new_req_tt__OnvifVersion(this->soap,2,5); if (tds__GetServices->IncludeCapability) { tds__GetServicesResponse->Service.back()->Capabilities = soap_new__tds__Service_Capabilities(this->soap); timg__Capabilities *capabilities = ctx->getImagingServiceCapabilities(this->soap); tds__GetServicesResponse->Service.back()->Capabilities->__any = soap_dom_element(this->soap, NULL, "timg:Capabilities", capabilities, capabilities->soap_type()); } tds__GetServicesResponse->Service.push_back(soap_new_tds__Service(this->soap)); tds__GetServicesResponse->Service.back()->Namespace = "http://www.onvif.org/ver10/events/wsdl"; tds__GetServicesResponse->Service.back()->XAddr = url; tds__GetServicesResponse->Service.back()->Version = soap_new_req_tt__OnvifVersion(this->soap,2,6); if (tds__GetServices->IncludeCapability) { tds__GetServicesResponse->Service.back()->Capabilities = soap_new__tds__Service_Capabilities(this->soap); tev__Capabilities *capabilities = ctx->getEventServiceCapabilities(this->soap); tds__GetServicesResponse->Service.back()->Capabilities->__any = soap_dom_element(this->soap, NULL, "tev:Capabilities", capabilities, capabilities->soap_type()); } tds__GetServicesResponse->Service.push_back(soap_new_tds__Service(this->soap)); tds__GetServicesResponse->Service.back()->Namespace = "http://www.onvif.org/ver10/recording/wsdl"; tds__GetServicesResponse->Service.back()->XAddr = url; tds__GetServicesResponse->Service.back()->Version = soap_new_req_tt__OnvifVersion(this->soap,2,5); if (tds__GetServices->IncludeCapability) { tds__GetServicesResponse->Service.back()->Capabilities = soap_new__tds__Service_Capabilities(this->soap); trc__Capabilities *capabilities = ctx->getRecordingServiceCapabilities(this->soap); tds__GetServicesResponse->Service.back()->Capabilities->__any = soap_dom_element(this->soap, NULL, "trc:Capabilities", capabilities, capabilities->soap_type()); } tds__GetServicesResponse->Service.push_back(soap_new_tds__Service(this->soap)); tds__GetServicesResponse->Service.back()->Namespace = "http://www.onvif.org/ver10/replay/wsdl"; tds__GetServicesResponse->Service.back()->XAddr = url; tds__GetServicesResponse->Service.back()->Version = soap_new_req_tt__OnvifVersion(this->soap,2,2); if (tds__GetServices->IncludeCapability) { tds__GetServicesResponse->Service.back()->Capabilities = soap_new__tds__Service_Capabilities(this->soap); trp__Capabilities *capabilities = ctx->getReplayServiceCapabilities(this->soap); tds__GetServicesResponse->Service.back()->Capabilities->__any = soap_dom_element(this->soap, NULL, "trp:Capabilities", capabilities, capabilities->soap_type()); } tds__GetServicesResponse->Service.push_back(soap_new_tds__Service(this->soap)); tds__GetServicesResponse->Service.back()->Namespace = "http://www.onvif.org/ver10/search/wsdl"; tds__GetServicesResponse->Service.back()->XAddr = url; tds__GetServicesResponse->Service.back()->Version = soap_new_req_tt__OnvifVersion(this->soap,2,4); if (tds__GetServices->IncludeCapability) { tds__GetServicesResponse->Service.back()->Capabilities = soap_new__tds__Service_Capabilities(this->soap); tse__Capabilities *capabilities = ctx->getSearchServiceCapabilities(this->soap); tds__GetServicesResponse->Service.back()->Capabilities->__any = soap_dom_element(this->soap, NULL, "trs:Capabilities", capabilities, capabilities->soap_type()); } tds__GetServicesResponse->Service.push_back(soap_new_tds__Service(this->soap)); tds__GetServicesResponse->Service.back()->Namespace = "http://www.onvif.org/ver10/display/wsdl"; tds__GetServicesResponse->Service.back()->XAddr = url; tds__GetServicesResponse->Service.back()->Version = soap_new_req_tt__OnvifVersion(this->soap,2,1); if (tds__GetServices->IncludeCapability) { tds__GetServicesResponse->Service.back()->Capabilities = soap_new__tds__Service_Capabilities(this->soap); tls__Capabilities *capabilities = ctx->getDisplayServiceCapabilities(this->soap); tds__GetServicesResponse->Service.back()->Capabilities->__any = soap_dom_element(this->soap, NULL, "tls:Capabilities", capabilities, capabilities->soap_type()); } tds__GetServicesResponse->Service.push_back(soap_new_tds__Service(this->soap)); tds__GetServicesResponse->Service.back()->Namespace = "http://www.onvif.org/ver10/deviceIO/wsdl"; tds__GetServicesResponse->Service.back()->XAddr = url; tds__GetServicesResponse->Service.back()->Version = soap_new_req_tt__OnvifVersion(this->soap,2,6); if (tds__GetServices->IncludeCapability) { tds__GetServicesResponse->Service.back()->Capabilities = soap_new__tds__Service_Capabilities(this->soap); tmd__Capabilities *capabilities = ctx->getDeviceIOServiceCapabilities(this->soap); tds__GetServicesResponse->Service.back()->Capabilities->__any = soap_dom_element(this->soap, NULL, "tmd:Capabilities", capabilities, capabilities->soap_type()); } tds__GetServicesResponse->Service.push_back(soap_new_tds__Service(this->soap)); tds__GetServicesResponse->Service.back()->Namespace = "http://www.onvif.org/ver10/receiver/wsdl"; tds__GetServicesResponse->Service.back()->XAddr = url; tds__GetServicesResponse->Service.back()->Version = soap_new_req_tt__OnvifVersion(this->soap,2,1); if (tds__GetServices->IncludeCapability) { tds__GetServicesResponse->Service.back()->Capabilities = soap_new__tds__Service_Capabilities(this->soap); trv__Capabilities *capabilities = ctx->getReceiverServiceCapabilities(this->soap); tds__GetServicesResponse->Service.back()->Capabilities->__any = soap_dom_element(this->soap, NULL, "trv:Capabilities", capabilities, capabilities->soap_type()); } return SOAP_OK; }