Повторите попытку после неустранимой ошибки в Azure IoT C SDK - PullRequest
0 голосов
/ 04 декабря 2018

В соответствии с этой документацией SDK не пытается повторно подключиться, если обнаруживает неисправимую ошибку.Однако в соответствующей документации для C SDK нет упоминания об исправимой или неисправимой ошибке (или, по крайней мере, я ее там не нашел).

  • Как я могу узнать, находится ли SDK в данный момент в состоянии, в котором он может в конечном итоге восстановиться или где необходимо вручную повторить попытку повторного подключения?

  • Если политика повторных попыток решит, что нетЧтобы повторить попытку повторного подключения, возможно ли выполнить повторное подключение вручную, не разрушая дескриптор устройства и не создавая новый (например, с IoTHubDeviceClient_CreateFromConnectionString)?

1 Ответ

0 голосов
/ 05 декабря 2018
  • C SDK в настоящее время не различает неисправимые и восстанавливаемые ошибки с точки зрения повторных попыток.

  • Все типы сбоев рассматриваются как восстанавливаемые сбои, которые потенциально могут быть восстановлены, поэтому документацию следует исправить, чтобы отразить текущую функциональность 2018_11_20 release.

  • Тем не менее, SetConnectionStatusCallback вернет соответствующие коды причин, которые могут помочь определить, следует ли разрешить повторную попытку SDK или необходимо, чтобы приложение установило новое соединение.

  • Например, я бы рассмотрел IOTHUB_CLIENT_CONNECTION_BAD_CREDENTIAL как неисправимую ошибку для клиента устройства моего приложения.

  • Вы правы - необходимо создать новый дескриптор устройства, чтобы повторить попытку подключения вручную.Это связано с тем, что все C SDK APIs отключают этот дескриптор для запроса различных состояний клиента устройства в iothub_device_client.

...