update
This commit is contained in:
@@ -9,13 +9,13 @@
|
||||
# for different file server implementations (e.g., Plik, AWS S3, custom HTTP server).
|
||||
#
|
||||
# Handler Function Signatures:
|
||||
#
|
||||
#
|
||||
# ```julia
|
||||
# # Upload handler - uploads data to file server and returns URL
|
||||
# fileserverUploadHandler(fileserver_url::String, dataname::String, data::Vector{UInt8})::Dict{String, Any}
|
||||
#
|
||||
# # Download handler - fetches data from file server URL
|
||||
# fileserverDownloadHandler(fileserver_url::String, url::String, max_retries::Int, base_delay::Int, max_delay::Int)::Vector{UInt8}
|
||||
#
|
||||
# # Download handler - fetches data from file server URL with exponential backoff
|
||||
# fileserverDownloadHandler(url::String, max_retries::Int, base_delay::Int, max_delay::Int, correlation_id::String)::Vector{UInt8}
|
||||
# ```
|
||||
#
|
||||
# Multi-Payload Support (Standard API):
|
||||
@@ -169,7 +169,7 @@ function envelope_to_json(env::msgEnvelope_v1)
|
||||
"type" => payload.type,
|
||||
"transport" => payload.transport,
|
||||
"encoding" => payload.encoding,
|
||||
"size" => payload.size
|
||||
"size" => payload.size,
|
||||
)
|
||||
# Include data based on transport type
|
||||
if payload.transport == "direct" && payload.data !== nothing
|
||||
@@ -286,6 +286,7 @@ function smartsend(
|
||||
subject::String, # smartreceive's subject
|
||||
data::AbstractArray{Tuple{String, Any, String}}; # List of (dataname, data, type) tuples
|
||||
nats_url::String = DEFAULT_NATS_URL,
|
||||
fileserver_url = DEFAULT_FILESERVER_URL,
|
||||
fileserverUploadHandler::Function=plik_oneshot_upload, # a function to handle uploading data to specific HTTP fileserver
|
||||
size_threshold::Int = DEFAULT_SIZE_THRESHOLD,
|
||||
correlation_id::Union{String, Nothing} = nothing,
|
||||
@@ -329,7 +330,7 @@ function smartsend(
|
||||
encoding = "base64",
|
||||
size = payload_size,
|
||||
data = payload_b64,
|
||||
metadata = Dict("content_length" => payload_size)
|
||||
metadata = Dict("payload_bytes" => payload_size)
|
||||
)
|
||||
push!(payloads, payload)
|
||||
else
|
||||
@@ -337,9 +338,9 @@ function smartsend(
|
||||
log_trace(cid, "Using link transport, uploading to fileserver") # Log link transport choice
|
||||
|
||||
# Upload to HTTP server
|
||||
response = fileserverUploadHandler(DEFAULT_FILESERVER_URL, dataname, payload_bytes)
|
||||
response = fileserverUploadHandler(fileserver_url, dataname, payload_bytes)
|
||||
|
||||
if response[:status] != 200 # Check if upload was successful
|
||||
if response["status"] != 200 # Check if upload was successful
|
||||
error("Failed to upload data to fileserver: $(response[:status])") # Throw error if upload failed
|
||||
end
|
||||
|
||||
@@ -355,7 +356,7 @@ function smartsend(
|
||||
encoding = "none",
|
||||
size = payload_size,
|
||||
data = url,
|
||||
metadata = Dict("dataname" => dataname, "content_length" => payload_size, "format" => "arrow_ipc_stream")
|
||||
metadata = Dict()
|
||||
)
|
||||
push!(payloads, payload)
|
||||
end
|
||||
@@ -585,11 +586,11 @@ function smartreceive(
|
||||
elseif transport == "link" # Link transport - payload is at URL
|
||||
log_trace(json_data["correlationId"], "Link transport - fetching '$dataname' from URL") # Log link transport handling
|
||||
|
||||
# Extract URL from the payload
|
||||
# Extract download URL from the payload
|
||||
url = String(payload_data["data"])
|
||||
|
||||
#[WORKING] Fetch with exponential backoff using the download handler
|
||||
downloaded_data = fileserverDownloadHandler(json_data["data"], max_retries, base_delay, max_delay,json_data["correlationId"])
|
||||
downloaded_data = fileserverDownloadHandler(url, max_retries, base_delay, max_delay, json_data["correlationId"])
|
||||
|
||||
# Deserialize based on type
|
||||
data_type = String(payload_data["type"])
|
||||
|
||||
Reference in New Issue
Block a user