Обратный вызов события Gsoap Http

Я скачал gSoap и сгенерировал исходный код для wsdl. И я мог подключиться к серверу и отправить запрос.

Но я не могу понять, как я могу перехватывать http-события, такие как отправленные байты, полученные байты. Я прочитал этот документ http://www.cs.fsu.edu/~engelen/soapdoc2.html.

Но я не могу найти то, что мне нужно. Я нашел функцию fsend. Насколько я понимаю, эта функция выполняется, когда мы отправляем запрос на сервер. Должен ли я сделать что-то подобное?

service.fsend = Custom;

Где Custom мой обратный вызов?

Я обнаружил, что другим обратным вызовом является ffiltersend. Насколько я понимаю, эта функция запускается при отправке запроса. Я использую это. Но я не понимаю, что последний параметр в этом методе - это указатель на size_t. Когда я получаю значение из этого указателя и делю его на 2, я получаю количество своих реальных байтов. Почему?


person Artem Ibragimov    schedule 06.11.2012    source источник
comment
байты отправлены, байты получены очень важны для вас?   -  person billz    schedule 06.11.2012
comment
Для меня важнее время отправки, так как я загружаю файл через gSoap... Поэтому количество полученных байтов для меня не важно... И я до сих пор не понимаю, как я могу это сделать....   -  person Artem Ibragimov    schedule 06.11.2012


Ответы (1)


Чтобы получить статистику о количестве отправленных и полученных байтов, а также зарегистрировать входящие и исходящие сообщения в файловой системе, используйте «подключаемый модуль ведения журнала», который поставляется с программным обеспечением gSOAP.

Сначала зарегистрируйте плагин с помощью:

#include "plugin/logging.h" // this file is in the gSOAP distro path
...
soap_register_plugin(soap, logging);

Затем используйте эти функции, чтобы установить места назначения ведения журнала для входящих и исходящих сообщений:

soap_set_logging_inbound(struct soap*, FILE*);
soap_set_logging_outbound(struct soap*, FILE*);

где дескриптор файла, переданный в качестве второго аргумента, указывает на открытый файл, который можно открывать и закрывать до и после регистрации. Используйте NULL в качестве второго аргумента, чтобы отключить ведение журнала.

Чтобы получить статистику, то есть количество байтов в размере сообщения, используйте:

soap_get_logging_stats(struct soap*, size_t *sent, size_t *recv);

где второй и третий аргументы будут обновлены этим вызовом.

Вот и все.

Если вы хотите использовать свои собственные обратные вызовы для обработки сообщений, возможно, неплохо начать с изучения из файла plugin/logging.c того, как это делается. Этот файл короткий.

person Dr. Alex RE    schedule 05.07.2017