diff --git a/.github/actions/install-rti/install.sh b/.github/actions/install-rti/install.sh index f3560f0529..ed134f4426 100755 --- a/.github/actions/install-rti/install.sh +++ b/.github/actions/install-rti/install.sh @@ -1,5 +1,6 @@ #!/bin/bash cd core/src/main/resources/lib/c/reactor-c/core/federated/RTI +docker build -t lflang/rti:rti -f rti.Dockerfile ../../../core/ mkdir build cd build if [[ "$OSTYPE" == "darwin"* ]]; then @@ -7,4 +8,4 @@ if [[ "$OSTYPE" == "darwin"* ]]; then fi cmake -DAUTH=ON ../ make -sudo make install +sudo make install \ No newline at end of file diff --git a/core/src/main/java/org/lflang/federated/launcher/FedLauncherGenerator.java b/core/src/main/java/org/lflang/federated/launcher/FedLauncherGenerator.java index ad8743a7c3..0666c473ee 100644 --- a/core/src/main/java/org/lflang/federated/launcher/FedLauncherGenerator.java +++ b/core/src/main/java/org/lflang/federated/launcher/FedLauncherGenerator.java @@ -40,6 +40,7 @@ import org.lflang.target.property.AuthProperty; import org.lflang.target.property.ClockSyncModeProperty; import org.lflang.target.property.ClockSyncOptionsProperty; +import org.lflang.target.property.NDTProperty; import org.lflang.target.property.TracingProperty; import org.lflang.target.property.type.ClockSyncModeType.ClockSyncMode; @@ -339,6 +340,9 @@ private String getRtiCommand(List federates, boolean isRemote) if (targetConfig.getOrDefault(AuthProperty.INSTANCE)) { commands.add(" -a \\"); } + if (targetConfig.getOrDefault(NDTProperty.INSTANCE)) { + commands.add(" --ndt \\"); + } if (targetConfig.getOrDefault(TracingProperty.INSTANCE).isEnabled()) { commands.add(" -t \\"); } diff --git a/core/src/main/java/org/lflang/target/Target.java b/core/src/main/java/org/lflang/target/Target.java index a01b863303..2ec761b7d1 100644 --- a/core/src/main/java/org/lflang/target/Target.java +++ b/core/src/main/java/org/lflang/target/Target.java @@ -45,6 +45,7 @@ import org.lflang.target.property.ExternalRuntimePathProperty; import org.lflang.target.property.FilesProperty; import org.lflang.target.property.KeepaliveProperty; +import org.lflang.target.property.NDTProperty; import org.lflang.target.property.NoRuntimeValidationProperty; import org.lflang.target.property.NoSourceMappingProperty; import org.lflang.target.property.PlatformProperty; @@ -599,6 +600,7 @@ public void initialize(TargetConfig config) { DockerProperty.INSTANCE, FilesProperty.INSTANCE, KeepaliveProperty.INSTANCE, + NDTProperty.INSTANCE, NoSourceMappingProperty.INSTANCE, PlatformProperty.INSTANCE, ProtobufsProperty.INSTANCE, @@ -633,6 +635,7 @@ public void initialize(TargetConfig config) { DockerProperty.INSTANCE, FilesProperty.INSTANCE, KeepaliveProperty.INSTANCE, + NDTProperty.INSTANCE, NoSourceMappingProperty.INSTANCE, ProtobufsProperty.INSTANCE, SchedulerProperty.INSTANCE, diff --git a/core/src/main/java/org/lflang/target/property/NDTProperty.java b/core/src/main/java/org/lflang/target/property/NDTProperty.java new file mode 100644 index 0000000000..6d6619595c --- /dev/null +++ b/core/src/main/java/org/lflang/target/property/NDTProperty.java @@ -0,0 +1,25 @@ +package org.lflang.target.property; + +/** + * If true, the RTI will send NDT messages to federates to reduce the number of messages. + * The default is false. + */ +public final class NDTProperty extends BooleanProperty { + + /** Singleton target property instance. */ + public static final NDTProperty INSTANCE = new NDTProperty(); + + private NDTProperty() { + super(); + } + + @Override + public Boolean initialValue() { + return true; + } + + @Override + public String name() { + return "ndt"; + } +} diff --git a/core/src/main/resources/lib/c/reactor-c b/core/src/main/resources/lib/c/reactor-c index 89aa9b8ef8..f4e531a0ed 160000 --- a/core/src/main/resources/lib/c/reactor-c +++ b/core/src/main/resources/lib/c/reactor-c @@ -1 +1 @@ -Subproject commit 89aa9b8ef8642ab105f58915432cae8f462aaf38 +Subproject commit f4e531a0edffecbc78967a8be98535403e2b64e3