|
Arachne 1.0
Arachne - the perpetual stitcher of Wikidata entities.
|
Classes | |
| struct | curl_easy_deleter |
| struct | curl_url_deleter |
| struct | curl_slist_deleter |
| struct | parsed_url |
| struct | allowed_authority |
| class | verified_body_file |
| class | staging_file |
| struct | receive_context |
| struct | progress_context |
Typedefs | |
| using | easy_handle = std::unique_ptr<CURL, curl_easy_deleter> |
| using | url_handle = std::unique_ptr<CURLU, curl_url_deleter> |
| using | header_list = std::unique_ptr<curl_slist, curl_slist_deleter> |
Functions | |
| void | curl_share_lock (CURL *, const curl_lock_data, const curl_lock_access, void *) noexcept |
| void | curl_share_unlock (CURL *, const curl_lock_data, void *) noexcept |
| void | initialize_curl () |
| bool | is_control (const char character) noexcept |
| bool | valid_request_id (const std::string_view request_id) |
| std::string | artifact_id_for (const std::string_view request_id) |
| bool | valid_header_name (const std::string_view name) |
| std::string | ascii_lower (std::string value) |
| bool | valid_header (const http_header &header) |
| std::optional< std::string > | normalize_host (const std::string_view input) |
| std::optional< unsigned > | parse_port (const std::string_view text) noexcept |
| std::optional< parsed_url > | parse_url (const std::string &value, std::string &error) |
| std::optional< allowed_authority > | parse_allowed_authority (const std::string_view input) |
| bool | host_allowed (const parsed_url &url, const std::vector< std::string > &allowed_hosts, std::string &error) |
| std::optional< std::string > | resolve_redirect (const std::string &base, const std::string &location, std::string &error) |
| bool | path_begins_with (const std::filesystem::path &path, const std::filesystem::path &root) |
| bool | ensure_safe_parent (const std::filesystem::path &root, const std::filesystem::path &target, std::string &error) |
| bool | ensure_safe_existing_file (const std::filesystem::path &root, const std::filesystem::path &candidate, bool &unsafe, std::string &error) |
| std::size_t | body_read_callback (char *destination, const std::size_t size, const std::size_t count, void *user_data) noexcept |
| int | body_seek_callback (void *user_data, const curl_off_t offset, const int origin) noexcept |
| int | transfer_progress_callback (void *user_data, const curl_off_t download_total, const curl_off_t download_now, const curl_off_t upload_total, const curl_off_t upload_now) noexcept |
| bool | write_all (const int descriptor, const char *data, std::size_t size, std::string &error) noexcept |
| std::size_t | body_callback (char *contents, const std::size_t size, const std::size_t count, void *user_data) noexcept |
| std::string_view | trim_header_value (std::string_view value) noexcept |
| std::size_t | response_header_callback (char *contents, const std::size_t size, const std::size_t count, void *user_data) noexcept |
| bool | is_redirect_status (const long status) noexcept |
| bool | is_retryable_status (const long status) noexcept |
| bool | is_retryable_curl_status (const CURLcode status) noexcept |
| std::optional< std::chrono::milliseconds > | retry_after_delay (const std::vector< http_header > &headers) |
| std::chrono::milliseconds | retry_delay (const fetch_request_v1 &request, const std::size_t attempt, const std::vector< http_header > &headers) |
| long | timeout_milliseconds (const std::chrono::steady_clock::time_point deadline) noexcept |
| header_list | build_request_headers (const std::vector< http_header > &headers) |
| acquired_artifact_v1 | fail_result (acquired_artifact_v1 result, const transport_status status, std::string message) |
| std::string | validation_message (const arachnespace::contracts::validation_result &validation) |
| std::string | rfc3339 (const std::chrono::system_clock::time_point time) |
| std::string_view | status_name (const transport_status status) noexcept |
| std::optional< std::string > | response_content_type (const std::vector< http_header > &headers) |
| bool | sensitive_header_name (const std::string_view name) |
| int | hexadecimal_value (const char character) noexcept |
| std::string | decode_query_name (const std::string_view name) |
| bool | sensitive_query_name (std::string name) |
| std::string | redact_url_query (const std::string &url) |
| std::string | receipt_safe_text (const std::string_view value) |
Variables | |
| constexpr std::size_t | maximum_header_bytes = 1024U * 1024U |
| constexpr std::size_t | maximum_response_headers = 1'024U |
| constexpr std::size_t | maximum_redirects = 20U |
| constexpr std::size_t | maximum_transport_attempts = 20U |
| constexpr std::size_t | maximum_url_bytes = 64U * 1024U |
| constexpr std::size_t | maximum_request_id_bytes = 128U |
| std::once_flag | curl_global_once |
| std::recursive_mutex | curl_share_mutex |
| CURLSH * | curl_connection_share = nullptr |
| std::atomic< std::uint64_t > | stage_sequence { 0 } |
| typedef std::unique_ptr< CURL, curl_easy_deleter > arachne::pheidippides::anonymous_namespace{transport.cpp}::easy_handle = std::unique_ptr<CURL, curl_easy_deleter> |
Definition at line 77 of file transport.cpp.
| typedef std::unique_ptr< curl_slist, curl_slist_deleter > arachne::pheidippides::anonymous_namespace{transport.cpp}::header_list = std::unique_ptr<curl_slist, curl_slist_deleter> |
Definition at line 79 of file transport.cpp.
| typedef std::unique_ptr< CURLU, curl_url_deleter > arachne::pheidippides::anonymous_namespace{transport.cpp}::url_handle = std::unique_ptr<CURLU, curl_url_deleter> |
Definition at line 78 of file transport.cpp.
|
nodiscard |
Definition at line 130 of file transport.cpp.
References maximum_request_id_bytes, and arachne::crypto::sha256().

|
nodiscard |
Definition at line 149 of file transport.cpp.
Referenced by response_header_callback(), and sensitive_header_name().

|
noexcept |
Definition at line 869 of file transport.cpp.
References arachne::pheidippides::anonymous_namespace{transport.cpp}::receive_context::byte_count, arachne::pheidippides::anonymous_namespace{transport.cpp}::receive_context::descriptor, arachne::pheidippides::anonymous_namespace{transport.cpp}::receive_context::max_bytes, arachne::pheidippides::anonymous_namespace{transport.cpp}::receive_context::too_large, write_all(), arachne::pheidippides::anonymous_namespace{transport.cpp}::receive_context::write_error, and arachne::pheidippides::anonymous_namespace{transport.cpp}::receive_context::write_failed.
Referenced by arachne::pheidippides::transport::execute().


|
noexcept |
Definition at line 661 of file transport.cpp.
References arachne::pheidippides::anonymous_namespace{transport.cpp}::verified_body_file::read().
Referenced by arachne::pheidippides::transport::execute().


|
noexcept |
Definition at line 673 of file transport.cpp.
References arachne::pheidippides::anonymous_namespace{transport.cpp}::verified_body_file::seek().
Referenced by arachne::pheidippides::transport::execute().


|
nodiscard |
Definition at line 1081 of file transport.cpp.
|
noexcept |
Definition at line 49 of file transport.cpp.
References curl_share_mutex.
Referenced by initialize_curl().

|
noexcept |
Definition at line 55 of file transport.cpp.
References curl_share_mutex.
Referenced by initialize_curl().

|
nodiscard |
Definition at line 1205 of file transport.cpp.
|
nodiscard |
Definition at line 447 of file transport.cpp.
References path_begins_with().
Referenced by arachne::pheidippides::anonymous_namespace{transport.cpp}::verified_body_file::open_and_verify().


|
nodiscard |
Definition at line 399 of file transport.cpp.
References path_begins_with().

|
nodiscard |
Definition at line 1095 of file transport.cpp.
References arachne::pheidippides::acquired_artifact_v1::error_message, and arachne::pheidippides::acquired_artifact_v1::status.
|
nodiscardnoexcept |
Definition at line 1192 of file transport.cpp.
|
nodiscard |
Definition at line 328 of file transport.cpp.
References arachne::pheidippides::anonymous_namespace{transport.cpp}::parsed_url::scheme.
| void arachne::pheidippides::anonymous_namespace{transport.cpp}::initialize_curl | ( | ) |
Definition at line 81 of file transport.cpp.
References curl_connection_share, curl_global_once, curl_share_lock(), and curl_share_unlock().
Referenced by arachne::pheidippides::transport::transport().


|
nodiscardnoexcept |
Definition at line 112 of file transport.cpp.
|
nodiscardnoexcept |
Definition at line 958 of file transport.cpp.
Referenced by arachne::pheidippides::transport::execute().

|
nodiscardnoexcept |
Definition at line 979 of file transport.cpp.
Referenced by arachne::pheidippides::transport::execute().

|
nodiscardnoexcept |
Definition at line 973 of file transport.cpp.
Referenced by arachne::pheidippides::transport::execute().

|
nodiscard |
Definition at line 168 of file transport.cpp.
|
nodiscard |
Definition at line 292 of file transport.cpp.
|
nodiscardnoexcept |
Definition at line 198 of file transport.cpp.
|
nodiscard |
Definition at line 217 of file transport.cpp.
|
nodiscard |
Definition at line 385 of file transport.cpp.
Referenced by ensure_safe_existing_file(), and ensure_safe_parent().

|
nodiscard |
Definition at line 1274 of file transport.cpp.
|
nodiscard |
Definition at line 1233 of file transport.cpp.
References sensitive_query_name().

|
nodiscard |
Definition at line 357 of file transport.cpp.
|
nodiscard |
Definition at line 1173 of file transport.cpp.
|
noexcept |
Definition at line 915 of file transport.cpp.
References ascii_lower(), arachne::pheidippides::anonymous_namespace{transport.cpp}::receive_context::header_bytes, arachne::pheidippides::anonymous_namespace{transport.cpp}::receive_context::headers_too_large, arachne::pheidippides::anonymous_namespace{transport.cpp}::receive_context::location, maximum_header_bytes, maximum_response_headers, arachne::pheidippides::http_header::name, and arachne::pheidippides::http_header::value.
Referenced by arachne::pheidippides::transport::execute().


|
nodiscard |
Definition at line 1006 of file transport.cpp.
|
nodiscard |
Definition at line 1035 of file transport.cpp.
References arachne::pheidippides::fetch_request_v1::request_id, arachne::pheidippides::fetch_request_v1::respect_retry_after, and arachne::crypto::sha256().

|
nodiscard |
Definition at line 1121 of file transport.cpp.
|
nodiscard |
Definition at line 1183 of file transport.cpp.
References ascii_lower().

|
nodiscard |
Definition at line 1223 of file transport.cpp.
Referenced by redact_url_query().

|
nodiscardnoexcept |
Definition at line 1134 of file transport.cpp.
References arachne::pheidippides::admission_timeout, arachne::pheidippides::artifact_exists, arachne::pheidippides::cache_miss, arachne::pheidippides::checksum_mismatch, arachne::pheidippides::delivered, arachne::pheidippides::disallowed_host, arachne::pheidippides::door_policy_rejected, arachne::pheidippides::invalid_request, arachne::pheidippides::network_error, arachne::pheidippides::redirect_limit_exceeded, arachne::pheidippides::redirect_rejected, arachne::pheidippides::response_too_large, arachne::pheidippides::retry_budget_exhausted, arachne::pheidippides::storage_error, arachne::pheidippides::timed_out, and arachne::pheidippides::unsafe_artifact_ref.
|
nodiscardnoexcept |
Definition at line 1065 of file transport.cpp.
|
noexcept |
Definition at line 812 of file transport.cpp.
References arachne::pheidippides::anonymous_namespace{transport.cpp}::progress_context::downloaded, arachne::pheidippides::anonymous_namespace{transport.cpp}::progress_context::read_timed_out, arachne::pheidippides::anonymous_namespace{transport.cpp}::progress_context::upload_expected, arachne::pheidippides::anonymous_namespace{transport.cpp}::progress_context::uploaded, and arachne::pheidippides::anonymous_namespace{transport.cpp}::progress_context::write_timed_out.
Referenced by arachne::pheidippides::transport::execute().

|
nodiscardnoexcept |
Definition at line 903 of file transport.cpp.
|
nodiscard |
Definition at line 158 of file transport.cpp.
|
nodiscard |
Definition at line 138 of file transport.cpp.
|
nodiscard |
Definition at line 117 of file transport.cpp.
References maximum_request_id_bytes.
|
nodiscard |
Definition at line 1105 of file transport.cpp.
|
nodiscardnoexcept |
Definition at line 844 of file transport.cpp.
Referenced by body_callback().

| CURLSH * arachne::pheidippides::anonymous_namespace{transport.cpp}::curl_connection_share = nullptr |
Definition at line 46 of file transport.cpp.
Referenced by arachne::pheidippides::transport::execute(), and initialize_curl().
| std::once_flag arachne::pheidippides::anonymous_namespace{transport.cpp}::curl_global_once |
Definition at line 44 of file transport.cpp.
Referenced by initialize_curl().
| std::recursive_mutex arachne::pheidippides::anonymous_namespace{transport.cpp}::curl_share_mutex |
Definition at line 45 of file transport.cpp.
Referenced by curl_share_lock(), and curl_share_unlock().
|
constexpr |
Definition at line 37 of file transport.cpp.
Referenced by response_header_callback().
|
constexpr |
Definition at line 39 of file transport.cpp.
Referenced by arachne::pheidippides::transport::execute().
|
constexpr |
Definition at line 42 of file transport.cpp.
Referenced by artifact_id_for(), and valid_request_id().
|
constexpr |
Definition at line 38 of file transport.cpp.
Referenced by response_header_callback().
|
constexpr |
Definition at line 40 of file transport.cpp.
Referenced by arachne::pheidippides::transport::execute().
|
constexpr |
Definition at line 41 of file transport.cpp.
| std::atomic< std::uint64_t > arachne::pheidippides::anonymous_namespace{transport.cpp}::stage_sequence { 0 } |
Definition at line 47 of file transport.cpp.
Referenced by arachne::pheidippides::anonymous_namespace{transport.cpp}::staging_file::staging_file().