diff options
author | Andrea Shepard <andrea@torproject.org> | 2012-09-21 14:46:22 -0700 |
---|---|---|
committer | Andrea Shepard <andrea@torproject.org> | 2012-10-10 00:40:06 -0700 |
commit | b208539b8047a12fb2f1f794c9932fddd577dfdb (patch) | |
tree | 1957c7d570f9bb2020324661b39acfe23de85609 /src/or/channel.h | |
parent | c684076fc7f685d6e0cd97f426d1474749f1da8b (diff) | |
download | tor-b208539b8047a12fb2f1f794c9932fddd577dfdb.tar.gz tor-b208539b8047a12fb2f1f794c9932fddd577dfdb.zip |
Use circuitmux_t in channels and when relaying cells
Diffstat (limited to 'src/or/channel.h')
-rw-r--r-- | src/or/channel.h | 33 |
1 files changed, 7 insertions, 26 deletions
diff --git a/src/or/channel.h b/src/or/channel.h index 27fba8fc00..4d3db41cef 100644 --- a/src/or/channel.h +++ b/src/or/channel.h @@ -10,6 +10,7 @@ #define _TOR_CHANNEL_H #include "or.h" +#include "circuitmux.h" /* Channel handler function pointer typedefs */ typedef void (*channel_listener_fn_ptr)(channel_listener_t *, channel_t *); @@ -99,7 +100,7 @@ struct channel_s { int (*matches_target)(channel_t *, const tor_addr_t *); /* Write a cell to an open channel */ int (*write_cell)(channel_t *, cell_t *); - /* Write a packed cell to an open channel */ + /* Write a packed cell to an open channel */ int (*write_packed_cell)(channel_t *, packed_cell_t *); /* Write a variable-length cell to an open channel */ int (*write_var_cell)(channel_t *, var_cell_t *); @@ -124,29 +125,8 @@ struct channel_s { /* List of queued outgoing cells */ smartlist_t *outgoing_queue; - /* Circuit stuff for use by relay.c */ - - /* - * Double-linked ring of circuits with queued cells waiting for room to - * free up on this connection's outbuf. Every time we pull cells from - * a circuit, we advance this pointer to the next circuit in the ring. - */ - struct circuit_t *active_circuits; - /* - * Priority queue of cell_ewma_t for circuits with queued cells waiting - * for room to free up on this connection's outbuf. Kept in heap order - * according to EWMA. - * - * This is redundant with active_circuits; if we ever decide only to use - * the cell_ewma algorithm for choosing circuits, we can remove - * active_circuits. - */ - smartlist_t *active_circuit_pqueue; - /* - * The tick on which the cell_ewma_ts in active_circuit_pqueue last had - * their ewma values rescaled. - */ - unsigned active_circuit_pqueue_last_recalibrated; + /* Circuit mux for circuits sending on this channel */ + circuitmux_t *cmux; /* Circuit ID generation stuff for use by circuitbuild.c */ @@ -161,8 +141,8 @@ struct channel_s { */ circid_t next_circ_id; - /* How many circuits use this connection as p_chan or n_chan? */ - int n_circuits; + /* For how many circuits are we n_chan? What about p_chan? */ + unsigned int num_n_circuits, num_p_circuits; /* * True iff this channel shouldn't get any new circs attached to it, @@ -456,6 +436,7 @@ void channel_mark_client(channel_t *chan); int channel_matches_extend_info(channel_t *chan, extend_info_t *extend_info); int channel_matches_target_addr_for_extend(channel_t *chan, const tor_addr_t *target); +unsigned int channel_num_circuits(channel_t *chan); void channel_set_circid_type(channel_t *chan, crypto_pk_t *identity_rcvd); void channel_timestamp_client(channel_t *chan); |