TUNNEL
Peer-to-peer data transfer between any two endpoints. Ocalt brokers the connection — the data flows directly between peers. Works for files, streams, binary data, anything. Large files are chunked automatically.
[pending] — TUNNEL is designed and specified. Runtime implementation is in progress.
TUNNEL vs NEW VIDEO BRIDGE: TUNNEL is for data/file transfer. NEW VIDEO BRIDGE is for media streaming (camera, audio, video). They use the same WebRTC infrastructure but serve different purposes.
File transfer from remote machine to visitor
(* Allocate tunnel room — always outside DIRECTIVE *)
NEW TUNNEL SET ?room
(* Remote machine joins as sender *)
AFTER DIRECTIVE "machineid" OPEN NEST
TUNNEL SEND "C:/files/report.pdf" TO ?room
CLOSE NEST
(* Visitor's browser receives the file *)
AFTER REDIRECT ?room(receiver_url)
File transfer from OQL storage to visitor
NEW TUNNEL SET ?room
AFTER TUNNEL SEND "/mounted/exports/data.csv" TO ?room
AFTER REDIRECT ?room(receiver_url)
Large file transfer — 100GB+ supported
NEW TUNNEL SET ?room
AFTER DIRECTIVE "nas" OPEN NEST
TUNNEL SEND "C:/backups/archive.tar.gz" TO ?room
CLOSE NEST
AFTER REDIRECT ?room(receiver_url)
RTSP camera stream via tunnel
NEW TUNNEL SET ?room
AFTER DIRECTIVE "machineid" OPEN NEST
TUNNEL SEND "rtsp://192.168.1.100/cam1" TO ?room
CLOSE NEST
AFTER REDIRECT ?room(receiver_url)
Receive into OQL storage
NEW TUNNEL SET ?room
AFTER TUNNEL RECEIVE ?room INTO "/mounted/received/file.zip" SET ?path
AFTER EMIT ?path
Explicit close
TUNNEL CLOSE ?room
Verb reference
| Verb | Description |
|---|---|
NEW TUNNEL SET ?room | Allocate a tunnel room on Ocalt servers. Must be called outside DIRECTIVE. → room object |
TUNNEL SEND "path"|"rtsp://url" TO ?room | Join room as sender. Accepts file paths (native or /root/ /mounted/) and RTSP URLs. Legal inside DIRECTIVE. |
TUNNEL RECEIVE ?room INTO "/mounted/path" SET ?path | Join room as receiver. Writes incoming data to OQL virtual storage. → path string |
TUNNEL CLOSE ?room | Explicitly close tunnel room. Also closes automatically on inactivity. |
Room object fields
| Field | Description |
|---|---|
room_id | Unique room identifier |
sender_url | Join URL for the sending peer |
receiver_url | Join URL for the receiving peer |
expires | Unix timestamp — room auto-closes if no activity before this |