Sinkronizazio protokoloa
Gailu guztiek aukera berriak dituzte, eta gailuen arteko historia sinkronizatu ahal izango da.
Eszenario asko definitu dira Swarm diseinu dokumentuan, baina horrek ez du esan nahi erabiltzaile beraren artean elkarrizketak sinkronizatzeko.
Metodo zaharra
Gailuen sinkronizazioa DHT bidez egin zen. balio bakoitzak 64k gainditu behar ez duelako, ez dira elkarrizketak bidali gailuen sinkronizaziorako, ezta kideen profiletan ere, oso astuna delako.
Metodo zaharrean, daemonak entzuten du «inbox:DEVICE_ID» DeviceSync balioak, sinkronizatzeko kontaktuen zerrenda duena (ie. AccountManager::startSync()
);
Oharra
The current DeviceSync value present on the DHT is deprecated with this draft.
Metodo berria
Since Jami has the ConnectionManager, using p2p socket is possible to perform sync quickly with big values (cause the socket is not limited in data).
Hau da sinkronizatzeko erabiltzen den eszenatokia:
When the device (A) goes online, it announces its presence via a DeviceAnnouncement like the OldMethod.
Beste gailu batzuek (!A) iragarkia detektatuko dute eta gailu honi eskatuko dio ConnectionManager bidez «sync://DEVICE_ID_A» izeneko kanala irekitzeko.
Kanala irekitzen denean, kanal hau eskatzen ari den gailuak bere elkarrizketak eta kontaktuak dituen DeviceSync balioa bidaliko du (ikus hurrengo zatia).
Aek DeviceSync balioa egiaztatuko du eta:
Kendu kontaktuak, kentutako kontaktuak aurkitzen baditu.
Kontaktua gehitu, kontaktu gehituak aurkitzen baditu
Kendu elkarrizketak, deskubritzen baditu
Gehitu elkarrizketak, elkarrizketa gehituak aurkitzen baditu
Kendu elkarrizketaren eskaerak, eskaera onartuta bada (orain elkarrizketetan) / ezeztatuta
Kontaeraren eskaerak gehitu, aurkitzen badituzte
Oharra
If A detects new conversations, it will asks the device which announced that conversation to clone the repository through a git channel (so like described in Swarm chat design).
Gailuaren sinkronizazioa
Balio hau JSON bat da, hau duena:
{
"contacts": [/* Contacts (TODO) */],
"conversation": [
{ "id":"convID", "created":TIMESTAMP, "removed":OPTIONAL_TIMESTAMP },
{ "id":"convID2", "created":TIMESTAMP2, "removed":OPTIONAL_TIMESTAMP2 } /* ... */
],
"conversationsRequests": [
{ "id":"convID", "received":TIMESTAMP, "declined":OPTIONAL_TIMESTAMP,
"members":[], "metadatas:[] },
{ "id":"convID2", "received":TIMESTAMP2, "declined":OPTIONAL_TIMESTAMP2
"members":[], "metadatas:[] } /* ... */
],
}
Erabiltzaileen istorioak
Dispositiboa gehitzerakoan sinkronizatu
Alice elkarrizketa bat sortzen ari da.
Alice-k mezu batzuk gehitu ditu.
Alice beste gailu bat gehitzen ari da.
Beste gailuak jaso eta sinkronizatu beharko du aurrekoan sortutako elkarrizketa.
Diskoa konektatzen denean sinkronizatu
Alice elkarrizketa bat sortzen ari da.
Alice-k mezu batzuk gehitu ditu.
Alice beste gailu bat konektatzen ari da.
Beste gailuak jaso eta sinkronizatu beharko du aurrekoan sortutako elkarrizketa.
Gailu askoren arteko sinkronizazioa
Alice-k bi gailu ditu.
Alice elkarrizketa bat sortzen ari da.
Beste gailuak hartu eta sinkronizatu behar du gailuetako batean sortutako elkarrizketa
Eskari berriak detektatzeko sinkronizazioa
Alice-k elkarrizketa eskaera jasotzen du.
Alice-k gailu berri bat gehitu du.
Beste gailuak A gailutik jaso behar ditu eskaerak.
Onartu diren eskaeren sinkronizazioa
Alice-k bi gailu ditu.
Alice elkarrizketa eskaera onartzen du
Beste gailuak onartutako eskaera antzeman beharko luke.
Ezetz eskatzeko eskaeren sinkronizazioa
Alice-k bi gailu ditu.
Alice-k ez du onartzen elkarrizketa eskaera.
Beste gailuak ezeztatu egin den eskaera detektatu beharko du.
Egiteko egungo egintza
gerrit#15584 orri hau gauzatzen da