// generated by machine

#include "SidStuff.hh" 
#include "LogicalProcess.hh"
#include "CommMgrInterface.hh"
#include "SimulationTime.hh" 

const VTime LogicalProcess::SIMUNTIL = PINFINITY;

int main(int argc, char *argv[]) {
  int id=0;
 physicalCommInit( &argc, &argv );
 id = physicalCommGetId();
#ifdef MESSAGE_AGGREGATION
  getMessageManagerParameters(argc, argv);
#endif
  if(id == 0) {
    LogicalProcess lp(10,10,1); // total, local, LPs
    MemSourceObject source0("source0", 5);
    source0.id = 0;
    source0.setDistribution(FIXED,1);
    source0.dest = 1;
    lp.registerObject(&source0);

    JoinObject join1("join1");
    join1.id = 1;
    join1.dest = 2;
    lp.registerObject(&join1);

    QueueObject queue2("queue2");
    queue2.id = 2;
    queue2.serverID = 3;
    lp.registerObject(&queue2);

    ForkObject fork3("fork3");
    fork3.id = 3;
    int outputs3[2] = { 4,6 };
    fork3.setForkDistribution(SPECIAL, 2, outputs3,0.84);
    lp.registerObject(&fork3);

    ServerObject server4("server4");
    server4.id = 4;
    server4.setServerDistribution(FIXED, 10);
    server4.dest = 5;
    lp.registerObject(&server4);

    JoinObject join5("join5");
    join5.id = 5;
    join5.dest = 0;
    lp.registerObject(&join5);

    JoinObject join6("join6");
    join6.id = 6;
    join6.dest = 7;
    lp.registerObject(&join6);

    QueueObject queue7("queue7");
    queue7.id = 7;
    queue7.serverID = 8;
    lp.registerObject(&queue7);

    ServerObject server8("server8");
    server8.id = 8;
    server8.setServerDistribution(FIXED, 100);
    server8.dest = 9;
    lp.registerObject(&server8);

    MemRouterObject memRouter9("memRouter9");
    memRouter9.id = 9;
    lp.registerObject(&memRouter9);

lp.allRegistered();
lp.simulate();
  }
  return 0;
} // main
