pub struct ChunkedUploadManager { /* private fields */ }Expand description
Manager for chunked uploads
Implementations§
Source§impl ChunkedUploadManager
impl ChunkedUploadManager
Sourcepub fn new(temp_base_dir: PathBuf) -> Self
pub fn new(temp_base_dir: PathBuf) -> Self
Create a new chunked upload manager
§Examples
use reinhardt_http::chunked_upload::ChunkedUploadManager;
use std::path::PathBuf;
let manager = ChunkedUploadManager::new(PathBuf::from("/tmp/chunked_uploads"));Sourcepub fn start_session(
&self,
session_id: String,
filename: String,
total_size: usize,
chunk_size: usize,
) -> Result<ChunkedUploadSession, ChunkedUploadError>
pub fn start_session( &self, session_id: String, filename: String, total_size: usize, chunk_size: usize, ) -> Result<ChunkedUploadSession, ChunkedUploadError>
Start a new upload session
§Examples
use reinhardt_http::chunked_upload::ChunkedUploadManager;
use std::path::PathBuf;
let manager = ChunkedUploadManager::new(PathBuf::from("/tmp/chunked_uploads"));
let session = manager.start_session(
"session123".to_string(),
"large_file.bin".to_string(),
10_000_000, // 10MB
1_000_000, // 1MB chunks
).unwrap();
assert_eq!(session.total_chunks, 10);Sourcepub fn upload_chunk(
&self,
session_id: &str,
chunk_number: usize,
data: &[u8],
) -> Result<ChunkedUploadSession, ChunkedUploadError>
pub fn upload_chunk( &self, session_id: &str, chunk_number: usize, data: &[u8], ) -> Result<ChunkedUploadSession, ChunkedUploadError>
Upload a chunk
§Examples
use reinhardt_http::chunked_upload::ChunkedUploadManager;
use std::path::PathBuf;
let manager = ChunkedUploadManager::new(PathBuf::from("/tmp/chunked_uploads"));
manager.start_session("session123".to_string(), "file.bin".to_string(), 1000, 100).unwrap();
let chunk_data = vec![0u8; 100];
manager.upload_chunk("session123", 0, &chunk_data).unwrap();Sourcepub fn assemble_chunks(
&self,
session_id: &str,
output_path: PathBuf,
) -> Result<PathBuf, ChunkedUploadError>
pub fn assemble_chunks( &self, session_id: &str, output_path: PathBuf, ) -> Result<PathBuf, ChunkedUploadError>
Assemble all chunks into final file
§Examples
use reinhardt_http::chunked_upload::ChunkedUploadManager;
use std::path::PathBuf;
let manager = ChunkedUploadManager::new(PathBuf::from("/tmp/chunked_uploads"));
let output_path = manager.assemble_chunks("session123", PathBuf::from("/tmp/final_file.bin")).unwrap();Sourcepub fn cleanup_session(
&self,
session_id: &str,
) -> Result<(), ChunkedUploadError>
pub fn cleanup_session( &self, session_id: &str, ) -> Result<(), ChunkedUploadError>
Clean up a session (delete temporary files)
§Examples
use reinhardt_http::chunked_upload::ChunkedUploadManager;
use std::path::PathBuf;
let manager = ChunkedUploadManager::new(PathBuf::from("/tmp/chunked_uploads"));
manager.cleanup_session("session123").unwrap();Sourcepub fn get_session(&self, session_id: &str) -> Option<ChunkedUploadSession>
pub fn get_session(&self, session_id: &str) -> Option<ChunkedUploadSession>
Get session information
Sourcepub fn list_sessions(&self) -> Vec<ChunkedUploadSession>
pub fn list_sessions(&self) -> Vec<ChunkedUploadSession>
List all active sessions
Sourcepub fn cleanup_expired_sessions(&self)
pub fn cleanup_expired_sessions(&self)
Remove sessions that have exceeded the timeout.
Expired sessions have their temporary files cleaned up automatically.
This is called lazily on start_session and upload_chunk to prevent
unbounded memory growth from abandoned uploads.
Auto Trait Implementations§
impl Freeze for ChunkedUploadManager
impl RefUnwindSafe for ChunkedUploadManager
impl Send for ChunkedUploadManager
impl Sync for ChunkedUploadManager
impl Unpin for ChunkedUploadManager
impl UnsafeUnpin for ChunkedUploadManager
impl UnwindSafe for ChunkedUploadManager
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more