[telepathy-gabble/master] Use switches in Hold state machine
Will Thompson
will.thompson at collabora.co.uk
Mon Jun 1 08:48:59 PDT 2009
I think this is clearer than the chained if-else-if-else-if-else-s used
before.
---
src/media-channel-hold.c | 56 ++++++++++++++++++++++-----------------------
1 files changed, 27 insertions(+), 29 deletions(-)
diff --git a/src/media-channel-hold.c b/src/media-channel-hold.c
index f5704fe..1733c5f 100644
--- a/src/media-channel-hold.c
+++ b/src/media-channel-hold.c
@@ -62,52 +62,51 @@ stream_hold_state_changed (GabbleMediaStream *stream G_GNUC_UNUSED,
if (all_held)
{
/* Move to state HELD */
-
- if (priv->hold_state == TP_LOCAL_HOLD_STATE_HELD)
+ switch (priv->hold_state)
{
+ case TP_LOCAL_HOLD_STATE_HELD:
/* nothing changed */
return;
- }
- else if (priv->hold_state == TP_LOCAL_HOLD_STATE_PENDING_UNHOLD)
- {
+
+ case TP_LOCAL_HOLD_STATE_PENDING_UNHOLD:
/* This can happen if the user asks us to hold, then changes their
* mind. We make no particular guarantees about stream states when
* in PENDING_UNHOLD state, so keep claiming to be in that state */
return;
- }
- else if (priv->hold_state == TP_LOCAL_HOLD_STATE_PENDING_HOLD)
- {
+
+ case TP_LOCAL_HOLD_STATE_PENDING_HOLD:
/* We wanted to hold, and indeed we have. Yay! Keep whatever
* reason code we used for going to PENDING_HOLD */
priv->hold_state = TP_LOCAL_HOLD_STATE_HELD;
- }
- else
- {
+ break;
+
+ case TP_LOCAL_HOLD_STATE_UNHELD:
/* We were previously UNHELD. So why have we gone on hold now? */
DEBUG ("Unexpectedly entered HELD state!");
priv->hold_state = TP_LOCAL_HOLD_STATE_HELD;
priv->hold_state_reason = TP_LOCAL_HOLD_STATE_REASON_NONE;
+ break;
}
}
else if (any_held)
{
- if (priv->hold_state == TP_LOCAL_HOLD_STATE_UNHELD)
+ switch (priv->hold_state)
{
+ case TP_LOCAL_HOLD_STATE_UNHELD:
/* The streaming client has spontaneously changed its stream
* state. Why? We just don't know */
DEBUG ("Unexpectedly entered PENDING_UNHOLD state!");
priv->hold_state = TP_LOCAL_HOLD_STATE_PENDING_UNHOLD;
priv->hold_state_reason = TP_LOCAL_HOLD_STATE_REASON_NONE;
- }
- else if (priv->hold_state == TP_LOCAL_HOLD_STATE_HELD)
- {
+ break;
+
+ case TP_LOCAL_HOLD_STATE_HELD:
/* Likewise */
DEBUG ("Unexpectedly entered PENDING_HOLD state!");
priv->hold_state = TP_LOCAL_HOLD_STATE_PENDING_HOLD;
priv->hold_state_reason = TP_LOCAL_HOLD_STATE_REASON_NONE;
- }
- else
- {
+
+ default:
/* nothing particularly interesting - we're trying to change hold
* state already, so nothing to signal */
return;
@@ -116,31 +115,30 @@ stream_hold_state_changed (GabbleMediaStream *stream G_GNUC_UNUSED,
else
{
/* Move to state UNHELD */
-
- if (priv->hold_state == TP_LOCAL_HOLD_STATE_UNHELD)
+ switch (priv->hold_state)
{
+ case TP_LOCAL_HOLD_STATE_UNHELD:
/* nothing changed */
return;
- }
- else if (priv->hold_state == TP_LOCAL_HOLD_STATE_PENDING_HOLD)
- {
+
+ case TP_LOCAL_HOLD_STATE_PENDING_HOLD:
/* This can happen if the user asks us to unhold, then changes their
* mind. We make no particular guarantees about stream states when
* in PENDING_HOLD state, so keep claiming to be in that state */
return;
- }
- else if (priv->hold_state == TP_LOCAL_HOLD_STATE_PENDING_UNHOLD)
- {
+
+ case TP_LOCAL_HOLD_STATE_PENDING_UNHOLD:
/* We wanted to hold, and indeed we have. Yay! Keep whatever
* reason code we used for going to PENDING_UNHOLD */
priv->hold_state = TP_LOCAL_HOLD_STATE_UNHELD;
- }
- else
- {
+ break;
+
+ case TP_LOCAL_HOLD_STATE_HELD:
/* We were previously HELD. So why have we gone off hold now? */
DEBUG ("Unexpectedly entered UNHELD state!");
priv->hold_state = TP_LOCAL_HOLD_STATE_UNHELD;
priv->hold_state_reason = TP_LOCAL_HOLD_STATE_REASON_NONE;
+ break;
}
/* Tell the peer what's happened. */
--
1.5.6.5
More information about the telepathy-commits
mailing list