package datastore.bench.flowsimulations.deviceManager; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; import bftsmart.tom.ServiceProxy; import bftsmart.tom.TimeoutException; import datastore.bench.flowsimulations.FlowSimulation; public class WorkloadPerFlow { public final int[][] requests; public final String[] requestDescription; public final String workloadDescription; public final byte[][] msgs ; public WorkloadPerFlow(int[][] val, String[] requestDescription , String workloadDescription){ requests = val; this.requestDescription = requestDescription; this.workloadDescription = workloadDescription; msgs = new byte[requests.length][]; for (int i=0; i < requests.length ; i++){ try{ ByteArrayOutputStream out = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(out); dos.writeInt(requests[i][2]); dos.write(new byte[requests[i][1] -4]); dos.flush(); dos.close(); msgs[i] = out.toByteArray(); }catch(Exception e){ e.printStackTrace(); System.exit(-1); } } } public void run(ServiceProxy proxy) throws TimeoutException { for (int i=0 ; i < requests.length ; i++){ if (isWrite(requests[i])){ proxy.invokeOrdered(msgs[i]); } else{ proxy.invokeUnordered(msgs[i]); } } } private boolean isWrite(int[] is) { return is[0] == FlowSimulation.WRITE_OP; } public int[][] getFlows() { // TODO Auto-generated method stub return requests; } }