Le protocole CAB
================

Le protocole CAB constitue un ensemble de messages AES qui peuvent
ˆtre utilis‚s par des programmes GEM pour transf‚rer des informations
sp‚cifiques … CAB. CAB prends en charge la coordination de ces
op‚rations.
Une application possible:
Si une information ou une mise … jour est disponible sur Internet, le
protocole CAB peut ˆtre utilis‚ pour acc‚der … cette information.
CAB peut alors charger et afficher la donn‚e.


Description des messages
========================

CAB_HELLO ($CAB8) (message de CAB)
-----------------
AprŠs son lancement, CAB envoie le message suivant … tous les
programmes en ex‚cution :

msg[0] = $CAB8
msg[1] = CAB ID
msg[2] = 0
msg[3] = Version du protole CAB (ou par exemple $0100 = v1.00)
msg[4] = Vecteur binaire contenant les protocoles support‚s (CAB.OVL)
          Bit 0: HTTP
          Bit 1: FTP
          Bit 2: GOPHER
          Bit 3: WAIS
          Bit 4: MAILTO
          Bit 5: NNTP
          Bit 6: TELNET
          Bit 7-15: 0 (reserv‚s)
msg[5] = Vecteur binaire contenant les messages du protocole CAB
         pris en charge :
          Bit 0: CAB_VIEW
          Bit 1: CAB_MAIL, CAB_MAILSEND
          Bit 2: CAB_REQUESTSTATUS, CAB_RELEASESTATUS, CAB_STATUS,
                 CAB_EXIT
          Bit 3-15: 0 (reserv‚s)
msg[6] = 0
msg[7] = 0



CAB_SUPPORT ($CABB) (message vers CAB)
-------------------
Si CAB re‡oit ce message, il r‚ponds en envoyant un message CAB_HELLO.
Si aucun message CAB_HELLO n'est re‡u, la version de CAB est
ant‚rieure … l'impl‚mentation du protocole CAB.
N'importe quel programme demande l'information fournie par les
messages CAB_HELLO doit envoyer, aprŠs son d‚marrage, un message
CAB_SUPPORT … CAB. Si CAB est d‚marr‚ plus tard, il enverra
automatiquement un message CAB_HELLO au programme.

msg[0] = $CABB
msg[1] = ID des PRGs
msg[2] = 0
msg[3] = 0
msg[4] = 0
msg[5] = 0
msg[6] = 0
msg[7] = 0

CAB_VIEW ($CAB3) (message vers CAB)
----------------
Identique … VA_START mais les URLs sont envoy‚es en lieu et place des
noms de fichier et CAB afiches le fichier correspondant.

msg[0] = $CAB3
msg[1] = ID des PRGs
msg[2] = 0
msg[3] = \ Pointeur vers l'URL
msg[4] = /
msg[5] = 1 = CAB affiche l'URL dans une nouvelle fenˆtre
         0 = CAB affiche l'URL dans la fenˆtre active
msg[6] = 0
msg[7] = 0



CAB_REQUESTSTATUS ($CAB5) (message vers CAB)
-------------------------
Peut-ˆtre envoy‚ vers CAB afin de d‚terminer si CAB est actuellement
en ligne ou pas. CAB renvoie en r‚ponse le message CAB_STATUS et
aprŠs tout changement de son ‚tat de connexion.

msg[0] = $CAB5
msg[1] = ID des PRGs
msg[2] = 0
msg[3] = 0
msg[4] = 0
msg[5] = 0
msg[6] = 0
msg[7] = 0



CAB_RELEASESTATUS ($CAB7) (message vers CAB)
-------------------------
Un programme doit envoy‚ ce message vers CAB si il ne veux plus
recevoir l'‚tat de connexion de CAB qu'il peut demander par
l'interm‚diaire du message CAB_REQUESTSTATUS (par ex. : Si
le programme va ˆtre quitt‚).

msg[0] = $CAB7
msg[1] = ID des PRGs
msg[2] = 0
msg[3] = 0
msg[4] = 0
msg[5] = 0
msg[6] = 0
msg[7] = 0



CAB_STATUS ($CAB6) (message from CAB)
------------------
CAB envoies ce message … tous les programmes qui ont demand‚ … ˆtre
tenu inform‚ de l'‚tat de connexion de CAB par le message
CAB_REQUESTSTATUS.

msg[0] = $CAB6
msg[1] = CAB ID
msg[2] = 0
msg[3] = 1 = CAB on-line
         0 = CAB off-line
msg[4] = 0
msg[5] = 0
msg[6] = 0
msg[7] = 0



CAB_EXIT ($CAB1) (message from CAB)
----------------
CAB envoies ce message … tous les programmes qui ont demand‚ … ˆtre
tenu inform‚ de l'‚tat de connexion de CAB par le message
CAB_REQUESTSTATUS puis CAB est quitt‚. CAB envoi au pr‚alable le
message CAB_STATUS … tous les programems pour leur indiqu‚ qu'il est
… l'‚tat hors ligne (off-line).

msg[0] = $CAB1
msg[1] = CAB ID
msg[2] = 0
msg[3] = 0
msg[4] = 0
msg[5] = 0
msg[6] = 0
msg[7] = 0

CAB_MAIL ($CAB9) (message vers CAB)
----------------
Peut-ˆte envoy‚ … CAB pour l'envoi d'un mail.

msg[0] = $CAB9
msg[1] = ID of the PRGs
msg[2] = 0

msg[3] = \ Pointeur vers une URL. Une ligne de sujet peut ˆtre ajout‚e
           … l'URL en utilisant un point d'interrogation comme
msg[4] = / s‚parateur.

msg[5] = \ Pointeur vers un fichier qui contient le message de mail
msg[6] = / ou null, dans ce cas, CAB ouvre l'‚diteur pour la saisie
           du message.

msg[7] = Bit vector:
          Bit 0: 0 = Envoi du mail imm‚diatement
                 1 = Le message de Mail peut-ˆtre pris en charge et
                     ou ‚dit‚ par CAB.
          Bit 1: Le fichier doit ˆtre supprimer par CAB aprŠs son
                 traitement.
          Bil 2-15: reserv‚s (0)

CAB_MAILSENT ($CABA) (message de CAB)
--------------------
CAB envoie ce message en r‚ponse au message CAB_MAIL pour informer le
programme si le message a ‚t‚ envoy‚ avec un indicateur d'‚tat.

msg[0] = $CABA
msg[1] = CAB ID
msg[2] = 0
msg[3] = 1 = Mail envoy‚ sans erreur/s
         0 = Une erreur s'est produite, msg [4] indique la nature de
             l'erreur
msg[4] = Retourne le num‚ro de l'erreur, si msg[3] = 0
       = 0: Pas d'URL indiqu‚en.
       = 1: Off-line, la connexion r‚seau a ‚t‚ perturb‚e, le serveur
            n'‚tait pas accessible
       = 2: L'utilisateur a annul‚ l'envoi du mail (c'est-…-dire
            que le mail ‚tait g‚r‚ par CAB et donc que l'utilisateur
            a eu cette oportunit‚
       = 3: Erreur GEMDOS lors de l'accŠs au fichier de message
       = 4: L'‚diteur de mail ne peut pas ˆtre trouv‚
msg[5] = 0
msg[6] = 0
msg[7] = 0




Messages sp‚ciaux pour 'Outils de Cache'
========================================

CAB_CCHANGED ($CAB0) (message de et vers CAB)
--------------------
Le cache (c'est-…-dire CACHE.CAB) a ‚t‚ modifi‚ et doit ˆtre relu.

msg[0] = $CAB0
msg[1] = CAB ID/ID des PRGs
msg[2] = 0
msg[3] = 0
msg[4] = 0
msg[5] = 0
msg[6] = 0
msg[7]
 0



CAB_EXIT ($CAB1) (message de et vers CAB)
----------------
CAB ou Cache-Tool a ‚t‚ quitt‚s (chaque PRG doit informer l'autre
lorsqu'il est quitt‚).

msg[0] = $CAB1
msg[1] = CAB ID/ID des PRGs
msg[2] = 0
msg[3] = 0
msg[4] = 0
msg[5] = 0
msg[6] = 0
msg[7] = 0



CAB_PATH ($CAB2) (message de CAB)
----------------
Les r‚pertoires HTML et/ou de cache ont ‚t‚ modifi‚s. Pour plus de
d‚tails, r‚f‚rez vous … la documentation de 'outil de cache'.

msg[0] = $CAB2
msg[1] = CAB ID
msg[2] = 0
msg[3] = 0
msg[4] = 0
msg[5] = 0
msg[6] = 0
msg[7] = 0



CAB_TERM ($CAB4) (message de CAB)
----------------
L'outil de Cache doit s'arr‚ter.

msg[0] = $CAB4
msg[1] = CAB ID
msg[2] = 0
msg[3] = 0
msg[4] = 0
msg[5] = 0
msg[6] = 0
msg[7] = 0
