•  Back 
  •  Classic XAcc 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  Help page 
  •  Show info about hypertext 
  •  View a new file 
Topic       : TOS - das Betriebssystem
Author      : 
Version     : tos.hyp (5. März 2013)
Subject     : Programmieren/Atari
Nodes       : 3001
Index Size  : 93602
HCP-Version : 5
Compiled on : Atari
@charset    : atarist
@lang       : 
@default    : Titel
@help       : 
@options    : +g -i -s +x +zz -t4
@width      : 70
View Ref-File15.13.2.3  Inquiery-Protokoll                                      TOS

Im Prinzip läuft das ganze Inquiery-Protokoll in 2 Stufen ab. Zuerst 
werden die Daten der verfügbaren Datenbanken ermittelt, und 
anschließend (zeitlich voneinander völlig unabhängig) werden die 
einzelnen Felder einer ausgewählten Datenbank erfragt.

Also Part 1 (am Beispiel von TA und TW):

            TA                  |                   TW
--------------------------------+------------------------------------
                            ACC_GETDSI
            <----------------------------------------

                            ACC_DSINFO
            ---------------------------------------->

                            ACC_ACK
            <----------------------------------------

    {
                            ACC_FILEINFO
            ---------------------------------------->

                            ACC_ACK
            <----------------------------------------

    }   /* <n> mal, wobei <n> bei ACC_DSINFO übertragen wurde */

Erklärung der einzelnen Protokollelemente:

 ACC_GETDSI

   Hiermit wird das Inquiery-Protokoll initiiert. Diese Message 
   enthält einen Pointer auf eine Variable des Typs Xacc_Dsi_Request, 
   in dem codiert wird, welche Felder welchen Typs gewünscht sind.

           msg[0]            = ACC_GETDSI (0x510)
           msg[1]            = application id
           msg[4] und msg[5] = Pointer auf die gewünschten Feld-Typen
                               (siehe XACC.H)

 ACC_DSINFO

   Auf ein ACC_GETDSI antwortet die angefragte Applikation mit dieser 
   Message. Hierbei wird ein Pointer auf eine Variable des Typs 
   Xacc_Dsinfo, wenn die Anfrage beantwortet werden kann, oder ein 
   NULL-Pointer, wenn die Anfrage nicht beantwortet werden kann, der 
   anfragenden Applikation übergeben.

           msg[0]            = ACC_DSINFO (0x511)
           msg[4] und msg[5] = Pointer auf Xacc_Dsinfo Struktur
                               (siehe XACC.H) oder NULL

   Die anfragende Applikation beantwortet alle Replys seinerseits mit 
   einer ACC_ACK= Message: ACC_ACK:

           msg[0]            = ACC_ACK
           msg[3]            = 1     wenn alles OK ist
                             = 0     wenn ein Fehler aufgetreten ist
                                     (Abbruch des Protokolls)

 ACC_FILEINFO

   Wenn die ACC_DSINFO Message von der anfragenden Applikation 
   bestätigt wurde, so wird für jede verfügbare Datei eine 
   ACC_FILEINFO-Message mit einem Pointer auf eine Variable des Typs 
   Xacc_File_Info, oder ein NULL-Pointer bei einem Fehler, an die 
   anfragende Applikation gesendet.

   Jede dieser Messages muß, wie oben erwähnt, mit einer ACC_ACK von 
   der anfragenden Applikation bestätigt werden.

           msg[0]            = ACC_FILEINFO (0x512)
           msg[4] und msg[5] = Pointer auf Xacc_File_Info Struktur
                               (siehe XACC.H) oder NULL

Wenn dieser erste Teil des Inquiery-Protokolls erfolgreich beendet 
wurde, dann kann die anfragende Applikation dem Anwender die Liste der 
verfügbaren Datenbanken und deren Information 'auf die Nase knallen' 
und ihn eine Auswahl treffen lassen.

Tut der Anwender dies, so läuft der 2. Part des Inquiery-Protokolls 
los (wieder am Beispiel von TA und TW):

            TA                  |                   TW
--------------------------------+------------------------------------
                            ACC_GETFIELDS
            <----------------------------------------

    {
                            ACC_FIELDINFO
            ---------------------------------------->

                            ACC_ACK
            <----------------------------------------

    }   /* <n> mal, wobei <n> bei ACC_FILEINFO übertragen wurde */

Erklärung der einzelnen Protokollelemente:

 ACC_GETFIELDS

   Hiermit wird von der anfragenden Applikation eine Datenbank 
   ausgewählt (die entsprechende Datenbank-ID hat sie ja bei der 
   ACC_FILEINFO Message in der Struktur Xacc_File_Info empfangen) und 
   gibt der angefragten Applikation bekannt, daß nun die einzelnen 
   Feldinformationen übertragen werden sollen.

           msg[0]            = ACC_GETFIELDS (0x513)
           msg[1]            = application id
           msg[3]            = ID der gewünschte Datenbank

 ACC_FIELDINFO

   Wenn die ACC_GETFIELDS Message von der anfragenden Applikation 
   bestätigt wurde, so wird für jedes Feld eine ACC_FIELDINFO Message 
   mit einem Pointer auf eine Variable des Typs Xacc_Field_Info, oder 
   ein NULL-Pointer bei einem Fehler, an die anfragende Applikation 
   gesendet.

   Jede dieser Messages muß, wie oben erwähnt, mit einer ACC_ACK von 
   der anfragenden Applikation bestätigt werden.

           msg[0]            = ACC_FIELDINFO (0x514)
           msg[4] und msg[5] = Pointer auf Xacc_Field_Info Struktur
                               (siehe XACC.H) oder NULL

In That's / no| Address wurden im Moment die Feldtypen FT_CHAR, 
FT_DATE und FT_TIME implementiert.