-func (g *gateway) action(ctx context.Context, mac string, action Action) (State, error) {
- err := g.wait(ctx)
- if err != nil {
- return State{}, fmt.Errorf("wait for action slot: %w", err)
- }
-
- ctx, cancel := context.WithTimeout(ctx, gatewayExchangeTimeout)
- defer cancel()
-
- state, err := g.client.Action(ctx, mac, action)
- if err != nil {
- return State{}, fmt.Errorf("exchange gateway action: %w", err)
- }
-
- return state, nil
-}
-