/// <inheritdoc /> public void DirectTo <T>(ITerminalResource <T> resource, IEnumerable <Condition <T> > assignments = null) where T : class, ITerminal { if (Status != WebSocketStatus.Open) { throw new InvalidOperationException($"Unable to send WebSocket with status '{Status}' to terminal '{resource.Name}'"); } if (resource == null) { throw new ArgumentNullException(nameof(resource)); } var _resource = (Meta.Internal.TerminalResource <T>)resource; var newTerminal = _resource.MakeTerminal(assignments); Context.WebSocket.ConnectTo(newTerminal, _resource); newTerminal.Open(); }
/// <inheritdoc /> public MissingConstructorParameter(ITerminalResource terminal, string[] missingParameters) : base(ErrorCodes.MissingConstructorParameter, $"Missing parameter(s): {string.Join(", ", missingParameters)} in constructor call to {terminal.Name}") { }
public async Task DirectTo <T>(ITerminalResource <T> t, ICollection <Condition <T> > a = null) where T : Terminal { await WaitTask.ConfigureAwait(false); await WebSocket.DirectTo(t, a).ConfigureAwait(false); }
internal void ConnectTo(ITerminal terminal, ITerminalResource resource) { ReleaseTerminal(); TerminalConnection = new WebSocketConnection(this, terminal, resource); }
internal BadConditionOperator(ITerminalResource terminal, Operator found) : base(ErrorCodes.InvalidConditionOperator, $"Invalid operator '{found.Common}' in condition to terminal resource '{terminal.Name}'. Only \'=\' is valid in terminal conditions.") { }
public void DirectTo <T>(ITerminalResource <T> t, IEnumerable <Condition <T> > a = null) where T : class, ITerminal => ActionQueue.Enqueue(() => ToQueueFor.DirectTo(t, a));