/// <summary> /// Sends the given <see cref="ModelAction"/> output. /// </summary> public void SendModelOutput(ModelAction modelOutput) { lock (locker) { // Pre-filter incompatible types. if (modelOutput is null) { throw new ArgumentNullException(nameof(modelOutput)); } if (!ModelOutputs.Contains(modelOutput.GetType())) { return; } Log.Debug(this, nameof(SendModelOutput) + ": " + modelOutput); string serialized = modelOutput.Serialize(); TorXakisAction output = TorXakisAction.FromOutput(TorXakisModel.OutputChannel, serialized); Connector.SendOutput(output); } }