Transmission BitTorrent ํด๋ผ์ด์ธํธ์ ๊ธฐ๋ฐ์ด ๋๋ libtransmission ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ C++๋ก ๋ฒ์ญ๋์์ต๋๋ค. ์ ์ก์๋ ์ฌ์ ํ C ์ธ์ด๋ก ์์ฑ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค(GTK ์ธํฐํ์ด์ค, ๋ฐ๋ชฌ, CLI) ๊ตฌํ๊ณผ์ ๋ฐ์ธ๋ฉ์ด ์์ง๋ง ์ด์ ์ด์ ๋ธ๋ฆฌ์๋ C++ ์ปดํ์ผ๋ฌ๊ฐ ํ์ํฉ๋๋ค. ์ด์ ์๋ Qt ๊ธฐ๋ฐ ์ธํฐํ์ด์ค๋ง C++๋ก ์์ฑ๋์์ต๋๋ค(macOS์ฉ ํด๋ผ์ด์ธํธ๋ Objective-C๋ก, ์น ์ธํฐํ์ด์ค๋ JavaScript๋ก, ๊ทธ ์ธ ๋ชจ๋ ๊ฒ์ C๋ก ์์ฑ).
ํฌํ ์ ํ๋ก์ ํธ ๋ฆฌ๋์ด์ Qt ๊ธฐ๋ฐ์ Transmission ์ธํฐํ์ด์ค ์์ฑ์์ธ Charles Kerr์ ์ํด ์ํ๋์์ต๋๋ค. ์ ์ฒด ํ๋ก์ ํธ๋ฅผ C++๋ก ์ ํํ๋ ์ฃผ๋ ์ด์ ๋ ํ์ค C++ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ์ฌํ ๋ฌธ์ ์ ๋ํ ๊ธฐ์ฑ ์๋ฃจ์ ์ด ์์์๋ ๋ถ๊ตฌํ๊ณ libtransmission์ ๋ณ๊ฒฝํ ๋ ๊ณ์ํด์ ๋ฐํด๋ฅผ ์๋ก ๋ง๋ค์ด์ผ ํ๋ค๋ ๋๋ ๋๋ฌธ์ ๋๋ค(์๋ฅผ ๋ค์ด, std::partial_sort() ๋ฐ std::Vector())๊ฐ ์๋ ์ํ์์ ์์ ๋ง์ ํจ์ tr_quickfindFirstK() ๋ฐ tr_ptrArray()๋ฅผ ์์ฑํ๊ณ C++์ ๊ณ ๊ธ ์ ํ ๊ฒ์ฌ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
๊ฐ๋ฐ์๋ค์ ์ ์ฒด libtransmission์ C++๋ก ์ฆ์ ๋ค์ ์์ฑํ๋ค๋ ๋ชฉํ๋ฅผ ์ค์ค๋ก ์ค์ ํ ๊ฒ์ด ์๋๋ผ C++ ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ๋ฅผ ์ปดํ์ผํ๋ ์ ํ๋ถํฐ ์์ํ์ฌ ์ ์ง์ ์ผ๋ก C++๋ก์ ์ ํ์ ๊ตฌํํ ๊ณํ์
๋๋ค. ํ์ฌ ํ์์์๋ "auto" ํค์๋ ๋ฐ "static_cast" ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ์ ํ ๋ณํ๊ณผ ๊ฐ์ ์ผ๋ถ C++ ๊ด๋ จ ๊ตฌ๋ฌธ์ด ์ฝ๋์ ์ถ๊ฐ๋์๊ธฐ ๋๋ฌธ์ C ์ปดํ์ผ๋ฌ๋ฅผ ๋ ์ด์ ์ด์
๋ธ๋ฆฌ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด์ C ํจ์์ ๋ํ ์ง์์ ํธํ์ฑ์ ์ํด ์ ์ง๋ ์์ ์ด์ง๋ง ์ด์ ๊ฐ๋ฐ์๋ qsort() ๋์ std::sort()๋ฅผ ์ฌ์ฉํ๊ณ tr_ptrArray ๋์ std::Vector๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. tr_strdup() ๋์ constexpr์ ์ฌ์ฉํ๊ณ tr_ptrArray ๋์ std::Vector๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ถ์ฒ : opennet.ru