package uk.co.mmscomputing.device.capi; import java.io.*; import javax.swing.*; import uk.co.mmscomputing.device.fax.*; import uk.co.mmscomputing.device.capi.protocol.*; public class CapiFaxSender extends FaxSender{ public CapiFaxSender(){ } public void send()throws IOException{ md.setState(faxRinging); fireListenerUpdate(md.STATE); String header = md.getHeader()+"-"+md.getLocalNo(); String rno = md.getRemoteNo(); String lno = md.getLocalNo(); int time = md.getTimeOut(); File file = new File(md.getFile()); // long filelen = file.length(); // System.out.println("\n\nFax filelen = "+filelen); InputStream in = new FileInputStream(file); if(md.progressmonitor){in=new ProgressMonitorInputStream(null,"Fax: sending ... to "+rno+"\n"+md.getFile(),in);} in=new BufferedInputStream(in); // System.out.println("send fax rno="+rno+" file="+file); try{ CapiSystem capisystem = CapiSystem.getSystem(); // use capi system CapiChannel channel = // try to connect capisystem.getCaller().faxconnect(rno,md.getBlocker(),time*1000,lno,header); md.setState(faxConnected);fireListenerUpdate(md.STATE); md.setInfo("Connected ..."); fireListenerUpdate(md.INFO); try{ int count; byte[] buffer = new byte[CapiConstants.DefaultB3DataBlockSize]; CapiOutputStream out = channel.getOutputStream(); channel.getInputStream().close(); // waste input data while((count=in.read(buffer))!=-1){ out.write(buffer,0,count); } out.close(); }catch(Exception e){ System.out.println("9\b"+getClass().getName()+".send:\n\t"+e); e.printStackTrace(); }finally{ channel.close(); // initiate disconnect } }catch(Exception e){ System.out.println("9\b"+getClass().getName()+".send:\n\tCould not send fax\n\t"+e); e.printStackTrace(); } in.close(); md.setState(faxDisconnected);fireListenerUpdate(md.STATE); } public boolean isAPIInstalled(){return true;/*capi.isInstalled();*/} static public FaxSender getDevice(){return new CapiFaxSender();} }