KickJava   Java API By Example, From Geeks To Geeks.

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


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
34 public class Writer implements org.objectweb.proactive.RunActive {
35
36   private ReaderDisplay display;
37   private ReaderWriter rw;
38   private boolean done;
39   private boolean autopilot;
40   private boolean writing;
41   private int id;
42
43
44   /**
45    * The no args constructor as commanded by PaPdc
46    */

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

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

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