Process() public method

public Process ( int inputIndex, object inputData, System.Guid correlationId, Action continueOnJoin ) : void
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 }));
        }
Beispiel #2
0
        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 }));
        }