|
<< İçindekileri Görüntülemek İçin Tıklayın >> Yer: Teknik Kılavuzlar > Netsim System Agent İstemci Protokolü Referansı > 4. WebSocket (/ClientREST üzerinde yükseltme) > 4.4 Dil sunucusu: lspConvert |
MQL metnini hedef lehçeye çeviren dil sunucusu, istemcinin OpenSession ile açtığı oturumun kendi WebSocket'inden
çalışır; ayrı bir /ivedi bağlantısı gerekmez. Oturum başına bir çevrim bağlantısı tutulur (/ivedi mode: "lsp"
bağlantısının aynısı: GUEST kimliği, kip kilidi, hiçbir şey yürütülmez - DML / DDL yalnız metne çevrilir); ilk
istekte açılır, WebSocket kapanınca bırakılır. WebSocket kapanınca ajan oturumu da kapanır: yeniden bağlanan istemci
OpenSession + (geliştirme kipinde) bootstrap'ı yeniden yapar.
İstek: {"command": "lspConvert", "requestId": "...", "sql": "<metin>", "target"?: "postgresql",
"searchPath"?: "netsim, eklenti, public", "maxErrors"?: 0, "database"?: "...", "development"?: false,
"bootstrap"?: false}.
OpenSession gövdesindeki DatabaseName, MASTER kayıt
adı); oturum veritabanısızsa istekteki database kullanılır (Doc* uçlarının kuralı). target öndeğer
postgresql, searchPath öndeğer netsim, eklenti, public. maxErrors /ivedi scriptinkiyle aynı (0 = ilk
hatada durur). Metin birden çok deyim taşıyabilir; :ad parametreleri geçer.development: true; IVEDI işlemcisinin lspDevelopmentMode anahtarı açık olmalı, yoksa
DEVELOPMENT_DISABLED): kayıtlı hiçbir veritabanına bağlanılmaz, oturuma özel bellek içi katalog (LSP$DEV<n>)
kurulur ve yanıtın database'i odur. Oturumun ilk geliştirme isteği bootstrap: true taşıyorsa metin yürütme
kipinde koşar ve şemayı kurar (CREATE / DROP / OPEN / CLOSE DATABASE reddedilir); ardından - hatalı bitse de -
bağlantı çevrim kipine geçip kilitlenir, hatasız şema commit edilir. Bootstrap'siz ilk istek önce kilitlenir; sonraki
isteklerin bootstrap alanı yok sayılır. Kipi istek seçer: aynı oturumda development, database, target
ya da searchPath değişirse bağlantı (geliştirmede kataloğu da düşürülerek) yeniden açılır.Yanıt (çevrim yapıldıysa, hatalı da olsa): {"result": true, "responseId": "...", "database": "...", "target":
"postgresql", "development": false, "bootstrap"?: true, "errorCount": n, "warningCount": n, "results": [...], "ok":
bool} - results[], errorCount, warningCount ve ok §7.9 script yanıtıyla aynıdır (sql / text öğeleri
çevrilmiş deyim; error öğeleri name, code, sqlState, message, line, column, file, statement; uyarı
öğeleri line / column / file). errorCount > 0 ise çıktı kullanılmamalıdır. bootstrap: true yalnız
bootstrap'ın koştuğu yanıtta yazılır.
İstek işlenemediyse: {"result": false, "responseId": "...", "code": "...", "message": "..."} - code:
SESSION_REQUIRED (oturumsuz çerçeve; §4 girişindeki genel ret, responseId okunabildiyse yazılır), SQL_REQUIRED,
DATABASE_REQUIRED, DEVELOPMENT_DISABLED, LSP_FAILED (bağlantı açılamadı / çevrim istisnası; bağlantı
bırakılır, bir sonraki istek yeniden açar). Test: NetsimSystemAgent/tools/clientrest_lsp_test.py.