dispatch_cfg.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  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-2018, The Tor Project, Inc. */
  5. /* See LICENSE for licensing information */
  6. #ifndef TOR_DISPATCH_CFG_H
  7. #define TOR_DISPATCH_CFG_H
  8. #include "lib/dispatch/msgtypes.h"
  9. /**
  10. * A "dispatch_cfg" is the configuration used to set up a dispatcher.
  11. * It is created and accessed with a set of dcfg_* functions, and then
  12. * used with dispatcher_new() to make the dispatcher.
  13. */
  14. typedef struct dispatch_cfg_t dispatch_cfg_t;
  15. dispatch_cfg_t *dcfg_new(void);
  16. int dcfg_msg_set_type(dispatch_cfg_t *cfg, message_id_t msg,
  17. msg_type_id_t type);
  18. int dcfg_msg_set_chan(dispatch_cfg_t *cfg, message_id_t msg,
  19. channel_id_t chan);
  20. int dcfg_type_set_fns(dispatch_cfg_t *cfg, msg_type_id_t type,
  21. const dispatch_typefns_t *fns);
  22. int dcfg_add_recv(dispatch_cfg_t *cfg, message_id_t msg,
  23. subsys_id_t sys, recv_fn_t fn);
  24. /** Free a dispatch_cfg_t. */
  25. #define dcfg_free(cfg) \
  26. FREE_AND_NULL(dispatch_cfg_t, dcfg_free_, (cfg))
  27. void dcfg_free_(dispatch_cfg_t *cfg);
  28. #endif