AWS SDK for C++

AWS SDK for C++ Version 1.11.867

Loading...
Searching...
No Matches
UploadRequestImpl.h
1
5#pragma once
6
7#include <aws/core/Core_EXPORTS.h>
8#include <aws/s3-transfer/UploadRequest.h>
9#include <aws/core/client/AWSError.h>
10#include <aws/s3/S3Errors.h>
11#include <aws/s3/model/PutObjectRequest.h>
12#include <memory>
13
14namespace Aws {
15namespace S3 {
16namespace Transfer {
17
18struct UploadTransferState;
19
20namespace Internal {
21
27class AWS_CORE_LOCAL UploadRequestImpl {
28 public:
30 Aws::String key,
31 Aws::Vector<std::shared_ptr<UploadProgressListener>> transferListeners);
32 virtual ~UploadRequestImpl() = default;
33
38
39 // Validates the source and seeds any state the transfer needs before dispatch; empty on success.
41 const std::shared_ptr<UploadTransferState>& state) const = 0;
42
43 // Empty unless this request uploads from a file, in which case the CRT reads the file directly.
44 virtual const Aws::String& GetSourceFilePath() const;
45 // True when the CRT needs a body adapter built for the stream, and a Content-Length declared.
46 virtual bool IsStreamUpload() const { return false; }
47
48 const Aws::Vector<std::shared_ptr<UploadProgressListener>>& GetTransferListeners() const { return m_transferListeners; }
49 const Aws::Crt::Optional<uint64_t>& GetContentLength() const { return m_declaredLength; }
50 void SetContentLength(uint64_t contentLength) { m_declaredLength = contentLength; }
51 const Aws::S3::Model::PutObjectRequest& GetS3Request() const { return m_s3Request; }
53
54 protected:
57 Aws::Crt::Optional<uint64_t> m_declaredLength;
58};
59
60class AWS_CORE_LOCAL FileUploadImpl final : public UploadRequestImpl {
61 public:
63 Aws::String key,
64 Aws::String sourceFilePath,
65 Aws::Vector<std::shared_ptr<UploadProgressListener>> transferListeners);
66
68 const std::shared_ptr<UploadTransferState>& state) const override;
69 const Aws::String& GetSourceFilePath() const override { return m_sourceFilePath; }
70
71 private:
72 Aws::String m_sourceFilePath;
73};
74
75class AWS_CORE_LOCAL StreamUploadImpl final : public UploadRequestImpl {
76 public:
78 Aws::String key,
79 std::shared_ptr<Aws::IOStream> body,
80 Aws::Vector<std::shared_ptr<UploadProgressListener>> transferListeners);
81
83 const std::shared_ptr<UploadTransferState>& state) const override;
84 bool IsStreamUpload() const override { return true; }
85};
86
87} // namespace Internal
88} // namespace Transfer
89} // namespace S3
90} // namespace Aws
FileUploadImpl(Aws::String bucket, Aws::String key, Aws::String sourceFilePath, Aws::Vector< std::shared_ptr< UploadProgressListener > > transferListeners)
OptionalError PrepareTransferState(const std::shared_ptr< UploadTransferState > &state) const override
const Aws::String & GetSourceFilePath() const override
StreamUploadImpl(Aws::String bucket, Aws::String key, std::shared_ptr< Aws::IOStream > body, Aws::Vector< std::shared_ptr< UploadProgressListener > > transferListeners)
OptionalError PrepareTransferState(const std::shared_ptr< UploadTransferState > &state) const override
UploadRequestImpl(const UploadRequestImpl &)=delete
virtual OptionalError PrepareTransferState(const std::shared_ptr< UploadTransferState > &state) const =0
const Aws::Crt::Optional< uint64_t > & GetContentLength() const
const Aws::Vector< std::shared_ptr< UploadProgressListener > > & GetTransferListeners() const
Aws::Vector< std::shared_ptr< UploadProgressListener > > m_transferListeners
UploadRequestImpl(UploadRequestImpl &&)=delete
Aws::Crt::Optional< uint64_t > m_declaredLength
UploadRequestImpl & operator=(const UploadRequestImpl &)=delete
Aws::S3::Model::PutObjectRequest & MutableS3Request()
const Aws::S3::Model::PutObjectRequest & GetS3Request() const
UploadRequestImpl & operator=(UploadRequestImpl &&)=delete
UploadRequestImpl(Aws::String bucket, Aws::String key, Aws::Vector< std::shared_ptr< UploadProgressListener > > transferListeners)
Aws::S3::Model::PutObjectRequest m_s3Request
virtual const Aws::String & GetSourceFilePath() const
Aws::Crt::Optional< Aws::Client::AWSError< Aws::S3::S3Errors > > OptionalError
std::basic_string< char, std::char_traits< char >, Aws::Allocator< char > > String
std::vector< T, Aws::Allocator< T > > Vector