package W;

import bH.D;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

public class OutputStreamExtension extends OutputStream {
  OutputStream a;
  
  final List b = Collections.synchronizedList(new LinkedList());
  
  int c = 500;
  
  IOException d = null;
  
  au e = null;
  
  public OutputStreamExtension(OutputStream paramOutputStream) {
    this.a = paramOutputStream;
  }
  
  private void b() {
    if (this.e == null) {
      this.e = new au(this);
      this.e.start();
    } 
    byte b = 0;
    while (this.b.size() >= this.c) {
      try {
        Thread.sleep(100L);
        D.c("Queue full, blocking to shrink.");
      } catch (InterruptedException interruptedException) {
        Logger.getLogger(as.class.getName()).log(Level.SEVERE, (String)null, interruptedException);
      } 
      if (b++ > 5)
        throw new IOException("Slow Write Speed causing queue over flow. "); 
    } 
  }
  
  public synchronized void write(int paramInt) {
    try {
      b();
      this.b.add(new at(this, paramInt));
    } catch (IOException iOException) {
      Logger.getLogger(as.class.getName()).log(Level.SEVERE, (String)null, iOException);
      throw new IOException("Slow I/O caused full queue and Iterruption adding write.");
    } 
    this.e.a();
  }
  
  public synchronized void write(byte[] paramArrayOfbyte) {
    try {
      b();
      synchronized (this.b) {
        this.b.add(new at(this, paramArrayOfbyte));
      } 
    } catch (IOException iOException) {
      Logger.getLogger(as.class.getName()).log(Level.SEVERE, (String)null, iOException);
      throw new IOException("Slow I/O caused full queue and Iterruption adding write.");
    } 
  }
  
  public synchronized void write(byte[] paramArrayOfbyte, int paramInt1, int paramInt2) {
    try {
      b();
      if (paramArrayOfbyte.length != paramInt2) {
        byte[] arrayOfByte = new byte[paramInt2];
        System.arraycopy(paramArrayOfbyte, paramInt1, arrayOfByte, 0, paramInt2);
        paramArrayOfbyte = arrayOfByte;
      } 
      this.b.add(new at(this, paramArrayOfbyte));
    } catch (IOException iOException) {
      Logger.getLogger(as.class.getName()).log(Level.SEVERE, (String)null, iOException);
      throw new IOException("Slow I/O caused full queue and Iterruption adding write.");
    } 
  }
  
  public synchronized void flush() {
    b();
    this.e.a();
  }
  
  public synchronized void a() {
    byte b = 0;
    while (this.b.size() > 0) {
      D.c("QueuingOutputStream: Flushing Queue, size=" + this.b.size());
      this.e.a();
      try {
        Thread.sleep(50L);
      } catch (InterruptedException interruptedException) {
        Logger.getLogger(as.class.getName()).log(Level.SEVERE, (String)null, interruptedException);
      } 
      if (b++ > 100)
        throw new IOException("Unable to flush OutputStream queu in a reasonable amount of time."); 
    } 
    this.a.flush();
  }
  
  public void close() {
    try {
      a();
    } catch (IOException iOException) {
      iOException.printStackTrace();
    } 
    this.e.a(false);
    this.a.close();
  }
}


/* Location:              /home/rewrich/Downloads/TunerStudioMS/TunerStudioMS/!/W/as.class
 * Java compiler version: 8 (52.0)
 * JD-Core Version:       1.1.3
 */