|  | @@ -47,24 +47,52 @@ typedef struct circuit_muxinfo_s circuit_muxinfo_t;
 | 
	
		
			
				|  |  |   * To channels, which each have a circuitmux_t, the supported operations
 | 
	
		
			
				|  |  |   * are:
 | 
	
		
			
				|  |  |   *
 | 
	
		
			
				|  |  | - * circuitmux_flush_cells():
 | 
	
		
			
				|  |  | + *   circuitmux_get_first_active_circuit():
 | 
	
		
			
				|  |  |   *
 | 
	
		
			
				|  |  | - *   Retrieve a cell from one of the active circuits, chosen according to
 | 
	
		
			
				|  |  | - *   the circuitmux_t's cell selection policy.
 | 
	
		
			
				|  |  | + *     Pick one of the circuitmux's active circuits to send cells from.
 | 
	
		
			
				|  |  |   *
 | 
	
		
			
				|  |  | - * circuitmux_unlink_all():
 | 
	
		
			
				|  |  | + *   circuitmux_notify_xmit_cells():
 | 
	
		
			
				|  |  |   *
 | 
	
		
			
				|  |  | - *   The channel is closing down, all circuits must be detached.
 | 
	
		
			
				|  |  | + *     Notify the circuitmux that cells have been sent on a circuit.
 | 
	
		
			
				|  |  |   *
 | 
	
		
			
				|  |  |   * To circuits, the exposed operations are:
 | 
	
		
			
				|  |  |   *
 | 
	
		
			
				|  |  | - *   TODO
 | 
	
		
			
				|  |  | + *   circuitmux_attach_circuit():
 | 
	
		
			
				|  |  |   *
 | 
	
		
			
				|  |  | - * To circuit selection policies, the exposed operations are:
 | 
	
		
			
				|  |  | + *     Attach a circuit to the circuitmux; this will allocate any policy-
 | 
	
		
			
				|  |  | + *     specific data wanted for this circuit and add it to the active
 | 
	
		
			
				|  |  | + *     circuits list if it has queued cells.
 | 
	
		
			
				|  |  |   *
 | 
	
		
			
				|  |  | - *   TODO
 | 
	
		
			
				|  |  | + *   circuitmux_detach_circuit():
 | 
	
		
			
				|  |  |   *
 | 
	
		
			
				|  |  | - * General status inquiries?
 | 
	
		
			
				|  |  | + *     Detach a circuit from the circuitmux, freeing associated structures.
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + *   circuitmux_clear_num_cells():
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + *     Clear the circuitmux's cell counter for this circuit.
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + *   circuitmux_set_num_cells():
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + *     Set the circuitmux's cell counter for this circuit.
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + * See circuitmux.h for the circuitmux_policy_t data structure, which contains
 | 
	
		
			
				|  |  | + * a table of function pointers implementing a circuit selection policy, and
 | 
	
		
			
				|  |  | + * circuitmux_ewma.c for an example of a circuitmux policy.  Circuitmux
 | 
	
		
			
				|  |  | + * policies can be manipulated with:
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + *   circuitmux_get_policy():
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + *     Return the current policy for a circuitmux_t, if any.
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + *   circuitmux_clear_policy():
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + *     Remove a policy installed on a circuitmux_t, freeing all associated
 | 
	
		
			
				|  |  | + *     data.  The circuitmux will revert to the built-in round-robin behavior.
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + *   circuitmux_set_policy():
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + *     Install a policy on a circuitmux_t; the appropriate callbacks will be
 | 
	
		
			
				|  |  | + *     made to attach all existing circuits to the new policy.
 | 
	
		
			
				|  |  |   *
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  
 |