circuitmux.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /* * Copyright (c) 2012, The Tor Project, Inc. */
  2. /* See LICENSE for licensing information */
  3. /**
  4. * \file circuitmux.h
  5. * \brief Header file for circuitmux.c
  6. **/
  7. #ifndef _TOR_CIRCUITMUX_H
  8. #define _TOR_CIRCUITMUX_H
  9. #include "or.h"
  10. /* Consistency check */
  11. void circuitmux_assert_okay(circuitmux_t *cmux);
  12. /* Create/destroy */
  13. circuitmux_t * circuitmux_alloc(void);
  14. void circuitmux_detach_all_circuits(circuitmux_t *cmux);
  15. void circuitmux_free(circuitmux_t *cmux);
  16. /* Status inquiries */
  17. cell_direction_t circuitmux_attached_circuit_direction(
  18. circuitmux_t *cmux,
  19. circuit_t *circ);
  20. int circuitmux_is_circuit_attached(circuitmux_t *cmux, circuit_t *circ);
  21. int circuitmux_is_circuit_active(circuitmux_t *cmux, circuit_t *circ);
  22. unsigned int circuitmux_num_cells_for_circuit(circuitmux_t *cmux,
  23. circuit_t *circ);
  24. unsigned int circuitmux_num_cells(circuitmux_t *cmux);
  25. unsigned int circuitmux_num_circuits(circuitmux_t *cmux);
  26. unsigned int circuitmux_num_active_circuits(circuitmux_t *cmux);
  27. /* Channel interface */
  28. circuit_t * circuitmux_get_first_active_circuit(circuitmux_t *cmux);
  29. void circuitmux_notify_xmit_cells(circuitmux_t *cmux, circuit_t *circ,
  30. unsigned int n_cells);
  31. /* Circuit interface */
  32. void circuitmux_attach_circuit(circuitmux_t *cmux, circuit_t *circ,
  33. cell_direction_t direction);
  34. void circuitmux_detach_circuit(circuitmux_t *cmux, circuit_t *circ);
  35. void circuitmux_clear_num_cells(circuitmux_t *cmux, circuit_t *circ);
  36. void circuitmux_add_to_num_cells(circuitmux_t *cmux, circuit_t *circ,
  37. unsigned int n_cells);
  38. void circuitmux_set_num_cells(circuitmux_t *cmux, circuit_t *circ,
  39. unsigned int n_cells);
  40. #endif /* _TOR_CIRCUITMUX_H */