KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mr > core > util > Stage


1 /*
2  * Copyright 2002 by
3  * <a HREF="http://www.coridan.com">Coridan</a>
4  * <a HREF="mailto: support@coridan.com ">support@coridan.com</a>
5  *
6  * The contents of this file are subject to the Mozilla Public License Version
7  * 1.1 (the "License"); you may not use this file except in compliance with the
8  * License. You may obtain a copy of the License at
9  * http://www.mozilla.org/MPL/
10  *
11  * Software distributed under the License is distributed on an "AS IS" basis,
12  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13  * for the specific language governing rights and limitations under the
14  * License.
15  *
16  * The Original Code is "MantaRay" (TM).
17  *
18  * The Initial Developer of the Original Code is Amir Shevat.
19  * Portions created by the Initial Developer are Copyright (C) 2006
20  * Coridan Inc. All Rights Reserved.
21  *
22  * Contributor(s): all the names of the contributors are added in the source
23  * code where applicable.
24  *
25  * Alternatively, the contents of this file may be used under the terms of the
26  * LGPL license (the "GNU LESSER GENERAL PUBLIC LICENSE"), in which case the
27  * provisions of LGPL are applicable instead of those above. If you wish to
28  * allow use of your version of this file only under the terms of the LGPL
29  * License and not to allow others to use your version of this file under
30  * the MPL, indicate your decision by deleting the provisions above and
31  * replace them with the notice and other provisions required by the LGPL.
32  * If you do not delete the provisions above, a recipient may use your version
33  * of this file under either the MPL or the GNU LESSER GENERAL PUBLIC LICENSE.
34  
35  *
36  * This library is free software; you can redistribute it and/or modify it
37  * under the terms of the MPL as stated above or under the terms of the GNU
38  * Lesser General Public License as published by the Free Software Foundation;
39  * either version 2.1 of the License, or any later version.
40  *
41  * This library is distributed in the hope that it will be useful, but WITHOUT
42  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
43  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
44  * License for more details.
45  */

46 /*
47  * Created on Dec 14, 2003
48  *
49  */

50 package org.mr.core.util;
51
52
53 import org.mr.core.persistent.PersistentQueue;
54
55  /**
56  * Stage is a well defined step in the logic process.
57  * It holds its own queue and can be looked at as an active smart queue.
58  * @author Amir Shevat
59  * @see StageHandler
60  */

61 public class Stage extends AbstractStage{
62     private Queue queue;
63     
64     
65     /**
66      * @param params The parameters of this stage, including name, blocking strategy
67      * and etc.
68      */

69     public Stage(StageParams params){
70         super(params);
71         if(params.isPersistent()){
72             queue = new PersistentQueue(params.getStageName(),true, params.isBlocking());
73         }else{
74             queue = new SynchronizedQueue();
75         }
76         
77         for(int index =0 ; index < params.getNumberOfStartThreads() ; index++){
78             StageExecutionThread exe = new StageExecutionThread(this);
79             exe.setName(params.getStageName()+"ExecThread"+(index+1));
80             exe.setPriority(Thread.NORM_PRIORITY+ params.getStagePriority());
81             exe.start();
82             stageExecutionThreads.add(exe);
83         }
84         
85     }
86     
87     
88     /**
89      * Dequeue from the queue of events.
90      * @return the object dequeded.
91      */

92     protected Object JavaDoc dequeue(){
93             return queue.dequeue();
94     }
95     
96     /**
97      * Puts a logical event in the queue , the handler will take care of this event.
98      * @param event The logical event.
99      */

100     public void enqueue(Object JavaDoc event){
101         queue.enqueue(event);
102     }
103     
104     /**
105      * @return The size of the queue of events.
106      */

107     public int size(){
108         return queue.size();
109     }
110     
111     /**
112      * Stops the exceution threads of this stage.
113      */

114     public void stop(){
115         for(int index =0 ; index < stageExecutionThreads.size();index++){
116             StageExecutionThread exe = (StageExecutionThread) stageExecutionThreads.get(index);
117             exe.setUp(false);
118             this.enqueue(exe.stopEvent);
119         }
120     }
121     
122         
123 }
124
Popular Tags