• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mavlink / MAVSDK / 11767930807

10 Nov 2024 07:33PM UTC coverage: 38.608% (+0.7%) from 37.921%
11767930807

push

github

web-flow
Merge pull request #2394 from mavlink/pr-consolidate-ci

Consolidate CI

12030 of 31159 relevant lines covered (38.61%)

243.33 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

53.06
/src/mavsdk/core/http_loader.cpp
1
#include "http_loader.h"
2
#include "curl_wrapper.h"
3

4
namespace mavsdk {
5

6
#ifdef TESTING
7
HttpLoader::HttpLoader(const std::shared_ptr<ICurlWrapper>& curl_wrapper) :
8
    _curl_wrapper(curl_wrapper)
9
{
10
    start();
11
}
12
#endif
13

14
HttpLoader::HttpLoader() : _curl_wrapper(std::make_shared<CurlWrapper>())
69✔
15
{
16
    start();
69✔
17
}
69✔
18

19
HttpLoader::~HttpLoader()
69✔
20
{
21
    stop();
69✔
22
}
69✔
23

24
void HttpLoader::start()
69✔
25
{
26
    _should_exit = false;
69✔
27
    _work_thread = new std::thread(work_thread, this);
69✔
28
}
69✔
29

30
void HttpLoader::stop()
69✔
31
{
32
    _should_exit = true;
69✔
33
    _work_queue.stop();
69✔
34
    if (_work_thread != nullptr) {
69✔
35
        _work_thread->join();
69✔
36
        delete _work_thread;
69✔
37
        _work_thread = nullptr;
69✔
38
    }
39
}
69✔
40

41
bool HttpLoader::download_sync(const std::string& url, const std::string& local_path)
×
42
{
43
    auto work_item = std::make_shared<DownloadItem>(url, local_path, nullptr);
×
44
    bool success = do_download(work_item, _curl_wrapper);
×
45
    return success;
×
46
}
×
47

48
void HttpLoader::download_async(
×
49
    const std::string& url,
50
    const std::string& local_path,
51
    const ProgressCallback& progress_callback)
52
{
53
    auto work_item = std::make_shared<DownloadItem>(url, local_path, progress_callback);
×
54
    _work_queue.enqueue(work_item);
×
55
}
×
56

57
void HttpLoader::work_thread(HttpLoader* self)
69✔
58
{
59
    while (!self->_should_exit) {
138✔
60
        auto item = self->_work_queue.dequeue();
69✔
61
        auto curl_wrapper = self->_curl_wrapper;
69✔
62
        if (!item || curl_wrapper == nullptr) {
69✔
63
            continue;
69✔
64
        }
65
        do_item(item.value(), curl_wrapper);
×
66
    }
138✔
67
}
69✔
68

69
void HttpLoader::do_item(
×
70
    const std::shared_ptr<WorkItem>& item, const std::shared_ptr<ICurlWrapper>& curl_wrapper)
71
{
72
    auto download_item = std::dynamic_pointer_cast<DownloadItem>(item);
×
73
    if (nullptr != download_item) {
×
74
        do_download(download_item, curl_wrapper);
×
75
        return;
×
76
    }
77
}
×
78

79
bool HttpLoader::do_download(
×
80
    const std::shared_ptr<DownloadItem>& item, const std::shared_ptr<ICurlWrapper>& curl_wrapper)
81
{
82
    bool success = curl_wrapper->download_file_to_path(
×
83
        item->get_url(), item->get_local_path(), item->get_progress_callback());
×
84
    return success;
×
85
}
86

87
bool HttpLoader::download_text_sync(const std::string& url, std::string& content)
×
88
{
89
    bool success = _curl_wrapper->download_text(url, content);
×
90
    return success;
×
91
}
92

93
} // namespace mavsdk
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc