Я пытаюсь включить множественный одновременный доступ клиентов к веб-сервису, позволяя клиенту сделать запрос и заблокировать, пока данные не станут доступны (я делаю это таким образом, поскольку gsoap не поддерживает уведомления)
Мой класс веб-сервиса скомпилирован с WITH_PURE_VIRTAL, что означает, что я не могу создавать его экземпляры, так как это абстрактный класс. Таким образом, я использую один созданный мной класс, который наследуется от класса webservice и отвечает за управление запросами webservice и webclient.
Однако, когда мой класс занят обработкой существующего клиента, я не могу получать другие запросы.
Я прочитал ( здесь ), что вы должны запустить поток с чем-то похожим на это:
soap_serve((struct soap*)soap);
soap_destroy((struct soap*)soap); // dealloc C++ data
soap_end((struct soap*)soap); // dealloc data and clean up
soap_done((struct soap*)soap); // detach soap struct
free(soap);
Однако, когда я изменяю этот код для вызова своего класса веб-сервиса, вызов обслуживания ничего не делает.
Я также попытался запустить новый поток внутри методов вызова веб-службы, но как только поток запускается, веб-клиент получает пустой ответ.
У кого-нибудь есть предложения?