/* -------------------------------------------------------- * * Aaron Morris * * CS567 * * Object-Oriented Event-Driven Simulation * * * * Class representing Basic Client Object * * -------------------------------------------------------- */ //package datasend; import java.awt.*; public class Client extends DataHandler { int RequestID = 1; int RequestFreq; int RequestSep; String MessageBody = new String("File#"); // Constructor public Client(String Name,int ID, RandNum r, int RequestFrequency, EventQueue eq,Stats s,int RequestSeparation) { this.RequestID = 100000*ID; // Give each Client Unique Request #'s super.stats = s; super.eventList = eq; super.Name = Name; super.requests = new MessageQueue(); super.randGen = r; super.ID = ID; RequestFreq = RequestFrequency; RequestSep = RequestSeparation; } // Instructions for generating a random Request event public RequestEvent genRequest(int Time) { // Use Float variables for calculations, then cast back to INT RequestEvent newEvent; // Event Object to return double ToArrive; // Time to assign Arrival to double A1, A2; // Temp vars to calculate Arrival Message message; A1 = randGen.genRandom(); A2 = 0.0 - Math.log(A1); ToArrive = (int) ((double) Time + (3 * A2)/RequestFreq)+ RequestSep; // Create new Arrival Event with new ID number message = new Message((int) ToArrive,RequestID,"REQUEST",0, MessageBody + RequestID,0,this); message.setOrigObj(this); newEvent =new RequestEvent("REQUEST",(int) ToArrive,message,this); RequestID++; return newEvent; } public void receive(int time, Message m) { // Update Stats on How Long it took to get Message back stats.report.write("***SUCCESS " + this.Name + " Received Message #" + m.getMsgID() + " Back at Time " + time); stats.report.write(" Message:'" + m.getBody() + "'" + ", Took " + (time-m.getSendTime()) + " Units of Time"); // Update Statistics for Response Time stats.avgResponse.update(time-m.getSendTime()); } }