Author: Holger Jaekel Summary: convert Aws::StringStream to std::string ---- --- a/tiledb/sm/filesystem/s3.h +++ b/tiledb/sm/filesystem/s3.h @@ -67,6 +67,7 @@ #include #include #include +#include #include #include #include @@ -148,7 +149,7 @@ ss << " : " << err.GetMessage(); - return ss.str(); + return ss.str().c_str(); } } // namespace @@ -375,7 +376,7 @@ // Set header from S3Parameters custom headers for (auto& [key, val] : params_.custom_headers_) { - httpRequest->SetHeaderValue(key, val); + httpRequest->SetHeaderValue(Aws::String(key), Aws::String(val)); } } @@ -418,9 +419,9 @@ class S3Scanner : public LsScanner { public: /** Declare LsScanIterator as a friend class for access to call next(). */ - template + template friend class LsScanIterator; - using Iterator = LsScanIterator, Aws::S3::Model::Object>; + using Iterator = LsScanIterator, Aws::S3::Model::Object, Aws::Crt::StlAllocator< Aws::S3::Model::Object >>; /** Constructor. */ S3Scanner( @@ -919,7 +920,7 @@ LsObjects objects; for (auto object : s3_scanner) { - objects.emplace_back(prefix + "/" + object.GetKey(), object.GetSize()); + objects.emplace_back(Aws::String(prefix) + Aws::String("/") + Aws::String(object.GetKey()), object.GetSize()); } return objects; } @@ -1651,7 +1652,7 @@ } list_objects_request_.SetBucket(aws_uri.GetAuthority()); - const std::string aws_uri_str(S3::remove_front_slash(aws_uri.GetPath())); + const std::string aws_uri_str(S3::remove_front_slash(aws_uri.GetPath().c_str())); list_objects_request_.SetPrefix(aws_uri_str.c_str()); // Empty delimiter returns recursive results from S3. list_objects_request_.SetDelimiter(delimiter_.c_str()); @@ -1675,8 +1676,8 @@ while (ptr != end_) { auto object = *ptr; uint64_t size = object.GetSize(); - std::string path = "s3://" + list_objects_request_.GetBucket() + - S3::add_front_slash(object.GetKey()); + std::string path = (Aws::String("s3://") + list_objects_request_.GetBucket() + + Aws::String(S3::add_front_slash(object.GetKey().c_str()))).c_str(); // TODO: Add support for directory pruning. if (this->file_filter_(path, size)) { --- a/tiledb/sm/filesystem/ls_scanner.h +++ b/tiledb/sm/filesystem/ls_scanner.h @@ -130,12 +130,12 @@ * @tparam T The data type stored by this iterator. * TODO: Discuss using T for iterator type instead of underlying data type. */ -template +template > class LsScanIterator { public: using value_type = T; using difference_type = ptrdiff_t; - using pointer = typename std::vector::const_iterator; + using pointer = typename std::vector::const_iterator; using reference = const T&; using iterator_category = std::input_iterator_tag;