ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/conient/uk/org/iscream/cms/conient/DataReader.java
(Generate patch)

Comparing projects/cms/source/conient/uk/org/iscream/cms/conient/DataReader.java (file contents):
Revision 1.2 by ajm, Sun Jan 14 23:14:35 2001 UTC vs.
Revision 1.15 by tdb, Sat May 18 18:15:56 2002 UTC

# Line 1 | Line 1
1 + /*
2 + * i-scream central monitoring system
3 + * Copyright (C) 2000-2002 i-scream
4 + *
5 + * This program is free software; you can redistribute it and/or
6 + * modify it under the terms of the GNU General Public License
7 + * as published by the Free Software Foundation; either version 2
8 + * of the License, or (at your option) any later version.
9 + *
10 + * This program is distributed in the hope that it will be useful,
11 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 + * GNU General Public License for more details.
14 + *
15 + * You should have received a copy of the GNU General Public License
16 + * along with this program; if not, write to the Free Software
17 + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
18 + */
19 +
20   //---PACKAGE DECLARATION---
21 + package uk.org.iscream.cms.conient;
22  
23   //---IMPORTS---
24   import java.io.*;
25 + import uk.org.iscream.cms.server.util.*;
26  
27   /**
28 < * Reads in bound data and presents it as it comes
29 < * in for anything that wants it.
28 > * The class reads in data from a BufferedReader,
29 > * it then converts it to an XMLPacket and adds
30 > * it to its Queue for anything that wants it.
31   *
32   * @author  $Author$
33   * @version $Id$
# Line 23 | Line 45 | public class DataReader extends Thread {
45  
46   //---CONSTRUCTORS---
47  
48 <    public DataReader(BufferedReader inBound) {
48 >    /**
49 >     * Constructs a new data reader, giving it its BufferedReader
50 >     * and Queue.
51 >     *
52 >     * @param inBound the BufferedReader this class should use
53 >     * @param dataQueue the queue new data should be placed on
54 >     * @param ch the connection handler in use
55 >     */
56 >    public DataReader(BufferedReader inBound, Queue dataQueue, ConnectionHandler ch) {
57 >        _ch = ch;
58          _inBound = inBound;
59 +        _dataQueue = dataQueue;
60      }
61  
62   //---PUBLIC METHODS---
63  
64 +    /**
65 +     * This thread reads data from the BufferedReader.
66 +     * It does this until either there is a problem
67 +     * or it is told to stop.
68 +     *
69 +     * If there is a problem it calls shutdownLinks in the
70 +     * ConnectionHandler.
71 +     *
72 +     * Any data it reads it converts to XML and then
73 +     * adds to its queue.
74 +     */
75      public void run() {
76 <        boolean running = true;
77 <        while (running){
78 <            try {
79 <                
80 <                _xml = _inBound.readLine();
81 <                synchronized (this) {
82 <                    notifyAll();
76 >        try {
77 >            String line;
78 >            
79 >            // continue until we are told to stop
80 >            while (_running) {
81 >                line = _inBound.readLine();
82 >                if (line == null) {
83 >                    throw new IOException("unexpected loss of connection to server");
84                  }
85 +                _dataQueue.add(line);
86              }
87 <            catch (IOException e) {
88 <                System.err.println("This DataReader thread has been shut down as an exception occured: "+e);
89 <                running = false;
90 <                return;
91 <            }
87 >        
88 >            // close the BufferedReader
89 >            _inBound.close();
90 >        
91 >        } catch (IOException e) {
92 >            Conient.addMessage("WARNING{data reader}: inbound data stopped - "+e);
93 >            _running = false;
94 >            // tell the ConnectionHandler to shut down the links
95 >            _ch.shutdownDataLink();
96          }
97      }
98  
99 +    /**
100 +     * This method allows other classes
101 +     * to shutdown this data reader.
102 +     */
103 +    public void shutdown() {
104 +        _running = false;
105 +    }
106 +
107   //---PRIVATE METHODS---
108  
109   //---ACCESSOR/MUTATOR METHODS---
110  
54    public String getXML() {
55        return _xml;
56    }
57
111   //---ATTRIBUTES---
112  
113 <    BufferedReader _inBound;
114 <    String _xml;
115 <
113 >    /**
114 >     * The reader we are reading from.
115 >     */
116 >    private BufferedReader _inBound;
117 >    
118 >    /**
119 >     * The Queue we place data on.
120 >     */
121 >    private Queue _dataQueue;
122 >    
123 >    /**
124 >     * The state of this thread.
125 >     */
126 >    private boolean _running = true;
127 >    
128 >    /**
129 >     * A reference to the ConnectionHandler in use
130 >     */
131 >    private ConnectionHandler _ch;
132 >    
133   //---STATIC ATTRIBUTES---
134  
135   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines