| 1 package com.quikj.server.framework; 2 3 import java.io.*; 4 5 public class AceInputStream 6 { 7 public AceInputStream(InputStream stream) 8 { 9 System.out.println("New AceInputStream()"); 10 reader = new InputStreamReader(stream); 11 } 12 13 public int read(char[] b, int offset, int length) 14 throws IOException 15 { 16 System.out.println ("In read() : " + buffer.length()); 17 if (buffer.length() > 0) { 19 char[] buf = buffer.toString().toCharArray(); 21 22 int i = 0; 23 for (i = 0; (i < buf.length) && (i < length); i++) 24 { 25 b[offset+i] = buf[i]; 26 } 27 28 buffer = new StringBuffer (); 29 if (i < buf.length) { 31 String remaining = new String (buf, i, buf.length - i); 32 buffer.append(remaining); 33 } 35 36 System.out.println ("read returning --" + new String (buf, offset, i) 37 + "-- Remaning in buffer --" 38 + "--"); 40 return i; } 42 else { 44 char[] buf = new char[1000]; 45 int rcvd = reader.read(buf, 0, buf.length); 46 47 if (rcvd >= 0) 48 { 49 int i = 0; 50 for (i = 0; (i < rcvd) && (i < length); i++) 51 { 52 b[offset+i] = buf[i]; 53 } 54 55 if (i < rcvd) { 57 String remaining = new String (buf, i, rcvd - i); 58 buffer = new StringBuffer (remaining); 59 } 61 62 System.out.println ("read returning --" + new String (buf, offset, i) 63 + "-- Remaning in buffer --" 64 + "--"); 66 return i; 67 } 68 else 69 { 70 streamClosed = true; 71 return rcvd; 72 } 73 } 74 } 75 76 public int read(char[] b) 77 throws IOException 78 { 79 return read(b, 0, b.length); 80 } 81 82 public String readLine() 83 throws IOException 84 { 85 System.out.println ("In readLine() : " + buffer.length()); 86 87 if (buffer.length() > 0) { 89 String to_send = handleReadlineBuffer(); 90 91 if (to_send != null) { 93 return to_send; } 95 else { 97 if (streamClosed == true) 98 { 99 to_send = buffer.toString(); 101 102 buffer = new StringBuffer (); 103 return to_send; 104 } 105 } 106 } 107 else if (streamClosed == true) 108 { 109 return null; 110 } 111 112 char[] buf = new char[1000]; 114 115 while (true) 116 { 117 int length_read = reader.read(buf, 0, buf.length); 118 if (length_read < 0) { 120 streamClosed = true; 121 if (buffer.length() > 0) { 123 String to_send = handleReadlineBuffer(); 124 if (to_send != null) { 126 return to_send; } 128 else 129 { 130 to_send = buffer.toString(); 132 133 buffer = new StringBuffer (); 134 return to_send; 135 } 136 } 137 else 138 { 139 return null; 140 } 141 } 142 else 143 { 144 buffer.append(buf, 0, length_read); 145 String to_send = handleReadlineBuffer(); 146 if (to_send != null) { 148 return to_send; } 150 } 151 } 152 } 153 154 private String handleReadlineBuffer() 155 { 156 char[] buf = buffer.toString().toCharArray(); 157 int length = buf.length; 158 159 boolean cr_rcvd = false; 160 for (int i = 0; i < length; i++) 161 { 162 if (buf[i] == '\015') 163 { 164 cr_rcvd = true; 165 } 166 else if (buf[i] == '\012') 167 { 168 if (cr_rcvd == true) 169 { 170 172 i++; 173 if (i < length) 175 { 176 String remaining = new String (buf, i, length - i); 177 buffer = new StringBuffer (remaining); 178 } 180 else 181 { 182 buffer = new StringBuffer (); 183 } 184 185 String to_send = new String (buf, 0, i - 2); 186 System.out.println ("handlereadlinebuffer() returning --" 187 + to_send + "-- Still in buffer --" 188 + "--"); 190 return to_send; 191 } 192 else 193 { 194 cr_rcvd = false; 195 } 196 } 197 else 198 { 199 cr_rcvd = false; 200 } 201 } 202 203 return null; 204 } 205 206 public boolean available() 207 { 208 boolean ret = false; 209 210 if (buffer.length() > 0) 211 { 212 ret = true; 213 } 214 215 return ret; 216 } 217 218 public int availableBufferSize() 219 { 220 return buffer.length(); 221 } 222 223 private InputStreamReader reader; 224 private StringBuffer buffer = new StringBuffer (); 225 private boolean streamClosed = false; 226 } 227 228 229 230 231 232 233 234 235 236 | Popular Tags |