KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > proactive > examples > readers > Reader


1 /*
2 * ################################################################
3 *
4 * ProActive: The Java(TM) library for Parallel, Distributed,
5 * Concurrent computing with Security and Mobility
6 *
7 * Copyright (C) 1997-2002 INRIA/University of Nice-Sophia Antipolis
8 * Contact: proactive-support@inria.fr
9 *
10 * This library is free software; you can redistribute it and/or
11 * modify it under the terms of the GNU Lesser General Public
12 * License as published by the Free Software Foundation; either
13 * version 2.1 of the License, or any later version.
14 *
15 * This library is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 * Lesser General Public License for more details.
19 *
20 * You should have received a copy of the GNU Lesser General Public
21 * License along with this library; if not, write to the Free Software
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
23 * USA
24 *
25 * Initial developer(s): The ProActive Team
26 * http://www.inria.fr/oasis/ProActive/contacts.html
27 * Contributor(s):
28 *
29 * ################################################################
30 */

31 package org.objectweb.proactive.examples.readers;
32
33 public class Reader implements org.objectweb.proactive.RunActive {
34
35   private ReaderDisplay display;
36   private ReaderWriter rw;
37   private boolean done;
38   private boolean autopilot;
39   private boolean reading;
40   private int id;
41
42
43   /**
44    * The no args constructor as commanded by PaPdc
45    */

46   public Reader() {
47   }
48
49
50   /**
51    * The real constructor
52    */

53   public Reader(ReaderDisplay display, ReaderWriter rw, int id) {
54     this.display = display;
55     this.rw = rw;
56     this.id = id;
57     done = false;
58     autopilot = true;
59     reading = false;
60   }
61
62
63   public void stopIt() {
64     done = true;
65   }
66
67
68   private void startRead() {
69     reading = true;
70     display.setWait(id, true);
71     rw.startRead();
72     display.setRead(id, true);
73   }
74
75
76   private void endRead() {
77     reading = false;
78     rw.endRead();
79     display.setRead(id, false);
80   }
81
82
83   /**
84    * The live method.
85    * @param body the body of the Active object
86    */

87   public void runActivity(org.objectweb.proactive.Body body) {
88     org.objectweb.proactive.Service service = new org.objectweb.proactive.Service(body);
89     while (!done) {
90       service.serveOldest();
91       // Autopilot mode
92
if (reading)
93         endRead();
94       else startRead();
95       try {
96         Thread.sleep((long)700 + (long)(Math.random() * 1500));
97       } catch (InterruptedException JavaDoc e) {
98       }
99     }
100   }
101 }
102
Popular Tags