ஒத்திசைவு நெறிமுறை

ஸ்வார்ம் அரட்டை ஒவ்வொரு சாதனத்திற்கும் புதிய சாத்தியங்களை வழங்குகிறது. இப்போது, தொடர்புடைய களஞ்சியத்தைப் பகிர்ந்து கொள்வதன் மூலம் சாதனங்களுக்கு இடையிலான வரலாற்றை ஒத்திசைக்க முடியும். சாதன ஒத்திசைவு அந்த மாற்றங்களைப் பின்பற்ற மறுவரையறை செய்யப்பட வேண்டும்.

{doc}`Swarm வடிவமைப்பு ஆவணத்தில் பல சூழ்நிலைகள் வரையறுக்கப்பட்டுள்ளன, இருப்பினும், இது ஒரே பயனருக்கான சாதனங்களுக்கிடையேயான உரையாடல்களை ஒத்திசைக்க அர்த்தமல்ல. சில புதிய சூழ்நிலைகள் எழுதப்பட வேண்டும்.

பழைய முறை

சாதன ஒத்திசைவு DHT வழியாக செய்யப்பட்டது. ஏனெனில் ஒவ்வொரு மதிப்பு 64k ஐ விட அதிகமாக இருக்கக்கூடாது, உரையாடல்கள் சாதன ஒத்திசைவில் அனுப்பப்படவில்லை, அல்லது உறுப்பினர் சுயவிவரங்கள், ஏனெனில் இது மிகவும் கனமானது. இது ஒரு சிக்கல் மற்றும் மேம்படுத்தப்பட வேண்டும்.

பழைய முறையில், தொடர்பு பட்டியலை ஒத்திசைக்க உள்ள DeviceSync மதிப்புகளுக்கு "inbox:DEVICE_ID" இல் டேமன் கேட்கும் (cf. AccountManager::startSync() );

Note

The current DeviceSync value present on the DHT is deprecated with this draft.

புதிய முறை

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).

இப்போது, இது ஒத்திசைக்க பயன்படுத்தப்படும் சூழ்நிலைஃ

  1. When the device (A) goes online, it announces its presence via a DeviceAnnouncement like the OldMethod.

  2. மற்ற சாதனங்கள் (!A) அறிவிப்பைக் கண்டறிந்து, ConnectionManager வழியாக இந்த சாதனத்திற்கு "sync://DEVICE_ID_A" என்ற புதிய சேனலைத் திறக்கக் கேட்கும். (குறிப்புஃ A மற்ற சாதனங்களிலிருந்து அறிவிப்பைப் பெறுகிறது, எனவே இது ஒத்திசைவு சேனல்களையும் கேட்கும்).

  3. இந்த சேனல் திறக்கப்பட்டவுடன், இந்த சேனலைக் கேட்கும் சாதனம் அதன் அறியப்பட்ட உரையாடல்கள் மற்றும் தொடர்புகளை உள்ளடக்கிய DeviceSync மதிப்பை (அடுத்த பகுதியை பார்க்கவும்) அனுப்புகிறது.

  4. A DeviceSync மதிப்பை சரிபார்க்கும் மற்றும்ஃ

    • நீக்கப்பட்ட தொடர்புகளை கண்டறிந்தால் தொடர்புகளை அகற்றவும்

    • சேர்க்கப்பட்ட தொடர்புகளை கண்டறிந்தால் தொடர்புகளை சேர்க்கவும்

    • நீக்கப்பட்ட உரையாடல்களை கண்டறிந்தால் உரையாடல்களை அகற்றவும்

    • சேர்க்கப்பட்ட உரையாடல்களைக் கண்டறிந்தால் உரையாடல்களைச் சேர்க்கவும்

    • உரையாடலின் கோரிக்கைகள் ஏற்றுக்கொள்ளப்பட்டால் (இப்போது உரையாடல்களில்) / மறுக்கப்பட்டால் அகற்றவும்

    • உரையாடலின் கோரிக்கைகளை சேர்க்கவும்

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).

சாதன ஒத்திசைவு

இந்த மதிப்பு ஒரு JSON ஆகும்ஃ

{
    "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":[] }
        /* ... */
    ],
}

பயனர் கதைகள்

சாதனத்தை சேர்க்கும் போது ஒத்திசைவு

  • ஆலிஸ் ஒரு உரையாடலை உருவாக்குகிறது

  • (விரும்பினால்) ஆலிஸ் சில செய்திகளை சேர்க்க

  • ஆலிஸ் மற்றொரு சாதனம் சேர்க்கிறது

  • மற்ற சாதனம் முன்பு உருவாக்கப்பட்ட உரையாடலைப் பெற்று ஒத்திசைக்க வேண்டும்

சாதனத்தை இணைக்கும் போது ஒத்திசைவு

  • ஆலிஸ் ஒரு உரையாடலை உருவாக்குகிறது

  • (விரும்பினால்) ஆலிஸ் சில செய்திகளை சேர்க்க

  • ஆலிஸ் மற்றொரு சாதனத்தை இணைக்கிறது

  • மற்ற சாதனம் முன்பு உருவாக்கப்பட்ட உரையாடலைப் பெற்று ஒத்திசைக்க வேண்டும்

பல சாதனங்களுக்கு இடையில் ஒத்திசைவு

  • ஆலிஸ் இரண்டு சாதனங்கள் கிடைத்தது

  • ஆலிஸ் ஒரு உரையாடலை உருவாக்குகிறது

  • மற்ற சாதனம் ஒன்று சாதனங்களில் உருவாக்கப்பட்ட உரையாடலைப் பெற்று ஒத்திசைக்க வேண்டும்

புதிய கோரிக்கைகளை கண்டறிவதற்கான ஒத்திசைவு

  • அலிஸ் ஒரு உரையாடல் கோரிக்கை பெறுகிறது

  • ஆலிஸ் ஒரு புதிய சாதனம் சேர்க்க

  • மற்ற சாதனம் A சாதனத்திலிருந்து கோரிக்கைகளை மீட்டெடுக்க வேண்டும்

ஏற்றுக்கொள்ளப்பட்ட கோரிக்கைகளுக்கு ஒத்திசைவு

  • ஆலிஸின் இரண்டு சாதனங்கள் உள்ளன.

  • ஆலிஸ் ஒரு உரையாடல் கோரிக்கையை ஏற்றுக்கொள்கிறார்

  • ஏற்றுக்கொள்ளப்பட்ட கோரிக்கையை மற்ற சாதனம் கண்டறிய வேண்டும்

மறுப்பு கோரிக்கைகளை ஒத்திசைத்தல்

  • ஆலிஸின் இரண்டு சாதனங்கள் உள்ளன.

  • ஆலிஸ் ஒரு உரையாடல் கோரிக்கை மறுக்கிறது

  • மறுக்கப்பட்ட கோரிக்கையை மற்ற சாதனம் கண்டறிய வேண்டும்

தற்போதைய நடைமுறைப்படுத்தல்

gerrit#15584 இந்த பக்கத்தை செயல்படுத்துகிறது