/* */ // // Compile and link like this: // $ g++ -Wall -O2 -g -std=c++11 -o libaria2ex libaria2ex.cc -laria2 #include #include #include int main() { aria2::libraryInit(); // session is actually singleton: 1 session per process aria2::Session* session; // Use default configuration aria2::SessionConfig config; session = aria2::sessionNew(aria2::KeyVals(), config); std::vector uris = { "http://localhost/" }; // Download files are stored in the current directory aria2::KeyVals options = { std::make_pair("dir", ".") }; // Add URI aria2::addUri(session, 0, uris, options); auto start = std::chrono::steady_clock::now(); for(;;) { int rv = aria2::run(session, aria2::RUN_ONCE); if(rv != 1) { break; } // the application can call aria2 API to add URI or query progress // here auto now = std::chrono::steady_clock::now(); auto count = std::chrono::duration_cast (now - start).count(); if(count >= 500) { start = now; std::vector gids = aria2::getActiveDownload(session); std::cout << "== Active Download(s) ==" << std::endl; for(auto gid : gids) { aria2::DownloadHandle* dh = aria2::getDownloadHandle(session, gid); if(dh) { std::cout << "[" << aria2::gidToHex(gid) << "] " << dh->getCompletedLength() << "/" << dh->getTotalLength() << " D:" << dh->getDownloadSpeed()/1024 << "KiB/s, U:" << dh->getUploadSpeed()/1024 << "KiB/s" << std::endl; aria2::deleteDownloadHandle(dh); } } } } int rv = aria2::sessionFinal(session); aria2::libraryDeinit(); return rv; }