COMP2240-Assignment2/Code/P2_Printer.java
2021-10-01 11:14:04 +10:00

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;
}
}