Skip to content

Razvi99/snowhttp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

snowHTTP

Features

  • highly configurable, check out lib/snowhttp.h
  • no mid-run memory allocations outside of wolfssl and potential cache refreshes
  • multithreading
  • tls session resumption (+ tickets) - sessions are cached at startup and refreshed on a timer
  • dns caching

Building

To build library as static:

$ make

To build example executable:

$ make
$ make example

All built files are created by default in bin/

Usage

Single loop (no multithreading) setup

    snow_global_t global = {}; // contains all data
    
    // optional, if TLS session reuse is wanted
    snow_addWantedSession(&global, "https://hostname.com"); 
    snow_addWantedSession(&global, "https://hostname1.com");
    
    snow_init(&global);
    ...
    ev_run(EV_DEFAULT, loop_cb);
    ...
    snow_destroy(&global);

Requests can be made from loop_cb:

snow_do(&global, GET, "https://google.com/", http_cb, err_cb);

Multi loop setup

See example.cpp.

    snow_global_t global = {}; // contains all data
    ev_loop loops[multi_loop_max]; // multi loop data
    
    assignLoops(&global);

    // optional, if TLS session reuse is wanted
    snow_addWantedSession(&global, "https://hostname.com"); 
    snow_addWantedSession(&global, "https://hostname1.com");
    
    snow_init(&global);
    snow_spawnLoops(&global); // creates threads
    ...
    snow_joinLoops(&global); // joins threads
    ...
    snow_destroy(&global);

Requests can be made from the main thread, before snow_joinLoops:

snow_do(&global, GET, "https://google.com/", http_cb, err_cb);

License

This software is distributed under a MIT license, see LICENSE.
No warranty is provided, use at own risk.