Your browser does not support JavaScript and this site utilizes JavaScript to build content and provide links to additional information. You should either enable JavaScript in your browser settings or use a browser that supports JavaScript in order to take full advantage of this site.
1 32 package com.imagero.uio.buffer; 33 34 import com.imagero.uio.io.IOutils; 35 36 import java.io.IOException; 37 import java.io.OutputStream; 38 import java.util.Enumeration; 39 40 43 public class OutputStreamBufferManager extends AbstractBufferManager implements MutableBufferManager { 44 45 OutputStream out; 46 47 48 public OutputStreamBufferManager(OutputStream out) { 49 this.out = out; 50 } 51 52 public byte[] getData(int i) throws IOException { 53 return new byte[0]; 54 } 55 56 public int getDataLength(int i) { 57 return bufferSize; 58 } 59 60 public int getIndex(long pos) { 61 return (int) (pos / bufferSize); 62 } 63 64 public long getLength() { 65 return 0; 66 } 67 68 public void close() { 69 try { 70 flush(); 71 } 72 catch (IOException ex) { 73 ex.printStackTrace(); 74 } 75 IOutils.closeStream(out); 76 } 77 78 public long getDataStart(int i) { 79 return bufferSize * i; 80 } 81 82 public void clear() { 83 try { 84 flush(); 85 } 86 catch (IOException ex) { 87 ex.printStackTrace(); 88 } 89 accessManager.clear(); 90 } 91 92 public void setMaxCache(int max) { 93 accessManager.setMaxBufferCount(max); 94 } 95 96 long lastClearPosition; 97 98 public void clear(long start, long end) throws IOException { 99 int bs = getStart(start); 100 int be = getEnd(end); 101 long s = getDataStart(bs); 102 long e = getDataStart(be) + getDataLength(be); 103 if (s > lastClearPosition) { 104 throw new IOException("Can't clear from " + s + " (possible start is: " + lastClearPosition + ")"); 105 } 106 clearImpl(bs, be); 107 lastClearPosition = e; 108 } 109 110 public void flush() throws IOException { 111 Enumeration enum = accessManager.keys(); 112 while (enum.hasMoreElements()) { 113 Buffer b = accessManager.get(enum.nextElement()); 114 MutableBuffer buffer = (MutableBuffer) b; 115 buffer.flush(); 116 } 117 } 118 } 119
| Popular Tags
|