diff options
| author | Linus Färnstrand <linus@mullvad.net> | 2018-10-01 18:01:04 +0200 |
|---|---|---|
| committer | Linus Färnstrand <linus@mullvad.net> | 2018-10-01 18:04:08 +0200 |
| commit | 9bc519285d600eb730f20c946427f8ffafacd8ad (patch) | |
| tree | 0ca15ec120e6d506cc31d82d7cffa453b1e871d3 | |
| parent | 63637a094a032a5641d150e83d6831e47cdf1a5b (diff) | |
| download | mullvadvpn-9bc519285d600eb730f20c946427f8ffafacd8ad.tar.xz mullvadvpn-9bc519285d600eb730f20c946427f8ffafacd8ad.zip | |
Generate TunnelStateWrapper::handle_event in macro
| -rw-r--r-- | talpid-core/src/tunnel_state_machine/mod.rs | 44 |
1 files changed, 15 insertions, 29 deletions
diff --git a/talpid-core/src/tunnel_state_machine/mod.rs b/talpid-core/src/tunnel_state_machine/mod.rs index f37a035ce0..3338d3c4cc 100644 --- a/talpid-core/src/tunnel_state_machine/mod.rs +++ b/talpid-core/src/tunnel_state_machine/mod.rs @@ -294,6 +294,21 @@ macro_rules! state_wrapper { $wrapper_name::$state_variant(state) } })* + + impl $wrapper_name { + fn handle_event( + self, + commands: &mut mpsc::UnboundedReceiver<TunnelCommand>, + shared_values: &mut SharedTunnelStateValues, + ) -> TunnelStateMachineAction { + match self { + $($wrapper_name::$state_variant(state) => { + let event_consequence = state.handle_event(commands, shared_values); + TunnelStateMachineAction::from(event_consequence) + })* + } + } + } } } @@ -306,32 +321,3 @@ state_wrapper! { Blocked(BlockedState), } } - -impl TunnelStateWrapper { - fn handle_event( - self, - commands: &mut mpsc::UnboundedReceiver<TunnelCommand>, - shared_values: &mut SharedTunnelStateValues, - ) -> TunnelStateMachineAction { - macro_rules! handle_event { - ( $($state:ident),* $(,)* ) => { - match self { - $( - TunnelStateWrapper::$state(state) => { - let event_consequence = state.handle_event(commands, shared_values); - TunnelStateMachineAction::from(event_consequence) - } - )* - } - } - } - - handle_event! { - Disconnected, - Connecting, - Connected, - Disconnecting, - Blocked, - } - } -} |
