124be7cc6d138129b4087ef28f114701de54aba3cSenpo Hu/* 224be7cc6d138129b4087ef28f114701de54aba3cSenpo Hu * Copyright (C) 2015 The Android Open Source Project 324be7cc6d138129b4087ef28f114701de54aba3cSenpo Hu * 424be7cc6d138129b4087ef28f114701de54aba3cSenpo Hu * Licensed under the Apache License, Version 2.0 (the "License"); 524be7cc6d138129b4087ef28f114701de54aba3cSenpo Hu * you may not use this file except in compliance with the License. 624be7cc6d138129b4087ef28f114701de54aba3cSenpo Hu * You may obtain a copy of the License at 724be7cc6d138129b4087ef28f114701de54aba3cSenpo Hu * 824be7cc6d138129b4087ef28f114701de54aba3cSenpo Hu * http://www.apache.org/licenses/LICENSE-2.0 924be7cc6d138129b4087ef28f114701de54aba3cSenpo Hu * 1024be7cc6d138129b4087ef28f114701de54aba3cSenpo Hu * Unless required by applicable law or agreed to in writing, software 1124be7cc6d138129b4087ef28f114701de54aba3cSenpo Hu * distributed under the License is distributed on an "AS IS" BASIS, 1224be7cc6d138129b4087ef28f114701de54aba3cSenpo Hu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1324be7cc6d138129b4087ef28f114701de54aba3cSenpo Hu * See the License for the specific language governing permissions and 1424be7cc6d138129b4087ef28f114701de54aba3cSenpo Hu * limitations under the License. 1524be7cc6d138129b4087ef28f114701de54aba3cSenpo Hu */ 1624be7cc6d138129b4087ef28f114701de54aba3cSenpo Hu 17d2d86155337a7dd9fd285a25c93e27dc05200ed1Senpo Hupackage com.android.camera.captureintent.stateful; 1824be7cc6d138129b4087ef28f114701de54aba3cSenpo Hu 1924be7cc6d138129b4087ef28f114701de54aba3cSenpo Huimport com.google.common.base.Optional; 2024be7cc6d138129b4087ef28f114701de54aba3cSenpo Hu 2124be7cc6d138129b4087ef28f114701de54aba3cSenpo Hu/** 22d2d86155337a7dd9fd285a25c93e27dc05200ed1Senpo Hu * Defines an event handler interface that any implementation of this interface 23d2d86155337a7dd9fd285a25c93e27dc05200ed1Senpo Hu * can be used by {@link StateMachine} to handle a particular type of event 24d2d86155337a7dd9fd285a25c93e27dc05200ed1Senpo Hu * which extends {@link Event}. 2524be7cc6d138129b4087ef28f114701de54aba3cSenpo Hu * 26d2d86155337a7dd9fd285a25c93e27dc05200ed1Senpo Hu * @param <T> The particular type of event. 2724be7cc6d138129b4087ef28f114701de54aba3cSenpo Hu */ 28d2d86155337a7dd9fd285a25c93e27dc05200ed1Senpo Hupublic interface EventHandler<T extends Event> { 29d2d86155337a7dd9fd285a25c93e27dc05200ed1Senpo Hu 30d2d86155337a7dd9fd285a25c93e27dc05200ed1Senpo Hu /** 31d2d86155337a7dd9fd285a25c93e27dc05200ed1Senpo Hu * Process a single event. 32d2d86155337a7dd9fd285a25c93e27dc05200ed1Senpo Hu * 33d2d86155337a7dd9fd285a25c93e27dc05200ed1Senpo Hu * @param event The event to be processed. 34d2d86155337a7dd9fd285a25c93e27dc05200ed1Senpo Hu * @return The next desired state. If it is not NO_CHANGE, the state 35d2d86155337a7dd9fd285a25c93e27dc05200ed1Senpo Hu * machine will change to the next desired state. 36d2d86155337a7dd9fd285a25c93e27dc05200ed1Senpo Hu */ 37d2d86155337a7dd9fd285a25c93e27dc05200ed1Senpo Hu public Optional<State> processEvent(T event); 38d2d86155337a7dd9fd285a25c93e27dc05200ed1Senpo Hu}