/// <summary><see cref="TorXakisConnector.InputReceived"/></summary> private void Connector_InputReceived(TorXakisAction action) { if (action.Type == ActionType.Input && action.Channel == TorXakisModel.InputChannel) { ModelAction input = ModelAction.Deserialize(action.Data); HandleModelInput(input); } }
/// <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); } }