1fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville/** 264c42cae4482fe0157e977b8ddd0f2c2436b3f31Wink Saville * Copyright (C) 2011 The Android Open Source Project 3fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * 4fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * Licensed under the Apache License, Version 2.0 (the "License"); 5fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * you may not use this file except in compliance with the License. 6fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * You may obtain a copy of the License at 7fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * 8fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * http://www.apache.org/licenses/LICENSE-2.0 9fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * 10fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * Unless required by applicable law or agreed to in writing, software 11fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * distributed under the License is distributed on an "AS IS" BASIS, 12fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * See the License for the specific language governing permissions and 14fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * limitations under the License. 15fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville */ 16fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville 17fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Savillepackage com.android.internal.util; 18fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville 19fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Savilleimport android.os.Message; 20fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville 21fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville/** 22fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * {@hide} 23fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * 2464c42cae4482fe0157e977b8ddd0f2c2436b3f31Wink Saville * The interface for implementing states in a {@link StateMachine} 25fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville */ 2664c42cae4482fe0157e977b8ddd0f2c2436b3f31Wink Savillepublic interface IState { 27fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville 28fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville /** 2964c42cae4482fe0157e977b8ddd0f2c2436b3f31Wink Saville * Returned by processMessage to indicate the the message was processed. 30fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville */ 3164c42cae4482fe0157e977b8ddd0f2c2436b3f31Wink Saville static final boolean HANDLED = true; 3264c42cae4482fe0157e977b8ddd0f2c2436b3f31Wink Saville 3364c42cae4482fe0157e977b8ddd0f2c2436b3f31Wink Saville /** 3464c42cae4482fe0157e977b8ddd0f2c2436b3f31Wink Saville * Returned by processMessage to indicate the the message was NOT processed. 3564c42cae4482fe0157e977b8ddd0f2c2436b3f31Wink Saville */ 3664c42cae4482fe0157e977b8ddd0f2c2436b3f31Wink Saville static final boolean NOT_HANDLED = false; 37fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville 38fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville /** 39fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * Called when a state is entered. 40fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville */ 4164c42cae4482fe0157e977b8ddd0f2c2436b3f31Wink Saville void enter(); 4264c42cae4482fe0157e977b8ddd0f2c2436b3f31Wink Saville 4364c42cae4482fe0157e977b8ddd0f2c2436b3f31Wink Saville /** 4464c42cae4482fe0157e977b8ddd0f2c2436b3f31Wink Saville * Called when a state is exited. 4564c42cae4482fe0157e977b8ddd0f2c2436b3f31Wink Saville */ 4664c42cae4482fe0157e977b8ddd0f2c2436b3f31Wink Saville void exit(); 47fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville 48fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville /** 49fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * Called when a message is to be processed by the 50fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * state machine. 51fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * 52fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * This routine is never reentered thus no synchronization 53fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * is needed as only one processMessage method will ever be 54fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * executing within a state machine at any given time. This 55fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * does mean that processing by this routine must be completed 56fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * as expeditiously as possible as no subsequent messages will 57fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * be processed until this routine returns. 58fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * 59fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * @param msg to process 6064c42cae4482fe0157e977b8ddd0f2c2436b3f31Wink Saville * @return HANDLED if processing has completed and NOT_HANDLED 6164c42cae4482fe0157e977b8ddd0f2c2436b3f31Wink Saville * if the message wasn't processed. 62fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville */ 6364c42cae4482fe0157e977b8ddd0f2c2436b3f31Wink Saville boolean processMessage(Message msg); 64fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville 65fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville /** 6664c42cae4482fe0157e977b8ddd0f2c2436b3f31Wink Saville * Name of State for debugging purposes. 6764c42cae4482fe0157e977b8ddd0f2c2436b3f31Wink Saville * 6864c42cae4482fe0157e977b8ddd0f2c2436b3f31Wink Saville * @return name of state. 69fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville */ 7064c42cae4482fe0157e977b8ddd0f2c2436b3f31Wink Saville String getName(); 71fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville} 72