సమకాలీకరణ ప్రోటోకాల్

స్వార్మ్ చాట్ ప్రతి పరికరానికి కొత్త అవకాశాలను అందిస్తుంది. ఇప్పుడు, సంబంధిత రిపోజిటరీని పంచుకోవడం ద్వారా పరికరాల మధ్య చరిత్రను సమకాలీకరించడం సాధ్యమవుతుంది. పరికరాల సమకాలీకరణను ఆ మార్పులను అనుసరించడానికి పునర్నిర్వచించాలి.

Swarm డిజైన్ డాక్యుమెంట్లో చాలా దృష్టాంతాలు నిర్వచించబడ్డాయి, అయితే, ఇది ఒకే వినియోగదారు కోసం పరికరాల మధ్య సంభాషణలను సమకాలీకరించడానికి కాదు. కొన్ని కొత్త దృష్టాంతాలు వ్రాయబడాలి.

పాత పద్ధతి

పరికర సమకాలీకరణ DHT ద్వారా జరిగింది. ఎందుకంటే ప్రతి విలువ 64k మించకూడదు, పరికర సమకాలీకరణలో సంభాషణలు పంపబడలేదు, లేదా సభ్యుల ప్రొఫైల్స్, ఎందుకంటే ఇది చాలా భారీగా ఉంటుంది. ఇది ఒక సమస్య మరియు మెరుగుపరచాలి.

పాత పద్ధతిలో, డైమన్ "ఇన్బాక్స్ః DEVICE_ID" లో వింటున్నది DeviceSync విలువలు, ఇది సమకాలీకరించడానికి పరిచయాల జాబితాను కలిగి ఉంటుంది (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) ఆ ప్రకటనను గుర్తించి, ఈ పరికరాన్ని ** కనెక్షన్ మేనేజర్** ద్వారా "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 నుండి అభ్యర్థనలను పొందాలి

అంగీకరించిన అభ్యర్థనలకు సమకాలీకరణ

  • అలిస్ రెండు పరికరాలు ఉన్నాయి

  • అలిస్ ఒక సంభాషణ అభ్యర్థనను అంగీకరిస్తుంది

  • ఇతర పరికరము అంగీకరించిన అభ్యర్థనను గుర్తించాలి

డిస్కనెక్ట్ అభ్యర్థనలకు సమకాలీకరణ

  • అలిస్ రెండు పరికరాలు ఉన్నాయి

  • అలిస్ ఒక సంభాషణ అభ్యర్థనను తిరస్కరించారు

  • ఇతర పరికరము తిరస్కరించబడిన అభ్యర్థనను గుర్తించాలి

ప్రస్తుత అమలు

{గెరిట్}15584 ఈ పేజీని అమలు చేస్తుంది