File |
Line |
org\sim0mq\demo\mm1\MM1FederationManager.java |
414 |
org\sim0mq\demo\mm1\MM1FederationManager20.java |
38 |
{
if (args.length < 4)
{
System.err.println(
"Use as FederationManager federationName federationManagerPortNumber federateStarterPortNumber local/sk-3");
System.exit(-1);
}
String federationName = args[0];
String fmsPort = args[1];
int fmPort = 0;
try
{
fmPort = Integer.parseInt(fmsPort);
}
catch (NumberFormatException nfe)
{
System.err.println("Use as FederationManager fedNname fmPort fsPort local/sk-3, where fmPort is a number");
System.exit(-1);
}
if (fmPort == 0 || fmPort > 65535)
{
System.err.println("fmPort should be between 1 and 65535");
System.exit(-1);
}
String fssPort = args[2];
int fsPort = 0;
try
{
fsPort = Integer.parseInt(fssPort);
}
catch (NumberFormatException nfe)
{
System.err.println("Use as FederationManager fedNname fmPort fsPort local/sk3, where fsPort is a number");
System.exit(-1);
}
if (fsPort == 0 || fsPort > 65535)
{
System.err.println("fsPort should be between 1 and 65535");
System.exit(-1);
}
String localSk3 = args[3];
if (!localSk3.equals("local") && !localSk3.equals("sk-3"))
{
System.err.println("Use as FederationManager fedNname fmPort fsPort local/sk3, where last arg is local/sk-3");
System.exit(-1);
}
new MM1FederationManager(federationName, fmPort, fsPort, localSk3); |
File |
Line |
org\sim0mq\demo\mm1\MM1FederationManager.java |
291 |
org\sim0mq\demo\mm1\MM1FederationManager20.java |
450 |
&& ((Long) replyMessage[8]).longValue() == this.messageCount)
{
if (replyMessage[9].toString().equals("ended"))
{
this.state = ModelState.SIMULATORENDED;
}
else
{
// wait a second
try
{
Thread.sleep(1000);
}
catch (InterruptedException ie)
{
// ignore
}
}
}
else
{
this.state = ModelState.ERROR;
System.err.println("Simulation start error -- status = " + replyMessage[9]);
System.err.println("Error message = " + replyMessage[10]);
}
}
}
/**
* Request statistics with message FM.6.
* @param federationName the name of the federation
* @throws Sim0MQException on error
* @throws SerializationException on serialization problem
*/
private void requestStatistics(final String federationName) throws Sim0MQException, SerializationException
{
List<String> stats = new ArrayList<>();
stats.add("dN.average");
stats.add("qN.max");
stats.add("uN.average");
for (String statName : stats)
{
if (!this.state.isError())
{
byte[] fm6Message;
fm6Message = SimulationMessage.encodeUTF8(federationName, "FM", "MM1.1", "FM.6", ++this.messageCount, |
File |
Line |
org\sim0mq\demo\mm1\MM1FederationManager.java |
349 |
org\sim0mq\demo\mm1\MM1FederationManager20.java |
509 |
System.out.println("Received statistic for " + statName + " = " + replyMessage[10].toString());
}
else
{
this.state = ModelState.ERROR;
System.err.println(
"Statistics Error: Stat variable expected = " + statName + ", got: " + replyMessage[8]);
}
}
else if (replyMessage[4].toString().equals("MC.4"))
{
this.state = ModelState.ERROR;
System.err.println("Statistics Error: Stat variable = " + replyMessage[8]);
System.err.println("Error message = " + replyMessage[9]);
}
else
{
this.state = ModelState.ERROR;
System.err.println("Statistics Error: Received unknown message as reply to FM6: " + replyMessage[4]);
}
}
}
if (!this.state.isError())
{
this.state = ModelState.STATISTICSGATHERED;
}
}
/**
* Send the FM.8 message to the FederateStarter to kill the MM1 model.
* @param federationName the name of the federation
* @throws Sim0MQException on error
* @throws SerializationException on serialization problem
*/
private void killFederate(final String federationName) throws Sim0MQException, SerializationException
{
byte[] fm8Message;
fm8Message = SimulationMessage.encodeUTF8(federationName, "FM", "FS", "FM.8", ++this.messageCount, MessageStatus.NEW, |
File |
Line |
org\sim0mq\demo\mm1\MM1FederationManager.java |
61 |
org\sim0mq\demo\mm1\MM1FederationManager20.java |
211 |
this.fsSocket.setIdentity(UUID.randomUUID().toString().getBytes());
this.state = ModelState.NOT_STARTED;
boolean ready = false;
while (!ready)
{
System.out.println(this.state);
switch (this.state)
{
case NOT_STARTED:
startModel(federationName, fsPort, localSk3);
break;
case STARTED:
sendSimRunControl(federationName);
break;
case RUNCONTROL:
setParameters(federationName);
break;
case PARAMETERS:
sendSimStart(federationName);
break;
case SIMULATORSTARTED:
waitForSimEnded(federationName);
break;
case SIMULATORENDED:
requestStatistics(federationName);
break;
case STATISTICSGATHERED:
killFederate(federationName);
ready = true;
break;
case ERROR:
killFederate(federationName);
ready = true;
break;
default:
break;
}
}
this.modelSocket.close(); |
File |
Line |
org\sim0mq\demo\mm1\MM1FederationManager.java |
282 |
org\sim0mq\demo\mm1\MM1FederationManager20.java |
441 |
SimulationMessage.encodeUTF8(federationName, "FM", "MM1.1", "FM.5", ++this.messageCount, MessageStatus.NEW);
this.modelSocket.send(fm5Message);
byte[] reply = this.modelSocket.recv(0);
Object[] replyMessage = SimulationMessage.decode(reply);
System.out.println("Received\n" + SimulationMessage.print(replyMessage));
if (replyMessage[4].toString().equals("MC.1") && !replyMessage[9].toString().equals("error")
&& !replyMessage[9].toString().equals("started")
&& ((Long) replyMessage[8]).longValue() == this.messageCount) |
File |
Line |
org\sim0mq\demo\mm1\MM1FederationManager.java |
337 |
org\sim0mq\demo\mm1\MM1FederationManager20.java |
497 |
fm6Message = SimulationMessage.encodeUTF8(federationName, "FM", "MM1.1", "FM.6", ++this.messageCount,
MessageStatus.NEW, statName);
this.modelSocket.send(fm6Message);
byte[] reply = this.modelSocket.recv(0);
Object[] replyMessage = SimulationMessage.decode(reply);
System.out.println("Received\n" + SimulationMessage.print(replyMessage));
if (replyMessage[4].toString().equals("MC.3"))
{
if (replyMessage[9].toString().equals(statName))
{
System.out.println("Received statistic for " + statName + " = " + replyMessage[10].toString()); |
File |
Line |
org\sim0mq\demo\mm1\MM1FederationManager.java |
175 |
org\sim0mq\demo\mm1\MM1FederationManager20.java |
330 |
fm2Message = SimulationMessage.encodeUTF8(federationName, "FM", "MM1.1", "FM.2", ++this.messageCount, MessageStatus.NEW,
100.0, 0.0, 0.0, Double.POSITIVE_INFINITY, 1, 0);
this.modelSocket.send(fm2Message);
byte[] reply = this.modelSocket.recv(0);
Object[] replyMessage = SimulationMessage.decode(reply);
System.out.println("Received\n" + SimulationMessage.print(replyMessage));
if (replyMessage[4].toString().equals("MC.2") && (boolean) replyMessage[9]
&& ((Long) replyMessage[8]).longValue() == this.messageCount) |
File |
Line |
org\sim0mq\demo\mm1\MM1FederationManager.java |
141 |
org\sim0mq\demo\mm1\MM1FederationManager20.java |
294 |
"e:/sim0mq/MM1/out.txt", "e:/sim0mq/MM1/err.txt", false, false, false);
this.fsSocket.connect("tcp://127.0.0.1:" + fsPort);
}
this.fsSocket.send(fm1Message);
byte[] reply = this.fsSocket.recv(0);
Object[] replyMessage = SimulationMessage.decode(reply);
System.out.println("Received\n" + SimulationMessage.print(replyMessage));
if (replyMessage[4].toString().equals("FS.2") && replyMessage[9].toString().equals("started")
&& replyMessage[8].toString().equals("MM1.1")) |