BitTorrent ํด๋ผ์ด์–ธํŠธ ์ „์†ก์€ C์—์„œ C++๋กœ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค.

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

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€