ICE (Inter-Client Exchange)
Altre info
- Creatore
- Bob Scheifler e Jordan Brown, X Consortium
- Anno
- 1994 (X11R6)
- Tipo
- Protocollo e libreria (libICE)
- Specifica
- Inter-Client Exchange Protocol
Il trasporto generico di X11R6 per i programmi X che devono parlarsi senza passare dal server X — noto soprattutto come la base di XSMP e del DCOP di KDE.
Il protocollo X ha un solo canale, da client a server, per cui due programmi che volevano dialogare direttamente dovevano ogni volta inventarsi un metodo proprio. Bob Scheifler e Jordan Brown progettarono ICE per X11R6 nel 1994 per porre fine a questa situazione: una sola connessione, di solito un socket Unix sotto /tmp/.ICE-unix/, su cui le parti negoziano prima versione e ordine dei byte, presentano un MIT-MAGIC-COOKIE-1 preso da ~/.ICEauthority e poi aprono uno o più sottoprotocolli sullo stesso canale. Ogni messaggio ha un'intestazione con opcode maggiore e minore e una lunghezza in unità di otto byte, così che più protocolli possano condividere la connessione senza pestarsi i piedi.
Il primo sottoprotocollo fu XSMP, la gestione delle sessioni, e rimase l'unico ad avere larga diffusione. KDE costruì il proprio DCOP sopra libICE nel 2000 e lo fece funzionare così fino all'arrivo di D-Bus con KDE 4. La libreria è ancora presente in ogni installazione di X.Org, soprattutto perché libSM ne ha bisogno. La sigla fu poi riciclata da WebRTC per qualcosa di completamente diverso, il che rende l'originale quasi impossibile da cercare.