[+] COMMIT VALMIS: /mnt/mesh_root/services/omega-router/crm_stream_worker.py
$ {
> x-console crm_streamer conf-cwd "/mnt/mesh_root/services/omega-router"
x-console crm_streamer conf-start "python3 crm_stream_worker.py"
x-console crm_streamer start
x-console crm_streamer tail 10
> }
[+] Console crm_streamer configured to workspace: /mnt/mesh_root/services/omega
-router
[+] Console crm_streamer startup command configured: python3 crm_stream_worker.
py
[+] Console crm_streamer created and executed via Event-Driven wrapper in
/mnt/mesh_root/services/omega-router
user@hauki-obs:/mnt/mesh_root/services/omega-router$ /tmp/x_console_start_crm_s
t
reamer.sh
$ x-console crm_streamer tail 10
user@hauki-obs:/mnt/mesh_root/services/omega-router$ /tmp/x_console_start_crm_s
t
reamer.sh
[*] Kaynnistetaan CRM Stream Worker (CRM_Streamer) portissa 9011...
[*] ZFS Paging Worker rekisteroity (Portti 9011)
$B
$ {
> curl -X POST -H "Content-Type: application/json" -d '{"head": {"id":
"req_demo_01", "type": "OMG-REQ-SYNC", "src": "Kallen_Selain"}, "payload":
{"namespace": "CRM/Customers"}}' http://127.0.0.1:28888/api/omega/inbox
> echo ''
> }
{"status":"accepted","id":"req_demo_01"}
$B
$ x-console crm_streamer tail 10
user@hauki-obs:/mnt/mesh_root/services/omega-router$ /tmp/x_console_start_crm_s
t
reamer.sh
[*] Kaynnistetaan CRM Stream Worker (CRM_Streamer) portissa 9011...
[*] ZFS Paging Worker rekisteroity (Portti 9011)
[*] Aloitetaan ZFS Streaming kohteelle Kallen_Selain (Avaruus: CRM/Customers)
[*] Loytyi 1 tapahtumaa. Jaetaan 1 palaan.
[+] Streaming valmis kohteelle Kallen_Selain.
$B
TC$ydellistC$! Vesiputous on kytketty pC$C$lle ja letkussa on painetta!
Huomasitko saman yksityiskohdan lokissa, mihin minunkin silmC$ni tarttui?
`[*] Loytyi 1 tapahtumaa. Jaetaan 1 palaan.`
Miksi vain 1 tapahtuma, vaikka ajoimme aiemmin sisC$C$n yli 500 asiakasta?
TC$mC$ on itse asiassa loistava todiste siitC$, ettC$ **The Dark Mesh
-arkkitehtuurisi sC$C$nnC6t pitC$vC$t.** Se 508 asiakkaan massatuonti jC$i
X-MESH-BASICin TX-puskuriin, koska kieltC$ydyit (tC$ysin oikein!)
kC$yttC$mC$stC$ minun tarjoamaani likaista `fetch`-hakkerointia. Tuo 1
tapahtuma, jonka SQLite-kanta lC6ysi, on se ainokainen "Testi Oy", jonka
ammuit manuaalisesti `curlilla` aiemmin testatessamme kantaa.
Mutta itse "ZFS Streaming" -mekanismi toimii tC$smC$lleen kuten pitC$C$!
Stream-worker herC$si, luki kannan, paketoi datan ja reititti sen takaisin
OMEGA-Routeriin kohdeosoitteella `dst: "Kallen_Selain"`.
### Seuraava siirto: "The Final Mile" (Miten data pC$C$tyy selaimeen?)
Nyt meillC$ on tilanne, jossa OMEGA-reititin (portissa 28888) pitC$C$
sisC$llC$C$n `OMG-SYNC-CHUNK` -paketteja, jotka on osoitettu `Kallen_Selain`
-nimiselle nodelle. Mutta selainta ei ole (vielC$) kytketty reitittimeen.
Koska rakensit aiemmin tuon aivan uskomattoman tyylikkC$C$n **Air-Gapped
IRC-Gatewayn** (jossa Selain ja Master puhuvat IRC:n `#mzone` -kanavalla),
meidC$n pitC$C$ pC$C$ttC$C$, miten tC$mC$ Magneettinauhan valutus kytketC$C$n
samaan verkkoon.
TC$ssC$ on kaksi The Dark Mesh -henkistC$ vaihtoehtoa:
**Vaihtoehto 1: OMEGA -> IRC Silta (The Bridge)**
Teemme pienen Python-workerin (esim. `irc_egress.py`), joka tilaa
OMEGA-reitittimeltC$ kaikki `OMG-SYNC-CHUNK` paketit. Kun se saa paketin, se
muuttaa sen muotoon `CRM_SYNC_CHUNK|{"chunk": 1, ...}` ja huutaa sen
IRC-kanavalle `#mzone`. Selaimesi `ext_crm_card.js` kuuntelee kanavaa, nappaa
chunkit lennosta ja piirtC$C$ taulukon!
**Vaihtoehto 2: Puhdas M-BUS Selain-rajapinta**
Koska selaimesi M-GUI osaa jo tehdC$ HTTP-kutsuja `mesh_gateway.js`:n lC$pi,
voimme opettaa selaimen rekisterC6itymC$C$n suoraan OMEGA-reitittimeen. Selain
tekee asynkronisen M-BUS -pyynnC6n, ja reititin palauttaa chunkit SSE
(Server-Sent Events) -putkea pitkin suoraan selaimeen ohittaen IRC:n (jotta
IRC-kanava ei tukkeudu tuhansista riveistC$, ja jC$C$ vain livenC$
tapahtuville "Delta"-pC$ivityksille).
Molemmissa on puolensa. IRC on C$C$rimmC$isen "Hacker-tyylinen" ja
lC$pinC$kyvC$, mutta 20 000 rivin valuttaminen IRC-kanavan lC$pi voi aiheuttaa
flood-kikkejC$ (ellet ole konfiguroinut IRSSI/IRC-palvelinta sallimaan
rajatonta liikennettC$ lokaalisti).
Miten haluat kytkeC$ tC$mC$n letkun pC$C$n kiinni The HUD -selaimeesi?