Beispiel #1
0
        public void HandleEvent(IEvent @event)
        {
            if (null == @event)
            {
                return;
            }

            if (null != @event.Transaction)
            {
                ServerResources.Dispose(@event.Transaction);
                AddStatistics(@event);
            }

            var tempQueue = new Queue <Transaction>();

            while (TransactionsQueue.TryDequeue(out var transaction))
            {
                if (ServerResources.IsHandleAllowed(transaction))
                {
                    ServerResources.AllocateForTransaction(transaction);
                    EventsCollector.AddEvent(new OutputEvent(transaction));
                }
                else
                {
                    tempQueue.Enqueue(transaction);
                }
            }

            while (tempQueue.TryDequeue(out var transaction))
            {
                TransactionsQueue.Enqueue(transaction);
            }
        }
Beispiel #2
0
        private ImmutableDictionary <string, GraphFieldEventInfo> GetFieldEvents(EventsCollector eventsCollector, EventType eventType)
        {
            if (Type == GraphType.None)
            {
                return(ImmutableDictionary.Create <string, GraphFieldEventInfo>());
            }

            OverridableItemsCollection <GraphFieldEventInfo> rawCollection = eventsCollector.GetFieldEvents(eventType);

            return(rawCollection.ToImmutableDictionary() ?? ImmutableDictionary.Create <string, GraphFieldEventInfo>());
        }
        public void RemoveChildKernelCleansUp()
        {
            IKernel subkernel      = new DefaultKernel();
            var     eventCollector = new EventsCollector(subkernel);

            subkernel.RemovedAsChildKernel += eventCollector.RemovedAsChildKernel;
            subkernel.AddedAsChildKernel   += eventCollector.AddedAsChildKernel;

            kernel.AddChildKernel(subkernel);
            Assert.AreEqual(kernel, subkernel.Parent);
            Assert.AreEqual(1, eventCollector.Events.Count);
            Assert.AreEqual(EventsCollector.Added, eventCollector.Events[0]);

            kernel.RemoveChildKernel(subkernel);
            Assert.IsNull(subkernel.Parent);
            Assert.AreEqual(2, eventCollector.Events.Count);
            Assert.AreEqual(EventsCollector.Removed, eventCollector.Events[1]);
        }
        public void HandleEvent(IEvent @event)
        {
            var transaction = _transactionCreator.CreateTransactionByType();

            AddStatistics(transaction);

            if (ServerResources.IsHandleAllowed(transaction))
            {
                ServerResources.AllocateForTransaction(transaction);
                EventsCollector.AddEvent(new OutputEvent(transaction));
            }
            else
            {
                TransactionsQueue.Enqueue(transaction);
            }

            EventsCollector.AddEvent(new InputEvent());
        }
        public void RemovingChildKernelUnsubscribesFromParentEvents()
        {
            IKernel subkernel      = new DefaultKernel();
            var     eventCollector = new EventsCollector(subkernel);

            subkernel.RemovedAsChildKernel += eventCollector.RemovedAsChildKernel;
            subkernel.AddedAsChildKernel   += eventCollector.AddedAsChildKernel;

            kernel.AddChildKernel(subkernel);
            kernel.RemoveChildKernel(subkernel);
            kernel.AddChildKernel(subkernel);
            kernel.RemoveChildKernel(subkernel);

            Assert.AreEqual(4, eventCollector.Events.Count);
            Assert.AreEqual(EventsCollector.Added, eventCollector.Events[0]);
            Assert.AreEqual(EventsCollector.Removed, eventCollector.Events[1]);
            Assert.AreEqual(EventsCollector.Added, eventCollector.Events[2]);
            Assert.AreEqual(EventsCollector.Removed, eventCollector.Events[3]);
        }
Beispiel #6
0
        private EventsCollector InitializeEvents()
        {
            _cancellation.ThrowIfCancellationRequested();
            var methods = GetAllGraphMethodsFromBaseToDerived();

            var eventsCollector  = new EventsCollector(this, _pxContext);
            int declarationOrder = 0;

            foreach (IMethodSymbol method in methods)
            {
                _cancellation.ThrowIfCancellationRequested();

                var(eventType, eventSignatureType) = method.GetEventHandlerInfo(_pxContext);

                if (eventSignatureType == EventHandlerSignatureType.None || eventType == EventType.None)
                {
                    continue;
                }

                GraphEventCategory eventCategory = GetEventCategoryByEventType(eventType);

                if (!IsValidGraphEvent(method, eventSignatureType, eventCategory))
                {
                    continue;
                }

                if (eventCategory == GraphEventCategory.Row)
                {
                    eventsCollector.AddEvent(eventSignatureType, eventType, method, declarationOrder, _cancellation);
                }
                else if (eventCategory == GraphEventCategory.Field)
                {
                    eventsCollector.AddFieldEvent(eventSignatureType, eventType, method, declarationOrder, _cancellation);
                }

                declarationOrder++;
            }

            return(eventsCollector);
        }
		public void RemovingChildKernelUnsubscribesFromParentEvents()
		{
			IKernel subkernel = new DefaultKernel();
			var eventCollector = new EventsCollector(subkernel);
			subkernel.RemovedAsChildKernel += eventCollector.RemovedAsChildKernel;
			subkernel.AddedAsChildKernel += eventCollector.AddedAsChildKernel;

			Kernel.AddChildKernel(subkernel);
			Kernel.RemoveChildKernel(subkernel);
			Kernel.AddChildKernel(subkernel);
			Kernel.RemoveChildKernel(subkernel);

			Assert.AreEqual(4, eventCollector.Events.Count);
			Assert.AreEqual(EventsCollector.Added, eventCollector.Events[0]);
			Assert.AreEqual(EventsCollector.Removed, eventCollector.Events[1]);
			Assert.AreEqual(EventsCollector.Added, eventCollector.Events[2]);
			Assert.AreEqual(EventsCollector.Removed, eventCollector.Events[3]);
		}
		public void RemoveChildKernelCleansUp()
		{
			IKernel subkernel = new DefaultKernel();
			var eventCollector = new EventsCollector(subkernel);
			subkernel.RemovedAsChildKernel += eventCollector.RemovedAsChildKernel;
			subkernel.AddedAsChildKernel += eventCollector.AddedAsChildKernel;

			Kernel.AddChildKernel(subkernel);
			Assert.AreEqual(Kernel, subkernel.Parent);
			Assert.AreEqual(1, eventCollector.Events.Count);
			Assert.AreEqual(EventsCollector.Added, eventCollector.Events[0]);

			Kernel.RemoveChildKernel(subkernel);
			Assert.IsNull(subkernel.Parent);
			Assert.AreEqual(2, eventCollector.Events.Count);
			Assert.AreEqual(EventsCollector.Removed, eventCollector.Events[1]);
		}