0

別のプロセスが追加されている azure ストレージの追加 BLOB を読み取ろうとすると、Cpprest がアサートします。以下は、私のコードの関連するスニペットです。assert は、while ループを何度か繰り返した後、blob の最後に到達する前に .get() 中に発生します。

auto blob = container.get_append_blob_reference("asdf");
auto stream = blob.open_read();

while (true)
{
    auto  cb = concurrency::streams::container_buffer<vector<uint8_t>>({}, ios_base::out);
    if (stream.read(cb, 1024 * 1024).get() == 0)
    {
        break;
    }
}

アサートメッセージは次のとおりです。

myapp: /usr/local/include/cpprest/containerstream.h:120: size_t
Concurrency::streams::details::basic_container_buffer<_CollectionType>::in_avail() const
[with _CollectionType = std::vector<unsigned char>; size_t = long unsigned int]:
Assertion `m_current_position <= m_data.size()' failed.

どうすればこれに対処できますか?

4

1 に答える 1