Sinkronigprotokolo
La sormo de konversacio disponigas novajn eblojn por ĉiu aparato. Nun, estas eble sinkronigi historion inter aparatoj dividante la rilataj deponejoj. Aparatoj sinkronigo devas esti redifinita por sekvi tiujn ŝanĝojn.
Multaj scenaroj estas difinitaj en la Swarm projektdokumento, aliflanke, tio ne implicas sinkronigon de konversacioj inter aparatoj por la sama uzanto. Kelkaj novaj scenaroj devas esti skribitaj.
Malnova metodo
La aparato sinkronigis estis farita per la DHT. Ĉar ĉiu valoro NE devas superi 64k, konversacioj ne estis senditaj en aparato sinkronigis, nek membroj profiloj, ĉar ĝi estas tro peza. Tio estas problemo kaj devas esti plibonigita.
En la malnova metodo, la demono aŭskultas en “inbox:DEVICE_ID” por DeviceSync valoroj kiu enhavas la kontaktliston sinkronigi (cf. AccountManager::startSync()
);
Note
The current DeviceSync value present on the DHT is deprecated with this draft.
Nova metodo
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).
Jen la scenaro uzata por sinkronigi:
When the device (A) goes online, it announces its presence via a DeviceAnnouncement like the OldMethod.
Aliaj aparatoj (!A) detektos tiun sciigon kaj petos tiun aparaton tra la ConnectionManager por malfermi novan kanalon nomitan “sync://DEVICE_ID_A”. (Noto: A ricevos sciigon de aliaj aparatoj, do ĝi petos sinkronigkanalojn ankaŭ).
Tuj kiam tiu kanalo estas malfermita, la aparato kiu petas tiun kanalon sendos DeviceSync (vidu sekvan parton) valoro enhavanta ĝiajn konatajn konversaciojn kaj kontaktojn.
A kontrolos la DeviceSync valoro kaj:
Forigu kontaktojn se ĝi detektas forigitajn kontaktojn
Aldonu kontaktojn se ĝi detektas aldonajn kontaktojn
Forigu konversaciojn, se ĝi detektas forigitajn konversaciojn
Aldonu konversaciojn se ĝi detektas aldonajn konversaciojn
Forigu la petojn de konversacio se peto estas akceptita (nun en konversacioj) / malakceptita
Aldonu la petojn de konversacio se detektita
Note
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).
Device Sync
Tiu valoro estas JSON enhavanta:
{
"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":[] }
/* ... */
],
}
Uzantaj rakontoj
Sinkronigu kiam aldoni aparaton
Alice kreas konversacion
(Ponebla) Alice aldonas kelkajn mesaĝojn
Alice aldonas alian aparaton
La alia aparato devas ricevi kaj sinkronigi la konversacion antaŭe kreita
Sinkronigu kiam konekti aparaton
Alice kreas konversacion
(Ponebla) Alice aldonas kelkajn mesaĝojn
Alice konektas alian aparaton
La alia aparato devas ricevi kaj sinkronigi la konversacion antaŭe kreita
Sinkronigo inter pluraj aparatoj
Alice havas du aparatojn.
Alice kreas konversacion
La alia aparato devas ricevi kaj sinkronigi la konversacion kreita sur unu el la aparatoj
Sinkronizo por detekti novajn petojn
Alice ricevas la peton por konversacio
Alice aldonas novan aparaton
La alia aparato devas retrovi la petojn de aparato A
Sinkronigo por akceptitaj petoj
Alice havas 2 aparatojn.
Alice akceptas la peton por konversacio
La alia aparato devas detekti la akceptitan peton
Sinkronizo por rezigno petoj
Alice havas 2 aparatojn.
Alice rifuzas la peton por konversacio
La alia aparato devas detekti la rifuzitan peton
Aktuala efektivigo
gerrit#15584 efektivigas ĉi tiun paĝon