LCOV - code coverage report
Current view: top level - src/support - events.h (source / functions) Hit Total Coverage
Test: coverage.lcov Lines: 14 15 93.3 %
Date: 2022-04-21 14:51:19 Functions: 5 6 83.3 %
Legend: Modified by patch:
Lines: hit not hit | Branches: + taken - not taken # not executed

Not modified by patch:
Lines: hit not hit | Branches: + taken - not taken # not executed
Branches: 1 2 50.0 %

           Branch data     Line data    Source code
#       1                 :            : // Copyright (c) 2016-2018 The Bitcoin Core developers
#       2                 :            : // Distributed under the MIT software license, see the accompanying
#       3                 :            : // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#       4                 :            : 
#       5                 :            : #ifndef BITCOIN_SUPPORT_EVENTS_H
#       6                 :            : #define BITCOIN_SUPPORT_EVENTS_H
#       7                 :            : 
#       8                 :            : #include <ios>
#       9                 :            : #include <memory>
#      10                 :            : 
#      11                 :            : #include <event2/event.h>
#      12                 :            : #include <event2/http.h>
#      13                 :            : 
#      14                 :            : #define MAKE_RAII(type) \
#      15                 :            : /* deleter */\
#      16                 :            : struct type##_deleter {\
#      17                 :       1428 :     void operator()(struct type* ob) {\
#      18                 :       1428 :         type##_free(ob);\
#      19                 :       1428 :     }\
#      20                 :            : };\
#      21                 :            : /* unique ptr typedef */\
#      22                 :            : typedef std::unique_ptr<struct type, type##_deleter> raii_##type
#      23                 :            : 
#      24                 :            : MAKE_RAII(event_base);
#      25                 :            : MAKE_RAII(event);
#      26                 :            : MAKE_RAII(evhttp);
#      27                 :            : MAKE_RAII(evhttp_request);
#      28                 :            : MAKE_RAII(evhttp_connection);
#      29                 :            : 
#      30                 :       2213 : inline raii_event_base obtain_event_base() {
#      31                 :       2213 :     auto result = raii_event_base(event_base_new());
#      32         [ -  + ]:       2213 :     if (!result.get())
#      33                 :          0 :         throw std::runtime_error("cannot create event_base");
#      34                 :       2213 :     return result;
#      35                 :       2213 : }
#      36                 :            : 
#      37                 :          4 : inline raii_event obtain_event(struct event_base* base, evutil_socket_t s, short events, event_callback_fn cb, void* arg) {
#      38                 :          4 :     return raii_event(event_new(base, s, events, cb, arg));
#      39                 :          4 : }
#      40                 :            : 
#      41                 :        789 : inline raii_evhttp obtain_evhttp(struct event_base* base) {
#      42                 :        789 :     return raii_evhttp(evhttp_new(base));
#      43                 :        789 : }
#      44                 :            : 
#      45                 :            : inline raii_evhttp_request obtain_evhttp_request(void(*cb)(struct evhttp_request *, void *), void *arg) {
#      46                 :            :     return raii_evhttp_request(evhttp_request_new(cb, arg));
#      47                 :            : }
#      48                 :            : 
#      49                 :            : inline raii_evhttp_connection obtain_evhttp_connection_base(struct event_base* base, std::string host, uint16_t port) {
#      50                 :            :     auto result = raii_evhttp_connection(evhttp_connection_base_new(base, nullptr, host.c_str(), port));
#      51                 :            :     if (!result.get())
#      52                 :            :         throw std::runtime_error("create connection failed");
#      53                 :            :     return result;
#      54                 :            : }
#      55                 :            : 
#      56                 :            : #endif // BITCOIN_SUPPORT_EVENTS_H

Generated by: LCOV version 0-eol-96201-ge66f56f4af6a