Skip to content

durs/asio-http-pool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Name

Asio HTTP Clients Pool.

Description

HTTP clients pool for bulk requests in asynchronous mode. This code is part of the TMS software.

Usage

  • Simple example
    // declare asio thread pool and client http pool
    using namespace tms;
    static boost::asio::thread_pool io(4);
    static http_client_pool pool(io.get_executor(), 4);
    
    // process http get request
    pool.enqueue<http_string_body>("exemple.com", "80", "/test", nullopt, [](http_error err, http_stage stage, http_string_response&& resp){
        std::cout << "http ";
        if (stage >= http_stage_read) {
            std::cout << resp.result_int() << " " << resp.reason();
        }
        if (err) {
            std::cout << " error[" << err << "] " << err.message();
        }
        std::cout << " body[len: " << resp.body().size() << "]"
    });
        

Additional

  • Simple asynchronous timer with loop mode
  • Universal URI parser template for char/wchar_t and std::string/std:string_view/boost::string_view
    uri_t<wchar_t> uri;
    
    // parse and apply only submitted parts
    uri.parse(L"///test?params");
    uri.parse(L"guest:demo@exemple.com");
    uri.parse(L"https:///temp");
    
    // ignore arguments, but apply 443 port by https prefix
    uri.set_defaults(L"http", L"localhost"); 
    
    // check result
    if (uri.str() != L"https://guest:demo@exemple.com:443/temp?params") {
        throw std::runtime_error("uri parse/split algoritms failed");
    };

Requires

  • C++14, C++17 or higher
  • Boost 1.75 or higher (1.71 already fails)

Testing

  • VS 2015, Boost 1.75
  • VS 2022, Boost 1.81
  • GCC 9.4, Boost 1.80

Installation on Ubuntu 20 or higher

  • Additional libraries

    sudo apt install \
        build-essential gdb \
        libboost-dev \
        libasio-dev \
        libssl-dev
  • Install modern boost

    wget https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.tar.gz
    tar xvf boost_1_80_0.tar.gz
    cd boost_1_80_0
    ./bootstrap.sh --prefix=/usr/
    sudo ./b2 install
  • Build test

    make

About

http client pool for bulk requests

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published