public void Apply(IInternalObjectContainer container)
        {
            My <LinqQueryMonitor> .Instance.Initialize();

            IEventRegistry eventRegistry = EventRegistryFactory.ForObjectContainer(container);

            PerformanceCounter unoptimizedNativeQueriesPerSec = Db4oPerformanceCounters.CounterFor(PerformanceCounterSpec.UnoptimizedNativeQueriesPerSec, false);
            PerformanceCounter nativeQueriesPerSec            = Db4oPerformanceCounters.CounterFor(PerformanceCounterSpec.NativeQueriesPerSec, false);

            container.GetNativeQueryHandler().QueryExecution += delegate(object sender, QueryExecutionEventArgs args)
            {
                if (args.ExecutionKind == QueryExecutionKind.Unoptimized)
                {
                    unoptimizedNativeQueriesPerSec.Increment();
                }

                nativeQueriesPerSec.Increment();
            };

            eventRegistry.Closing += delegate
            {
                nativeQueriesPerSec.RemoveInstance();

                nativeQueriesPerSec.Dispose();
                unoptimizedNativeQueriesPerSec.Dispose();

                container.WithEnvironment(delegate
                {
                    My <LinqQueryMonitor> .Instance.Dispose();
                });
            };
        }
        public void Apply(IInternalObjectContainer container)
        {
            PerformanceCounter queriesPerSec         = null;
            PerformanceCounter classIndexScansPerSec = null;

            container.WithEnvironment(delegate
            {
                queriesPerSec         = Db4oPerformanceCounters.CounterFor(PerformanceCounterSpec.QueriesPerSec, false);
                classIndexScansPerSec = Db4oPerformanceCounters.CounterFor(PerformanceCounterSpec.ClassIndexScansPerSec, false);
            });

            IEventRegistry eventRegistry = EventRegistryFactory.ForObjectContainer(container);

            eventRegistry.QueryFinished += delegate
            {
                queriesPerSec.Increment();
            };

            container.Configure().Diagnostic().AddListener(new DiagnosticListener(classIndexScansPerSec));

            eventRegistry.Closing += delegate
            {
                queriesPerSec.RemoveInstance();
                classIndexScansPerSec.RemoveInstance();

                queriesPerSec.Dispose();
                classIndexScansPerSec.Dispose();
            };
        }
Пример #3
0
            public override void Close()
            {
                base.Close();

                _bytesReadCounter.RemoveInstance();

                _bytesReadCounter.Dispose();
                _bytesWrittenCounter.Dispose();
            }
Пример #4
0
            public void Dispose()
            {
                _totalFreespaceCounter.RemoveInstance();

                _totalFreespaceCounter.Dispose();
                _averageSlotSizeCounter.Dispose();
                _freespaceSlotsCounter.Dispose();
                _reusedSlotsCounter.Dispose();
            }
        public void Apply(IInternalObjectContainer container)
        {
            PerformanceCounter storedObjectsPerSec =
                Db4oPerformanceCounters.CounterFor(PerformanceCounterSpec.ObjectsStoredPerSec, false);
            PerformanceCounter activatedObjectsPerSec =
                Db4oPerformanceCounters.CounterFor(PerformanceCounterSpec.ObjectsActivatedPerSec, false);
            PerformanceCounter deactivatedObjectsPerSec =
                Db4oPerformanceCounters.CounterFor(PerformanceCounterSpec.ObjectsDeactivatedPerSec, false);
            IEventRegistry eventRegistry = EventRegistryFactory.ForObjectContainer(container);

            EventHandler <ObjectInfoEventArgs> eventHandler = delegate
            {
                storedObjectsPerSec.Increment();
            };

            eventRegistry.Created += eventHandler;
            eventRegistry.Updated += eventHandler;

            eventRegistry.Activated += delegate
            {
                activatedObjectsPerSec.Increment();
            };
            eventRegistry.Deactivated += delegate
            {
                deactivatedObjectsPerSec.Increment();
            };

            eventRegistry.Closing += delegate
            {
                storedObjectsPerSec.Dispose();
                activatedObjectsPerSec.Dispose();
                deactivatedObjectsPerSec.Dispose();

                storedObjectsPerSec.RemoveInstance();
            };
            if (container.IsClient)
            {
                return;
            }

            PerformanceCounter deletedObjectsPerSec =
                Db4oPerformanceCounters.CounterFor(PerformanceCounterSpec.ObjectsDeletedPerSec, false);

            eventRegistry.Deleted += delegate
            {
                deletedObjectsPerSec.Increment();
            };

            eventRegistry.Closing += delegate
            {
                deletedObjectsPerSec.Dispose();
            };
        }
            private PerformanceCounter ObjectsInReferenceSystemCounterFor(IObjectContainer container)
            {
                if (_objectsCounter == null)
                {
                    _objectsCounter = Db4oPerformanceCounters.CounterFor(PerformanceCounterSpec.ObjectReferenceCount,
                                                                         container, false);
                    var eventRegistry = EventRegistryFactory.ForObjectContainer(container);
                    eventRegistry.Closing += delegate
                    {
                        _objectsCounter.RemoveInstance();
                        _objectsCounter.Dispose();
                    };
                }

                return(_objectsCounter);
            }