BitTorrent-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Transmission ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ с Π‘ΠΈ Π½Π° Π‘ΠΈ++

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° libtransmission, лСТащая Π² основС BitTorrent-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Transmission, ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π° Π½Π° использованиС языка C++. Π’ Transmission Π΅Ρ‰Ρ‘ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ обвязки с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ интСрфСйсов ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (GTK-интСрфСйс, daemon, CLI), написанныС Π½Π° языкС Π‘ΠΈ, Π½ΠΎ для сборки Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ трСбуСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ компилятора C++. Π Π°Π½Π΅Π΅ Π½Π° Π‘++ Π±Ρ‹Π» написан Ρ‚ΠΎΠ»ΡŒΠΊΠΎ интСрфСйс Π½Π° Π±Π°Π·Π΅ Qt (ΠΊΠ»ΠΈΠ΅Π½Ρ‚ для macOS Π±Ρ‹Π» Π½Π° Objective-C, web-интСрфСйс Π½Π° JavaScript, Π° всё ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Π½Π° Π‘ΠΈ).

ΠŸΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ» Π§Π°Ρ€Π»ΡŒΠ· ΠšΠ΅Ρ€Ρ€ (Charles Kerr), Π»ΠΈΠ΄Π΅Ρ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Π°Π²Ρ‚ΠΎΡ€ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° интСрфСйса Transmission Π½Π° Π±Π°Π·Π΅ Qt. Основной ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° всСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° C++ называСтся ΠΎΡ‰ΡƒΡ‰Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ внСсСнии ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² libtransmission постоянно приходится ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π°Ρ‚ΡŒ вСлосипСд, ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ Π² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ C++ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ созданиС собствСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ tr_quickfindFirstK() ΠΈ tr_ptrArray () ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ std::partial_sort() ΠΈ std::vector()), Π° Ρ‚Π°ΠΊΠΆΠ΅ прСдоставлСниС Π² Π‘++ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Ρ… срСдств для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ².

ΠžΡ‚ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π΅ ставят ΠΏΠ΅Ρ€Π΅Π΄ собой Ρ†Π΅Π»ΡŒ сразу ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ вСсь libtransmission Π½Π° C++, Π° Π½Π°ΠΌΠ΅Ρ€Π΅Π½Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° Π‘++ постСпСнно, Π½Π°Ρ‡Π°Π² с ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΊ компиляции ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° с использованиСм компилятора Π‘++. Π’ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅ Π‘ΠΈ-компилятор Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ для сборки, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² ΠΊΠΎΠ΄ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ спСцифичныС Π‘++ конструкции, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово «auto» ΠΈ прСобразования Ρ‚ΠΈΠΏΠΎΠ² ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° «static_cast». ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ старых Π‘ΠΈ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ планируСтся ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ для обСспСчСния совмСстимости, Π½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ std::sort() вмСсто qsort() ΠΈ std::vector вмСсто tr_ptrArray. constexpr вмСсто tr_strdup() ΠΈ std::vector вмСсто tr_ptrArray.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru