Zum Inhalt

SIGSrv

Sprache: C++/MFC (Visual Studio 6, 1998–1999)
Typ: Windows-Dienst + GUI-Anwendung
Autor: Stefan Zeiger

Architektur

CSIGSrvApp (CWinApp)
    |
    |── CXRequestCom (Thread, TCP Port 800)
    |       |── ON_THREAD_MESSAGE → OnXRequestFromClient()
    |
    |── CSIGSrvWork
            |── OpenSigDatabase() → CDaoDatabase (MDB → MSSQL)
            |── OnXRequestFromClient()
                    |── CSUser::CheckRequest() (Autorisierung)
                    |── switch(pXRequest->Request())
                    |       |── Login       → CSProcessLogin
                    |       |── StockData   → CSProcessStockData  ← .dta
                    |       |── SplitTitle  → CSProcessSplitTitle ← .dta
                    |       |── Branches    → CSProcessBranches
                    |       |── NumberService → CSProcessNumberService
                    |       |── default     → CSProcessDBGeneric  ← DB
                    |── pSProcessRequest->Process()
                    |── LogRequest()

Schlüsselklassen

CSProcessRequest (Basisklasse)

Alle Prozessoren erben von dieser Klasse: - GetDB() – Datenbankzugriff - GetRequest() – Zugriff auf den aktuellen Request - virtual Process() – Muss überschrieben werden

CSProcessStockData

Die einzige Klasse mit direktem .dta-Dateizugriff.

void Process() {
    // 1. titleNo und dataType aus Request lesen
    // 2. GetDataPath() → Dateipfad konstruieren
    // 3. CDOldToNewData::LoadOldData() → .dta lesen
    // 4. Ergebnis in ListResult() schreiben
}

Dateipfad-Konstruktion:

{SigPath}\{Symbol[0]}\{Range}{d|w|m|y}{Symbol}.dta

CSProcessDBGeneric

Standard-Prozessor für alle DB-basierten Requests. Nutzt CSRequestToDB für das Mapping aus der DB: - Liest Mapping aus TabRequests + TabRequestDescriptor - Generiert SQL (SELECT/INSERT/UPDATE/DELETE) dynamisch - Unterstützt JOINs, WHERE-Klauseln, Sprachabhängigkeit

CDOldToNewData

Der .dta-Lese/Schreiblayer. Für Option 4 zu ersetzen.

Methode Beschreibung
LoadOldData(path, select, start, stop) .dta lesen → CXDataRowList
StoreOldData(path, dataRowList) CXDataRowList → .dta schreiben
DetachXDataRowList(result) Ergebnis übergeben

Caching: Geladene Daten werden in CDOldToNewDataCache gecacht.

Konfiguration (Registry)

Software\CALC\SIG98\SIGSrv\Server\

Key Inhalt
DatabasePath Pfad zur MDB-Datei
SystemDatabase Pfad zur .mdw-Datei
IPAdapter IP-Adresse für Listening
ListenOnPort80 0 oder 1