GKO/s99 Demo11 Teht8 Jussi Saavalainen VespaCad-verkkototeutuksen protokolla ===================================== [ TCP/IP:n tai muun sopivan yli toteutettavaksi ] Toteutetaan client-server--tyyliin: Serveri: -------- a) ylläpitää varsinaista kuvaa b) ottaa vastaan muutoskäskyjä asiakkailta c) välittää kuvan muutokset asiakkaille. Asiakas: -------- a) näyttää käyttäjälle serveriltä saamansa kuvan ja sen muutokset b) ottaa tavalla tai toisella käyttäjältä vastaan komentoja kuvan muokkaamiseksi lähettäen nämä palvelimelle. Protokolla: ----------- Oletetaan että toteutus osaa pitää kirjaa asiakkaiden identiteetistä; samoin palvelimen pitää osata selvittää milloin asiakkaat ovat läsnä. Käskyt ovat nelikirjaimisia merkkijonoja, välilyönnein (' ') erotettu parametrilista päätetään puolipisteellä (';'). Kun toiminto on valmis, vastapuoli kuittaa sopivasti; mitään tiedonsiirtoa ei tapahdu ennen kuittausta. Kuvankuvauskomennot ovat erikseen alla. Komennot: -- Yleiset: SUCC ; Kuittaus, toiminto onnistui. FAIL ; Kuittaus, toiminto epäonnistui. SNTX ; Virheellinen komento. ERRO ; Virhe komentoa toteutettaessa. WAIT ; Pyytää vastapuolta odottamaan esim. laskentaa tms.; RESM tai RETR jatkaa. WAIT voidaan lähettää kuittauksen sijasta jos odotusaika tulee olemaan pitkä. RESM ; Jatkaa siitä mihin jäätiin WAIT-käskyn tullessa. RETR ; Jatkaa siitä mihin jäätiin WAIT-käskyn tullessa; edellistä käskyä ei toteu- tettu. -- Asiakas: RFUL ; Pyytää palvelimelta koko kuvan. Kuittauksen jälkeen jäädään odottamaan kuvan tietoja. Vastauksena saadaan aluksi alkiolista (RLST) ja sen jälkeen kaikki siinä olevat alkiot. RELE ; Pyytää palvelimelta alkion kuvauksen. Tunnukset ovat 32bit kokonaislukuja. Kuittauksen jälkeen jäädään odottamaan tietoja. RLST ; Pyytää palvelimelta listan edelliseen käyvistä alkiotunnuksista. ILRQ ; Pyytää listan edellisen kyselyn jälkeen muuttuneista alkioista. DRAW ; Kuvaa uuden alkion. Palvelimen vastatessa NEWE voidaan aloittaa uuden alkion kuvaus. -- Palvelin INVL ; Ilmoittaa asiakkaalle että kuva on muuttunut. NEWE ; Valmis ottamaan vastaan uuden alkion tiedot. ELST [alkio1 [alkio2 [...]]] ; Listaa käytössä olevat alkiot. kertoo loppujen parametrien lukumäärän; alkio1, ..., alkion ovat 32-bittisiä alkiotunnuksia. ILST [alkio1 [alkio2 [...]]] ; Listaa asiakkaan edellisen kyselyn jälkeen muuttuneet alkiot. -- Kuvaus DATA ; Aloittaa kuvauksen. kertoo monenko alkion tiedot seuraavat. ELEM [ nopt opt1 [ opt2 [...] ] ] ; Kuvaa alkion. tyyppi on alkion tyyppi, 32bit kokonaisluku (tyypit alla). x ja y ovat koordinaatit IEEE-liukulukuina. nopt kertoo seuraavien parametrien lukumäärän ja opt1, ..., optn sisältävät muut alkioon liittyvät tiedot. ENDD ; Lopettaa kuvauksen. --------- ( Alkiotyyppejä en viitsi keksiä kaikkia.. Tässä kuitenkin esimerkki. ) Kolmio: tyyppi=0; nopt=7 ; opt1,3,5 = kulmien x-koordinaattien poikkeama kuvion x-koordinaatista; opt2,4,6 = kulmien y-koordinaattien poikkeama kuvion y- koordinaatista; opt7 = väri.