'Generic Commit'
This commit is contained in:
34
CLAUDE.md
34
CLAUDE.md
@@ -8,8 +8,9 @@ Simple Object Server is a C++23 application that provides a REST API for storing
|
||||
- File storage with deduplication using content hashing
|
||||
- Metadata management with label:tag system
|
||||
- Token-based authentication for write operations
|
||||
- Support for large file uploads
|
||||
- Support for large file uploads (up to 6GB)
|
||||
- CORS and rate limiting support
|
||||
- High-performance HTTP handling with Drogon framework
|
||||
|
||||
## Common Development Commands
|
||||
|
||||
@@ -45,9 +46,10 @@ Simple Object Server is a C++23 application that provides a REST API for storing
|
||||
### Key Components
|
||||
|
||||
1. **HTTP Server (src/server.cpp/hpp)**
|
||||
- Uses httplib for HTTP handling
|
||||
- Implements all REST endpoints
|
||||
- Uses Drogon framework for high-performance HTTP handling
|
||||
- Implements all REST endpoints via HttpController
|
||||
- Handles authentication, CORS, and rate limiting
|
||||
- Supports large file uploads (up to 6GB) with efficient streaming
|
||||
|
||||
2. **Database Layer (src/database.cpp/hpp)**
|
||||
- SQLite-based metadata storage
|
||||
@@ -55,7 +57,8 @@ Simple Object Server is a C++23 application that provides a REST API for storing
|
||||
- Manages label:tag uniqueness and versioning
|
||||
|
||||
3. **Request Handlers**
|
||||
- `put_handler.cpp/hpp`: File upload logic with deduplication
|
||||
- `HttpController.cpp/hpp`: Drogon HTTP controller for route handling
|
||||
- `put_handler.cpp/hpp`: File upload logic with deduplication and streaming support
|
||||
- `update_handler.cpp/hpp`: Metadata update functionality
|
||||
|
||||
4. **Utilities**
|
||||
@@ -73,6 +76,7 @@ Simple Object Server is a C++23 application that provides a REST API for storing
|
||||
### Build System
|
||||
|
||||
- Uses CMake with C++23 standard
|
||||
- Drogon framework statically linked for high performance
|
||||
- Docker-based build process for consistency across platforms
|
||||
- Static linking for standalone executables
|
||||
- Multi-architecture support (linux/amd64, linux/arm64, windows/amd64)
|
||||
@@ -86,6 +90,7 @@ The test suite (`testing/test.sh`) covers:
|
||||
4. File deletion
|
||||
5. Rate limiting functionality
|
||||
6. MD5 checksum verification
|
||||
7. Large file upload testing (1GB files)
|
||||
|
||||
Tests use curl for API interactions and jq for JSON parsing.
|
||||
|
||||
@@ -97,4 +102,23 @@ The server uses JSON configuration (`sos_config.json`) with these key settings:
|
||||
- `cors`: CORS policy configuration
|
||||
- `rate_limiting`: Auth attempt limits
|
||||
|
||||
Default configuration is suitable for Docker deployment with storage at `/data/storage`.
|
||||
Default configuration is suitable for Docker deployment with storage at `/data/storage`.
|
||||
|
||||
## Architecture Notes
|
||||
|
||||
### HTTP Framework Migration
|
||||
|
||||
The server has been migrated from httplib to Drogon for improved performance and scalability:
|
||||
|
||||
- **Previous**: Used cpp-httplib (single-header library)
|
||||
- **Current**: Uses Drogon framework with async request handling
|
||||
- **Benefits**: Better performance, larger file support, thread-safe operation
|
||||
- **Compatibility**: Full API compatibility maintained during migration
|
||||
|
||||
### Performance Characteristics
|
||||
|
||||
- **Large File Support**: Efficiently handles files up to 6GB
|
||||
- **Memory Management**: Streaming file processing to minimize memory usage
|
||||
- **Deduplication**: Content-based deduplication reduces storage requirements
|
||||
- **Thread Safety**: Singleton pattern with proper mutex protection
|
||||
- **Security**: Request size limits and rate limiting prevent abuse
|
Reference in New Issue
Block a user