இணைப்பு மேலாளர்

அறிமுகம்

இணைப்பு மேலாளர் என்பது குழு அரட்டை அம்சங்களின் முதல் பகுதி ஆகும். இந்த வகுப்பு சக ஊழியர்களுடன் இணைப்புகளை நிர்வகிக்கிறது மற்றும் பயனருக்கு இணைக்க விரும்பும் சாதனங்களுக்கு மல்டிபிளக்ஸ் செட் வழங்கும். உதாரணமாக, 2 கோப்புகளை மாற்ற பாப்பின் சாதனங்களில் ஒன்றுடன் இணைக்க விரும்பினால், பாபிற்கு 2 சேனல்களை (ஒன்று கோப்பு ஒன்று) திறக்க இணைப்பு மேலாளரிடம் கேட்கும். இது கொடுக்கும்ஃ

    aliceAccount->connectionManager().connectDevice(bobDeviceId, "file://file1",
        [](std::shared_ptr<ChannelSocket> socket) {
        if (socket) {
            // transfer first file
        }
    });

    aliceAccount->connectionManager().connectDevice(bobDeviceId, "file://file2",
        [](std::shared_ptr<ChannelSocket> socket) {
        if (socket) {
            // transfer second file
        }
    });

அதன் பின்னால், இணைப்பு மேலாளர் முதலில் DHT வழியாக (ICE வழியாக) பாப்பின் சாதனத்துடன் இணைந்து TLS Socket ஐ அமைக்கும். பின்னர், அது ஒரு சேனலைக் கேட்கும், சேனல் தயாராக இருக்கும்போது, அழைப்பு மூலம் ஆலிஸுக்குத் தெரிவிக்கவும். இரண்டாவது கோப்பிற்கு, அது முதல் சாக்கெட்டைப் பயன்படுத்தி ஒரு புதிய சேனலைத் திறக்கும் (2 TLS பாக்கெட்டுகள் மட்டுமே தேவை, எனவே இது வேகமாக உள்ளது)

DHT பக்க

இது call, **Exchange ICE வேட்பாளர்கள் **, **ICE பேச்சுவார்த்தை **, **Encrypt கட்டுப்பாட்டு socket ** ஆனால் மட்டுமே TCP இல் பார்க்க.

எனினும், ஒரு தரப்பு ஒரு புதிய ICE கோரிக்கையை பெறும்போது, null onICERequest(onICERequestCallback&&& cb); என அமைக்கப்பட்ட அழைப்புத் திரும்பத் தொடங்கப்படுகிறது.

புதிய சேனலைத் தொடங்குவது

ஒரு சேனல் ஒரு id (அது தனித்துவமானது) மற்றும் ஒரு uri (அது தனித்துவமானது அல்ல) மூலம் வரையறுக்கப்படுகிறது. உதாரணமாக (1, 'git://*')

இணைப்பு மேலாளர் தயாராக இருக்கும்போது, சேனல் 0 இருப்பதாக கருதுகிறார். இந்த சேனலை CONTROL சேனல் என்று அழைக்கிறார்கள், மேலும் புதிய சேனல்களைக் கேட்கப் பயன்படுகிறது.

பயன்படுத்தப்படும் நெறிமுறை மிகவும் எளிமையானது மற்றும் RTP நெறிமுறை போல் தெரிகிறதுஃ

  1. உடலின் நீளத்தை சேமிக்க 16 பிட் பயன்படுத்தப்படுகிறது.

  2. சேனல் ஐடி (இறுதி) க்கான 16 பிட்

  3. உடல்

எனவே அனைத்து தொகுப்புகளும் 32 பிட் லென் ஹெட்டரைக் கொண்டுள்ளன.

புதிய சேனலைக் கோருவதற்கு, இணைப்பு மேலாளர் சேனல் 0 இல் ஒரு ChannelRequest பொருளை (MSGpack struct ஐ வரிசைப்படுத்த பயன்படுகிறது) அனுப்புவார், இதன் மூலம் புதிய சேனலின் id மற்றும் பெயரை சமமானவருக்கு அனுப்பலாம் ( isAnswer = false).

ஒரு சேனலை மூடுதல்

ஒரு சேனலுக்கு EOF அனுப்பப்படுகிறது, உள்ளடக்கத்தின் நீளம் 0 என்றால்.

இணைப்பு அமைப்புManager

உரிமையாளர்

  1. ஒரு ஜாமி கணக்கு இணைப்பு மேலாளருக்கு சொந்தமானது மற்றும் சேனல்சாக்ெட் பொருள்களை அணுக முடியும் (மல்டிபிளெக்ஸிட்சாக்ெட்ஸுடன் சொந்தமான பகிரப்பட்ட_பட்.

  2. இணைப்பு மேலாளர் MultiplexedSockets மற்றும் ICE பொருள்களை வைத்திருக்கிறார்

  3. MultiplexedSockets TLS போக்குவரத்து மற்றும் ChannelSocket பொருள்கள் சொந்தமாக உள்ளது

  4. ChannelSocket தரவு பஃப்பர்கள் சொந்தமாக உள்ளது

வேடங்கள்

  1. இணைப்பு மேலாளர் சக ஊழியர்களுடன் இணைப்புகளை நிர்வகிக்கப் பயன்படுகிறது.

  2. மல்டிபிளெக்சட்சாக்ட்கள் TLSSocket வழியாக தரவுகளை அனுப்ப, வரும் தொகுப்புகளை படிக்க மற்றும் சேனல்களை நிர்வகிக்க பயன்படுத்தப்படுகின்றன.

  3. ChannelSockets வாடிக்கையாளர் மற்ற சகாக்களுடன் தொடர்பு கொள்ள பயன்படுகிறது.

பயன்பாடு

அதற்கான யூனிட் சோதனைகளில் (test/unitTest/connectionManager/connectionManager.cpp) சூழ்நிலைகள் விவரிக்கப்பட்டுள்ளன.