Exemplo n.º 1
0
        private IMessageTree MergeTree()
        {
            var max  = PureCatConstants.MAX_CHILD_NUMBER;
            var tran = new DefaultTransaction("_CatMergeTree", "_CatMergeTree");

            if (!_atomicTress.TryDequeue(out IMessageTree first))
            {
                return(null);
            }

            tran.Status = PureCatConstants.SUCCESS;
            tran.Complete();
            tran.AddChild(first.Message);
            tran.Timestamp = first.Message.Timestamp;

            long lastTimestamp = 0;
            long lastDuration  = 0;

            while (max-- >= 0)
            {
                if (!_atomicTress.TryDequeue(out IMessageTree tree))
                {
                    tran.DurationInMillis = (lastTimestamp - tran.Timestamp + lastDuration);
                    break;
                }
                lastTimestamp = tree.Message.Timestamp;
                var message = tree.Message as DefaultTransaction;
                lastDuration = message?.DurationInMillis ?? 0;
                tran.AddChild(tree.Message);
            }
            first.Message = tran;
            return(first);
        }
Exemplo n.º 2
0
 private void MarkAsNotCompleted(DefaultTransaction transaction)
 {
     IEvent notCompleteEvent = new DefaultEvent("CAT", "BadInstrument") { Status = "TransactionNotCompleted" };
     notCompleteEvent.Complete();
     transaction.AddChild(notCompleteEvent);
     transaction.Complete();
 }