1 /* 2 * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package com.sun.corba.se.spi.orbutil.fsm; 27 28 /** 29 * Description goes here 30 * 31 * @author Ken Cavanaugh 32 */ 33 public interface Action 34 { 35 /** Called by the state engine to perform an action 36 * before a state transition takes place. The FSM is 37 * passed so that the Action may set the next state in 38 * cases when that is required. FSM and Input together 39 * allow actions to be written that depend on the state and 40 * input, but this should generally be avoided, as the 41 * reason for a state machine in the first place is to cleanly 42 * separate the actions and control flow. Note that an 43 * action should complete in a timely manner. If the state machine 44 * is used for concurrency control with multiple threads, the 45 * action must not allow multiple threads to run simultaneously 46 * in the state machine, as the state could be corrupted. 47 * Any exception thrown by the Action for the transition 48 * will be propagated to doIt. 49 * @param FSM fsm is the state machine causing this action. 50 * @param Input in is the input that caused the transition. 51 */ 52 public void doIt( FSM fsm, Input in ) ; 53 } 54 55 // end of Action.java