aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrea Shepard <andrea@torproject.org>2012-09-26 12:56:30 -0700
committerAndrea Shepard <andrea@torproject.org>2012-10-10 00:43:18 -0700
commit9da04141e23505074d6867e579fea130bbb00964 (patch)
tree5ebcac13f2871ceb74ff1e4b941002cbc33ec06a
parenta9deec3550ed51b3cd2a6a51104745def56b5e7a (diff)
downloadtor-9da04141e23505074d6867e579fea130bbb00964.tar
tor-9da04141e23505074d6867e579fea130bbb00964.tar.gz
Implement circuitmux_is_circuit_active(), circuitmux_num_cells_for_circuit(), circuitmux_num_cells(), circuitmux_num_active_circuits() and circuitmux_num_circuits() in circuitmux.c
-rw-r--r--src/or/circuitmux.c85
1 files changed, 85 insertions, 0 deletions
diff --git a/src/or/circuitmux.c b/src/or/circuitmux.c
index f6cdbf1e5..c6402945c 100644
--- a/src/or/circuitmux.c
+++ b/src/or/circuitmux.c
@@ -315,6 +315,91 @@ circuitmux_is_circuit_attached(circuitmux_t *cmux, circuit_t *circ)
return (hashent != NULL);
}
+/**
+ * Query whether a circuit is active on a circuitmux
+ */
+
+int
+circuitmux_is_circuit_active(circuitmux_t *cmux, circuit_t *circ)
+{
+ chanid_circid_muxinfo_t *hashent = NULL;
+ int is_active = 0;
+
+ tor_assert(cmux);
+ tor_assert(circ);
+
+ /* Look if it's in the circuit map */
+ hashent = circuitmux_find_map_entry(cmux, circ);
+ if (hashent) {
+ /* Check the number of cells on this circuit */
+ is_active = (hashent->muxinfo.cell_count > 0);
+ }
+ /* else not attached, so not active */
+
+ return is_active;
+}
+
+/**
+ * Query number of available cells for a circuit on a circuitmux
+ */
+
+unsigned int
+circuitmux_num_cells_for_circuit(circuitmux_t *cmux, circuit_t *circ)
+{
+ chanid_circid_muxinfo_t *hashent = NULL;
+ unsigned int n_cells = 0;
+
+ tor_assert(cmux);
+ tor_assert(circ);
+
+ /* Look if it's in the circuit map */
+ hashent = circuitmux_find_map_entry(cmux, circ);
+ if (hashent) {
+ /* Just get the cell count for this circuit */
+ n_cells = hashent->muxinfo.cell_count;
+ }
+ /* else not attached, so 0 cells */
+
+ return n_cells;
+}
+
+
+/**
+ * Query total number of available cells on a circuitmux
+ */
+
+unsigned int
+circuitmux_num_cells(circuitmux_t *cmux)
+{
+ tor_assert(cmux);
+
+ return cmux->n_cells;
+}
+
+/**
+ * Query total number of circuits active on a circuitmux
+ */
+
+unsigned int
+circuitmux_num_active_circuits(circuitmux_t *cmux)
+{
+ tor_assert(cmux);
+
+ return cmux->n_active_circuits;
+}
+
+/**
+ * Query total number of circuits attached to a circuitmux
+ */
+
+unsigned int
+circuitmux_num_circuits(circuitmux_t *cmux)
+{
+ tor_assert(cmux);
+
+ return cmux->n_circuits;
+}
+
/*
* Functions for circuit code to call to update circuit status
*/