При загрузке или выгрузке данных в облачные службы (с помощью TAzureBlobService или TAmazonStorageService) нет никакого способа получить обратную связь о ходе загрузки/выгрузки.
Я вижу, что в конечном итоге вызывается TIdTCPClientCustom.Connect, и в этой функции он создает обработчик IOHandler по умолчанию для соединения, если он не существует (и это не так, если не используется SSL). Если бы я мог установить события OnWorkBegin, OnWorkEnd и OnWork для этого IOHandler, то я мог бы отслеживать ход выполнения, но я не вижу способа сделать это.
Если используется соединение SSL, то создается IOHandler (например, в TAzureBlobService.PrepareRequest), но IOHandler является интерфейсом и не имеет свойств OnWorkBegin и т. д.
Я думаю, что решение состоит в том, чтобы создать класс, унаследованный от TAzureBlobService или TAmazonStorageService, а затем переопределить метод PrepareRequest. В этом я могу получить доступ к экземпляру TCloudHTTP (как он создается в PrepareRequest), и оттуда я могу получить доступ к IOHandler. Но как мне создать этот IOHandler (поскольку он определен как интерфейс) и установить события (которые не являются частью этого интерфейса)?
Спасибо