সিঙ্ক্রোনাইজেশন প্রোটোকল
স্ওয়ারম চ্যাট প্রতিটি ডিভাইসের জন্য নতুন সম্ভাবনার প্রস্তাব দেয়। এখন, সম্পর্কিত সংগ্রহস্থল ভাগ করে ডিভাইসগুলির মধ্যে ইতিহাস সিঙ্ক করা সম্ভব। ডিভাইস সিঙ্ককে এই পরিবর্তনগুলি অনুসরণ করার জন্য পুনরায় সংজ্ঞায়িত করা দরকার।
Swarm নকশা ডকুমেন্ট অনেকগুলি দৃশ্যকল্প সংজ্ঞায়িত করা হয়েছে, তবে এটি একই ব্যবহারকারীর জন্য ডিভাইসগুলির মধ্যে কথোপকথন সিঙ্ক করার অর্থ নয়। কিছু নতুন দৃশ্যকল্প লিখতে হবে।
পুরনো পদ্ধতি
ডিভাইস সিঙ্ক DHT এর মাধ্যমে সম্পন্ন করা হয়। কারণ প্রতিটি মান 64k অতিক্রম করা উচিত নয়, কথোপকথন ডিভাইস সিঙ্ক, বা সদস্য প্রোফাইল পাঠানো হয়নি, কারণ এটি খুব ভারী। এটি একটি সমস্যা এবং উন্নতি করা আবশ্যক।
পুরানো পদ্ধতিতে, ডিভাইসসিঙ্ক মানগুলির জন্য "ইনবক্সঃ ডিভাইস_আইডি" এ ডেমোনটি শুনছে যা সিঙ্ক করার জন্য যোগাযোগের তালিকা রয়েছে (cf. AccountManager::startSync() );
নোট
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).
এখন, এই দৃশ্যটি সিঙ্ক করার জন্য ব্যবহৃত হয়ঃ
When the device (A) goes online, it announces its presence via a DeviceAnnouncement like the OldMethod.
অন্যান্য ডিভাইস (!A) এই বিজ্ঞপ্তিটি সনাক্ত করবে এবং ConnectionManager এর মাধ্যমে এই ডিভাইসটিকে "sync://DEVICE_ID_A" নামে একটি নতুন চ্যানেল খুলতে বলবে। (দ্রষ্টব্যঃ A অন্যান্য ডিভাইস থেকে বিজ্ঞপ্তি পাবেন, তাই এটি সিঙ্ক চ্যানেলগুলিও জিজ্ঞাসা করবে) ।
এই চ্যানেলটি খোলার সাথে সাথে, এই চ্যানেলটি জিজ্ঞাসা করা ডিভাইসটি তার পরিচিত কথোপকথন এবং পরিচিতিগুলি ধারণকারী একটি ** ডিভাইস সিঙ্ক** মান প্রেরণ করবে (পরবর্তী অংশটি দেখুন) ।
A ** ডিভাইস সিঙ্ক** মান চেক করবে এবংঃ
যদি এটি অপসারণ করা পরিচিতি সনাক্ত করে তবে পরিচিতিগুলি সরান
যোগ করা পরিচিতি যদি এটি যোগ করা পরিচিতি সনাক্ত করে
যদি এটি অপসারণ করা কথোপকথন সনাক্ত করে তবে কথোপকথন সরান
সংযোজন সংলাপ যদি এটি সংযোজন সংলাপ সনাক্ত করে
কথোপকথনের অনুরোধগুলি সরিয়ে ফেলুন যদি অনুরোধটি গৃহীত হয় (এখন কথোপকথনে) / প্রত্যাখ্যান করা হয়
যদি সনাক্ত করা হয় তাহলে কথোপকথনের অনুরোধ যোগ করুন
নোট
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 এই পৃষ্ঠাটি বাস্তবায়ন করে