Eliminate unnecessary channel_set_cell_handler(), channel_set_var_cell_handler() in channel.c

This commit is contained in:
Andrea Shepard 2012-10-08 20:06:40 -07:00
parent 17356fe7fd
commit e877d02fdd
No known key found for this signature in database
GPG Key ID: 80BF498218A1E61B
2 changed files with 1 additions and 93 deletions

View File

@ -916,50 +916,7 @@ void
} }
/** /**
* Set the fixed-length cell handler for a channel * Set both cell handlers for a channel
*
* This function sets the fixed-length cell handler for a channel and
* processes any incoming cells that had been blocked in the queue because
* none was available.
*
* @param chan Channel to set the fixed-length cell handler for
* @param cell_handler Function pointer to new fixed-length cell handler
*/
void
channel_set_cell_handler(channel_t *chan,
void (*cell_handler)(channel_t *, cell_t *))
{
int changed = 0;
tor_assert(chan);
tor_assert(!(chan->is_listener));
tor_assert(chan->state == CHANNEL_STATE_OPENING ||
chan->state == CHANNEL_STATE_OPEN ||
chan->state == CHANNEL_STATE_MAINT);
log_debug(LD_CHANNEL,
"Setting cell_handler callback for channel %p to %p",
chan, cell_handler);
/*
* Keep track whether we've changed it so we know if there's any point in
* re-running the queue.
*/
if (cell_handler != chan->u.cell_chan.cell_handler) changed = 1;
/* Change it */
chan->u.cell_chan.cell_handler = cell_handler;
/* Re-run the queue if we have one and there's any reason to */
if (chan->u.cell_chan.cell_queue &&
(smartlist_len(chan->u.cell_chan.cell_queue) > 0) &&
changed &&
chan->u.cell_chan.cell_handler) channel_process_cells(chan);
}
/**
* Set the both cell handlers for a channel
* *
* This function sets both the fixed-length and variable length cell handlers * This function sets both the fixed-length and variable length cell handlers
* for a channel and processes any incoming cells that had been blocked in the * for a channel and processes any incoming cells that had been blocked in the
@ -1010,50 +967,6 @@ channel_set_cell_handlers(channel_t *chan,
chan->u.cell_chan.var_cell_handler)) channel_process_cells(chan); chan->u.cell_chan.var_cell_handler)) channel_process_cells(chan);
} }
/**
* Set the variable-length cell handler for a channel
*
* This function sets the variable-length cell handler for a channel and
* processes any incoming cells that had been blocked in the queue because
* none was available.
*
* @param chan Channel to set the variable-length cell handler for
* @param cell_handler Function pointer to new variable-length cell handler
*/
void
channel_set_var_cell_handler(channel_t *chan,
void (*var_cell_handler)(channel_t *,
var_cell_t *))
{
int changed = 0;
tor_assert(chan);
tor_assert(!(chan->is_listener));
tor_assert(chan->state == CHANNEL_STATE_OPENING ||
chan->state == CHANNEL_STATE_OPEN ||
chan->state == CHANNEL_STATE_MAINT);
log_debug(LD_CHANNEL,
"Setting var_cell_handler callback for channel %p to %p",
chan, var_cell_handler);
/*
* Keep track whether we've changed it so we know if there's any point in
* re-running the queue.
*/
if (var_cell_handler != chan->u.cell_chan.var_cell_handler) changed = 1;
/* Change it */
chan->u.cell_chan.var_cell_handler = var_cell_handler;
/* Re-run the queue if we have one and there's any reason to */
if (chan->u.cell_chan.cell_queue &&
(smartlist_len(chan->u.cell_chan.cell_queue) > 0) &&
changed && chan->u.cell_chan.var_cell_handler)
channel_process_cells(chan);
}
/** /**
* Request a channel be closed * Request a channel be closed
* *

View File

@ -247,15 +247,10 @@ void (* channel_get_cell_handler(channel_t *chan))
(channel_t *, cell_t *); (channel_t *, cell_t *);
void (* channel_get_var_cell_handler(channel_t *chan)) void (* channel_get_var_cell_handler(channel_t *chan))
(channel_t *, var_cell_t *); (channel_t *, var_cell_t *);
void channel_set_cell_handler(channel_t *chan,
void (*cell_handler)(channel_t *, cell_t *));
void channel_set_cell_handlers(channel_t *chan, void channel_set_cell_handlers(channel_t *chan,
void (*cell_handler)(channel_t *, cell_t *), void (*cell_handler)(channel_t *, cell_t *),
void (*var_cell_handler)(channel_t *, void (*var_cell_handler)(channel_t *,
var_cell_t *)); var_cell_t *));
void channel_set_var_cell_handler(channel_t *chan,
void (*var_cell_handler)(channel_t *,
var_cell_t *));
/* Clean up closed channels periodically; called from run_scheduled_events() /* Clean up closed channels periodically; called from run_scheduled_events()
* in main.c * in main.c