OmniSciDB  ba1bac9284
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
S3Archive Class Reference

#include <S3Archive.h>

+ Inheritance diagram for S3Archive:
+ Collaboration diagram for S3Archive:

Public Member Functions

 S3Archive (const std::string &url, const bool plain_text)
 
 S3Archive (const std::string &url, const std::string &s3_access_key, const std::string &s3_secret_key, const std::string &s3_session_token, const std::string &s3_region, const std::string &s3_endpoint, const bool plain_text)
 
 ~S3Archive () override
 
void init_for_read () override
 
const std::vector< std::string > & get_objkeys ()
 
const std::string land (const std::string &objkey, std::exception_ptr &teptr, const bool for_detection)
 
void vacuum (const std::string &objkey)
 
size_t get_total_file_size () const
 
- Public Member Functions inherited from Archive
 Archive (const std::string url, const bool plain_text)
 
virtual ~Archive ()
 
virtual std::string archive_error (int err)
 
virtual bool read_next_header ()
 
virtual bool read_data_block (const void **buff, size_t *size, int64_t *offset)
 
virtual int64_t get_position_compressed () const
 
virtual int open ()
 
virtual int close ()
 
virtual ptrdiff_t read (const void **buff)
 
const std::string url_part (const int i)
 
std::string entryName ()
 

Private Attributes

std::string s3_access_key
 
std::string s3_secret_key
 
std::string s3_session_token
 
std::string s3_region
 
std::string s3_endpoint
 
std::string s3_temp_dir
 
std::string bucket_name
 
std::string prefix_name
 
std::vector< std::string > objkeys
 
std::map< const std::string,
const std::string > 
file_paths
 
size_t total_file_size {0}
 

Additional Inherited Members

- Static Public Member Functions inherited from Archive
static ptrdiff_t read (struct archive *a, void *client_data, const void **buff)
 
static int open (struct archive *a, void *client_data)
 
static int close (struct archive *a, void *client_data)
 
static void parse_url (const std::string url, std::map< int, std::string > &url_parts)
 
- Protected Attributes inherited from Archive
std::string url
 
std::map< int, std::string > url_parts
 
archive * ar = 0
 
archive_entry * entry
 
bool plain_text
 

Detailed Description

Definition at line 38 of file S3Archive.h.

Constructor & Destructor Documentation

S3Archive::S3Archive ( const std::string &  url,
const bool  plain_text 
)
inline

Definition at line 40 of file S3Archive.h.

References s3_access_key, s3_endpoint, s3_region, s3_secret_key, and s3_session_token.

40  : Archive(url, plain_text) {
41  // these envs are on server side so are global settings
42  // which make few senses in case of private s3 resources
43  char* env;
44  if (0 != (env = getenv("AWS_REGION"))) {
45  s3_region = env;
46  }
47  if (0 != (env = getenv("AWS_ACCESS_KEY_ID"))) {
48  s3_access_key = env;
49  }
50  if (0 != (env = getenv("AWS_SECRET_ACCESS_KEY"))) {
51  s3_secret_key = env;
52  }
53  if (0 != (env = getenv("AWS_SESSION_TOKEN"))) {
54  s3_session_token = env;
55  }
56 
57  if (0 != (env = getenv("AWS_ENDPOINT"))) {
58  s3_endpoint = env;
59  }
60  }
std::string s3_endpoint
Definition: S3Archive.h:130
std::string s3_region
Definition: S3Archive.h:129
std::string s3_access_key
Definition: S3Archive.h:126
std::string s3_session_token
Definition: S3Archive.h:128
std::string url
Definition: Archive.h:187
std::string s3_secret_key
Definition: S3Archive.h:127
bool plain_text
Definition: Archive.h:191
Archive(const std::string url, const bool plain_text)
Definition: Archive.h:31
S3Archive::S3Archive ( const std::string &  url,
const std::string &  s3_access_key,
const std::string &  s3_secret_key,
const std::string &  s3_session_token,
const std::string &  s3_region,
const std::string &  s3_endpoint,
const bool  plain_text 
)
inline

Definition at line 62 of file S3Archive.h.

References s3_access_key, s3_endpoint, s3_region, s3_secret_key, s3_session_token, and s3_temp_dir.

73  this->s3_region = s3_region;
74  this->s3_endpoint = s3_endpoint;
75 
76  // this must be local to omnisci_server not client
77  // or posix dir path accessible to omnisci_server
78  auto env_s3_temp_dir = getenv("TMPDIR");
79  s3_temp_dir = env_s3_temp_dir ? env_s3_temp_dir : "/tmp";
80  }
std::string s3_endpoint
Definition: S3Archive.h:130
std::string s3_region
Definition: S3Archive.h:129
std::string s3_access_key
Definition: S3Archive.h:126
std::string s3_session_token
Definition: S3Archive.h:128
std::string s3_temp_dir
Definition: S3Archive.h:131
std::string url
Definition: Archive.h:187
std::string s3_secret_key
Definition: S3Archive.h:127
S3Archive(const std::string &url, const bool plain_text)
Definition: S3Archive.h:40
bool plain_text
Definition: Archive.h:191
S3Archive::~S3Archive ( )
inlineoverride

Definition at line 82 of file S3Archive.h.

82  {
83 #ifdef HAVE_AWS_S3
84  for (auto& thread : threads) {
85  if (thread.joinable()) {
86  thread.join();
87  }
88  }
89 #endif // HAVE_AWS_S3
90  }

Member Function Documentation

const std::vector<std::string>& S3Archive::get_objkeys ( )
inline

Definition at line 99 of file S3Archive.h.

References objkeys.

99 { return objkeys; }
std::vector< std::string > objkeys
Definition: S3Archive.h:135
size_t S3Archive::get_total_file_size ( ) const
inline

Definition at line 115 of file S3Archive.h.

References total_file_size.

115 { return total_file_size; }
size_t total_file_size
Definition: S3Archive.h:137
void S3Archive::init_for_read ( )
inlineoverridevirtual

Reimplemented from Archive.

Definition at line 95 of file S3Archive.h.

95  {
96  throw std::runtime_error("AWS S3 support not available");
97  }
const std::string S3Archive::land ( const std::string &  objkey,
std::exception_ptr &  teptr,
const bool  for_detection 
)
inline

Definition at line 106 of file S3Archive.h.

108  {
109  throw std::runtime_error("AWS S3 support not available");
110  }
void S3Archive::vacuum ( const std::string &  objkey)
inline

Definition at line 111 of file S3Archive.h.

111  {
112  throw std::runtime_error("AWS S3 support not available");
113  }

Member Data Documentation

std::string S3Archive::bucket_name
private

Definition at line 133 of file S3Archive.h.

std::map<const std::string, const std::string> S3Archive::file_paths
private

Definition at line 136 of file S3Archive.h.

std::vector<std::string> S3Archive::objkeys
private

Definition at line 135 of file S3Archive.h.

Referenced by get_objkeys().

std::string S3Archive::prefix_name
private

Definition at line 134 of file S3Archive.h.

std::string S3Archive::s3_access_key
private
std::string S3Archive::s3_endpoint
private
std::string S3Archive::s3_region
private
std::string S3Archive::s3_secret_key
private
std::string S3Archive::s3_session_token
private
std::string S3Archive::s3_temp_dir
private

Definition at line 131 of file S3Archive.h.

Referenced by S3Archive().

size_t S3Archive::total_file_size {0}
private

Definition at line 137 of file S3Archive.h.

Referenced by get_total_file_size().


The documentation for this class was generated from the following files: