]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Implement circuitmux_is_circuit_active(), circuitmux_num_cells_for_circuit(), circuit...
authorAndrea Shepard <andrea@torproject.org>
Wed, 26 Sep 2012 19:56:30 +0000 (12:56 -0700)
committerAndrea Shepard <andrea@torproject.org>
Wed, 10 Oct 2012 07:43:18 +0000 (00:43 -0700)
src/or/circuitmux.c

index f6cdbf1e5694531531070800791fc716bfaf5fc1..c6402945c35bdabd3f5b940d1dfe758a298dd876 100644 (file)
@@ -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
  */