46 lines
1.3 KiB
Java
46 lines
1.3 KiB
Java
import java.util.LinkedList;
|
|
|
|
public class P2_Printer{
|
|
|
|
private int[] time = {0}; //Really hacky solution, but seems easier than wrapping in a custom object.
|
|
private char printerMode = 'M';
|
|
|
|
private LinkedList<P2_PrinterHead> printerHeadsWaiting = new LinkedList<P2_PrinterHead>();
|
|
|
|
private P2_PrinterHead p1 = new P2_PrinterHead(1);
|
|
private P2_PrinterHead p2 = new P2_PrinterHead(2);
|
|
private P2_PrinterHead p3 = new P2_PrinterHead(3);
|
|
|
|
public P2_Printer()
|
|
{
|
|
//Nothing to set up.
|
|
printerHeadsWaiting.add(p1);
|
|
printerHeadsWaiting.add(p2);
|
|
printerHeadsWaiting.add(p3);
|
|
}
|
|
|
|
public synchronized P2_PrinterHead requestHead()
|
|
{
|
|
while(printerHeadsWaiting.size()==0)
|
|
{
|
|
//If there isn't a head available, pause for a moment and check again.
|
|
try
|
|
{
|
|
Thread.sleep(0);
|
|
}
|
|
catch(Exception e)
|
|
{
|
|
//Don't caare
|
|
}
|
|
}
|
|
return printerHeadsWaiting.removeFirst();
|
|
}
|
|
|
|
public boolean requestPrint(P2_Jobs jobInput, P2_PrinterHead printHeadToUse)
|
|
{
|
|
printHeadToUse.print(jobInput, time);
|
|
printerHeadsWaiting.add(printHeadToUse);
|
|
return true;
|
|
}
|
|
|
|
} |