mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
Using macros and inline function for quick lookup of channel state.
This commit is contained in:
@@ -430,6 +430,39 @@ channel_t * channel_find_by_remote_digest(const char *identity_digest);
|
||||
*/
|
||||
channel_t * channel_next_with_digest(channel_t *chan);
|
||||
|
||||
/*
|
||||
* Helper macros to lookup state of given channel.
|
||||
*/
|
||||
|
||||
#define CHANNEL_IS_CLOSED(chan) (channel_is_in_state((chan), \
|
||||
CHANNEL_STATE_CLOSED))
|
||||
#define CHANNEL_IS_OPENING(chan) (channel_is_in_state((chan), \
|
||||
CHANNEL_STATE_OPENING))
|
||||
#define CHANNEL_IS_OPEN(chan) (channel_is_in_state((chan), \
|
||||
CHANNEL_STATE_OPEN))
|
||||
#define CHANNEL_IS_MAINT(chan) (channel_is_in_state((chan), \
|
||||
CHANNEL_STATE_MAINT))
|
||||
#define CHANNEL_IS_CLOSING(chan) (channel_is_in_state((chan), \
|
||||
CHANNEL_STATE_CLOSING))
|
||||
#define CHANNEL_IS_ERROR(chan) (channel_is_in_state((chan), \
|
||||
CHANNEL_STATE_ERROR))
|
||||
|
||||
#define CHANNEL_FINISHED(chan) (CHANNEL_IS_CLOSED(chan) || \
|
||||
CHANNEL_IS_ERROR(chan))
|
||||
|
||||
#define CHANNEL_CONDEMNED(chan) (CHANNEL_IS_CLOSING(chan) || \
|
||||
CHANNEL_FINISHED(chan))
|
||||
|
||||
#define CHANNEL_CAN_HANDLE_CELLS(chan) (CHANNEL_IS_OPENING(chan) || \
|
||||
CHANNEL_IS_OPEN(chan) || \
|
||||
CHANNEL_IS_MAINT(chan))
|
||||
|
||||
static INLINE int
|
||||
channel_is_in_state(channel_t *chan, channel_state_t state)
|
||||
{
|
||||
return chan->state == state;
|
||||
}
|
||||
|
||||
/*
|
||||
* Metadata queries/updates
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user