public Process ( int inputIndex, object inputData, System.Guid correlationId, Action | ||
inputIndex | int | |
inputData | object | |
correlationId | System.Guid | |
continueOnJoin | Action | |
return | void |
public void Multiple_correlationIds() { var sut = new AutoResetJoin(2); List<object> result = null; Action<List<object>> onJoin = _ => result = _; var corrId1 = Guid.NewGuid(); var corrId2 = Guid.NewGuid(); sut.Process(0, "a", corrId1, onJoin); sut.Process(0, "x", corrId2, onJoin); sut.Process(1, 1, corrId1, onJoin); Assert.That(new object[] { "a", 1 }, Is.EqualTo(result)); sut.Process(1, 10, corrId2, onJoin); Assert.That(new object[] { "x", 10 }, Is.EqualTo(result)); sut.Process(0, "b", corrId1, onJoin); sut.Process(1, 11, corrId2, onJoin); sut.Process(1, 2, corrId1, onJoin); Assert.That(result, Is.EqualTo(new object[] { "b", 2 })); sut.Process(0, "y", corrId2, onJoin); Assert.That(result, Is.EqualTo(new object[] { "y", 11 })); }
public AutoResetJoinBase(string name, int numberOfInputs, Func <List <object>, object> createJoinTuple) { if (numberOfInputs > 10) { throw new ArgumentException("Maximum of 10 input ports exceeded!"); } _name = name; _arj = new AutoResetJoin(numberOfInputs); _implementation = (input, continueWith, _) => { if (!Regex.Match(input.Port.Name, "^in[0-9]$", RegexOptions.IgnoreCase).Success) { throw new ArgumentException("AutoResetJoin: Invalid port name! Use 'in0'..'in9'."); } var inputIndex = int.Parse(input.Port.Name.Substring(input.Port.Name.Length - 1)); _arj.Process(inputIndex, input.Data, input.CorrelationId, joinList => continueWith(new Message(_name, createJoinTuple(joinList), input.CorrelationId))); }; }
public void Test_base_join() { var sut = new AutoResetJoin(2); List<object> result = null; Action<List<object>> onJoin = _ => result = _; sut.Process(0, "a", Guid.Empty, onJoin); sut.Process(1, 1, Guid.Empty, onJoin); Assert.That(new object[]{"a", 1}, Is.EqualTo(result)); sut.Process(0, "b", Guid.Empty, onJoin); sut.Process(0, "c", Guid.Empty, onJoin); sut.Process(1, 2, Guid.Empty, onJoin); Assert.That(result, Is.EqualTo(new object[] { "b", 2 })); sut.Process(1, 3, Guid.Empty, onJoin); Assert.That(result, Is.EqualTo(new object[] { "c", 3 })); }