From 206467e1fa6739888a260570eeaaf7c04d76d042 Mon Sep 17 00:00:00 2001 From: narawat Date: Thu, 5 Mar 2026 07:23:24 +0700 Subject: [PATCH] update --- docs/architecture.md | 39 ++++++++++++++++++--------- docs/implementation.md | 59 +++++++++++++++++++++++++---------------- examples/walkthrough.md | 41 +++++++++++++++++++++------- 3 files changed, 93 insertions(+), 46 deletions(-) diff --git a/docs/architecture.md b/docs/architecture.md index 8272384..6cd0afd 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -110,24 +110,37 @@ env = smartreceive(msg; fileserver_download_handler=_fetch_with_backoff, max_ret ## Architecture Diagram ```mermaid -flowchart TD - subgraph Client - App[Julia Application] +flowchart TB + subgraph Sender["Julia Application (Sender)"] + SenderApp[App Code] + NATSBridge_Send[NATSBridge] + NATS_Client[NATS.jl] end - subgraph Server - Julia[Julia Service] - NATS[NATS Server] - FileServer[HTTP File Server] + subgraph Receiver["Julia Application (Receiver)"] + ReceiverApp[App Code] + NATSBridge_Recv[NATSBridge] + NATS_Client_Recv[NATS.jl] end - App -->|NATS| NATS - NATS -->|NATS| Julia - Julia -->|NATS| NATS - Julia -->|HTTP POST| FileServer + subgraph Infrastructure["Infrastructure"] + NATS[NATS Server
Message Broker] + FileServer[HTTP File Server
Upload/Download] + end - style App fill:#e8f5e9 - style Julia fill:#e8f5e9 + SenderApp --> NATSBridge_Send + NATSBridge_Send --> NATS_Client + NATS_Client --> NATS + + NATS --> NATS_Client_Recv + NATS_Client_Recv --> NATSBridge_Recv + NATSBridge_Recv --> ReceiverApp + + NATSBridge_Send -.->|HTTP POST upload| FileServer + FileServer -.->|HTTP GET download| NATSBridge_Recv + + style SenderApp fill:#e8f5e9 + style ReceiverApp fill:#e8f5e9 style NATS fill:#fff3e0 style FileServer fill:#f3e5f5 ``` diff --git a/docs/implementation.md b/docs/implementation.md index c9a29e2..304ad44 100644 --- a/docs/implementation.md +++ b/docs/implementation.md @@ -117,29 +117,42 @@ env = smartreceive(msg; fileserver_download_handler=_fetch_with_backoff, max_ret The Julia implementation follows the Claim-Check pattern: -``` -┌─────────────────────────────────────────────────────────────────────────┐ -│ SmartSend Function │ -└─────────────────────────────────────────────────────────────────────────┘ - │ - ▼ -┌─────────────────────────────────────────────────────────────────────────┐ -│ Is payload size < 1MB? │ -└─────────────────────────────────────────────────────────────────────────┘ - │ - ┌─────────────────┴─────────────────┐ - ▼ ▼ - ┌─────────────────┐ ┌─────────────────┐ - │ Direct Path │ │ Link Path │ - │ (< 1MB) │ │ (> 1MB) │ - │ │ │ │ - │ • Serialize to │ │ • Serialize to │ - │ Buffer │ │ Buffer │ - │ • Base64 encode │ │ • Upload to │ - │ • Publish to │ │ HTTP Server │ - │ NATS │ │ • Publish to │ - │ │ │ NATS with URL │ - └─────────────────┘ └─────────────────┘ +```mermaid +flowchart TB + subgraph Sender["Julia Application (Sender)"] + App[App Code] + NATSBridge[NATSBridge] + NATS_Client[NATS.jl] + end + + subgraph Receiver["Julia Application (Receiver)"] + App_Recv[App Code] + NATSBridge_Recv[NATSBridge] + NATS_Client_Recv[NATS.jl] + end + + subgraph Infrastructure["Infrastructure"] + NATS[NATS Server
Message Broker] + FileServer[HTTP File Server
Upload/Download] + end + + App --> NATSBridge + NATSBridge --> NATS_Client + NATS_Client --> NATS + + NATS --> NATS_Client_Recv + NATS_Client_Recv --> NATSBridge_Recv + NATSBridge_Recv --> App_Recv + + NATSBridge -.->|HTTP POST upload| FileServer + FileServer -.->|HTTP GET download| NATSBridge_Recv + + style App fill:#e8f5e9 + style App_Recv fill:#e8f5e9 + style NATSBridge fill:#c5e1a5 + style NATSBridge_Recv fill:#c5e1a5 + style NATS fill:#fff3e0 + style FileServer fill:#f3e5f5 ``` ## smartsend Return Value diff --git a/examples/walkthrough.md b/examples/walkthrough.md index 3dad9eb..3e2f213 100644 --- a/examples/walkthrough.md +++ b/examples/walkthrough.md @@ -32,17 +32,38 @@ Each section builds on the previous one, gradually increasing in complexity. ```mermaid flowchart TB - subgraph NATSBridge_Architecture["NATSBridge Architecture"] - direction TB - - Julia["Julia (NATS.jl)"] - NATS["NATS Server"] - FileServer["File Server
(HTTP Upload)"] - - Julia <--> NATS - Julia --> FileServer - NATS --> FileServer + subgraph Sender["Julia Application (Sender)"] + SenderApp[App Code] + NATSBridge_Send[NATSBridge] + NATS_Client[NATS.jl] end + + subgraph Receiver["Julia Application (Receiver)"] + ReceiverApp[App Code] + NATSBridge_Recv[NATSBridge] + NATS_Client_Recv[NATS.jl] + end + + subgraph Infrastructure["Infrastructure"] + NATS[NATS Server
Message Broker] + FileServer[HTTP File Server
Upload/Download] + end + + SenderApp --> NATSBridge_Send + NATSBridge_Send --> NATS_Client + NATS_Client --> NATS + + NATS --> NATS_Client_Recv + NATS_Client_Recv --> NATSBridge_Recv + NATSBridge_Recv --> ReceiverApp + + NATSBridge_Send -.->|HTTP POST upload| FileServer + FileServer -.->|HTTP GET download| NATSBridge_Recv + + style SenderApp fill:#e8f5e9 + style ReceiverApp fill:#e8f5e9 + style NATS fill:#fff3e0 + style FileServer fill:#f3e5f5 ``` ### Message Flow