4.4 Dil sunucusu: lspConvert

<< İç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}.

  • Üretim kipi (öndeğer): katalog oturumun veritabanıdır (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.
  • Geliştirme kipi (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.