LCOV - code coverage report
Current view: top level - lib/dispatch - dispatch_naming.c (source / functions) Hit Total Coverage
Test: lcov.info Lines: 6 6 100.0 %
Date: 2021-11-24 03:28:48 Functions: 11 13 84.6 %

          Line data    Source code
       1             : /* Copyright (c) 2001, Matej Pfajfar.
       2             :  * Copyright (c) 2001-2004, Roger Dingledine.
       3             :  * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
       4             :  * Copyright (c) 2007-2021, The Tor Project, Inc. */
       5             : /* See LICENSE for licensing information */
       6             : 
       7             : /**
       8             :  * @file dispatch_naming.c
       9             :  * @brief Name-to-ID maps for our message dispatch system.
      10             :  **/
      11             : 
      12             : #include "orconfig.h"
      13             : 
      14             : #include "lib/cc/compat_compiler.h"
      15             : 
      16             : #include "lib/dispatch/dispatch_naming.h"
      17             : #include "lib/dispatch/msgtypes.h"
      18             : 
      19             : #include "lib/container/namemap.h"
      20             : #include "lib/container/namemap_st.h"
      21             : 
      22             : #include "lib/log/util_bug.h"
      23             : #include "lib/log/log.h"
      24             : 
      25             : #include <stdlib.h>
      26             : 
      27             : /** Global namemap for message IDs. */
      28             : static namemap_t message_id_map = NAMEMAP_INIT();
      29             : /** Global namemap for subsystem IDs. */
      30             : static namemap_t subsys_id_map = NAMEMAP_INIT();
      31             : /** Global namemap for channel IDs. */
      32             : static namemap_t channel_id_map = NAMEMAP_INIT();
      33             : /** Global namemap for message type IDs. */
      34             : static namemap_t msg_type_id_map = NAMEMAP_INIT();
      35             : 
      36             : void
      37         262 : dispatch_naming_init(void)
      38             : {
      39         262 : }
      40             : 
      41             : #ifndef COCCI
      42             : /* Helper macro: declare functions to map IDs to and from names for a given
      43             :  * type in a namemap_t.
      44             :  */
      45             : #define DECLARE_ID_MAP_FNS(type)                                        \
      46             :   type##_id_t                                                           \
      47             :   get_##type##_id(const char *name)                                     \
      48             :   {                                                                     \
      49             :     unsigned u = namemap_get_or_create_id(&type##_id_map, name);        \
      50             :     tor_assert(u != NAMEMAP_ERR);                                       \
      51             :     tor_assert(u != ERROR_ID);                                          \
      52             :     return (type##_id_t) u;                                             \
      53             :   }                                                                     \
      54             :   const char *                                                          \
      55             :   get_##type##_id_name(type##_id_t id)                                  \
      56             :   {                                                                     \
      57             :     return namemap_fmt_name(&type##_id_map, id);                        \
      58             :   }                                                                     \
      59             :   size_t                                                                \
      60             :   get_num_##type##_ids(void)                                            \
      61             :   {                                                                     \
      62             :     return namemap_get_size(&type##_id_map);                            \
      63             :   }                                                                     \
      64             :   EAT_SEMICOLON
      65             : #endif /* !defined(COCCI) */
      66             : 
      67        8411 : DECLARE_ID_MAP_FNS(message);
      68        8161 : DECLARE_ID_MAP_FNS(channel);
      69        7242 : DECLARE_ID_MAP_FNS(subsys);
      70        9181 : DECLARE_ID_MAP_FNS(msg_type);

Generated by: LCOV version 1.14