PerformanceImpl.h revision 30f7bd6bf198ae0489df375e5a17cb086acb30fb
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync * VBox Performance COM Classes declaration.
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync * Copyright (C) 2008 Sun Microsystems, Inc.
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync * available from http://www.virtualbox.org. This file is free software;
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync * you can redistribute it and/or modify it under the terms of the GNU
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync * General Public License (GPL) as published by the Free Software
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync * Clara, CA 95054 USA or visit http://www.sun.com if you need
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync * additional information or have any questions.
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync//#ifdef VBOX_WITH_RESOURCE_USAGE_API
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync//#endif /* VBOX_WITH_RESOURCE_USAGE_API */
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync/* Each second we obtain new CPU load stats. */
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync public VirtualBoxSupportTranslation <PerformanceMetric>,
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync /* Constructor. */
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // public initializer/uninitializer for internal purposes only
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // IPerformanceMetric properties
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync STDMETHOD(COMGETTER(MetricName)) (BSTR *aMetricName);
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync STDMETHOD(COMGETTER(Object)) (IUnknown **anObject);
30f7bd6bf198ae0489df375e5a17cb086acb30fbvboxsync STDMETHOD(COMGETTER(MinimumValue)) (LONG *aMinValue);
30f7bd6bf198ae0489df375e5a17cb086acb30fbvboxsync STDMETHOD(COMGETTER(MaximumValue)) (LONG *aMaxValue);
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // IPerformanceMetric methods
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // public methods only for internal purposes
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // public methods for internal purposes only
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // (ensure there is a caller and a read lock before calling them!)
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync public VirtualBoxSupportTranslation <PerformanceData>,
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync /* Constructor. */
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT (PerformanceData)
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // public initializer/uninitializer for internal purposes only
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync HRESULT init (cosnt BSTR aMetricName, IUnknown *anObject,
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // IPerformanceData properties
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync STDMETHOD(COMGETTER(MetricName)) (BSTR *aMetricName);
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync STDMETHOD(COMGETTER(Object)) (IUnknown **anObject);
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync STDMETHOD(COMGETTER(Values)) (ComSafeArrayOut (LONG, values));
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // IPerformanceData methods
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // public methods only for internal purposes
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync public VirtualBoxSupportErrorInfoImpl <PerformanceCollector, IPerformanceCollector>,
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync public VirtualBoxSupportTranslation <PerformanceCollector>,
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT (PerformanceCollector)
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // public initializers/uninitializers only for internal purposes
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // IPerformanceCollector properties
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync STDMETHOD(COMGETTER(MetricNames)) (ComSafeArrayOut (BSTR, metricNames));
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // IPerformanceCollector methods
30f7bd6bf198ae0489df375e5a17cb086acb30fbvboxsync STDMETHOD(GetMetrics) (ComSafeArrayIn (INPTR BSTR, metricNames),
30f7bd6bf198ae0489df375e5a17cb086acb30fbvboxsync ComSafeArrayOut (IPerformanceMetric *, outMetrics));
6c5e2fff0e3fdfc7c3f3fb2e7b7ec8ebb2223cecvboxsync STDMETHOD(SetupMetrics) (ComSafeArrayIn (INPTR BSTR, metricNames),
30f7bd6bf198ae0489df375e5a17cb086acb30fbvboxsync STDMETHOD(EnableMetrics) (ComSafeArrayIn (INPTR BSTR, metricNames),
30f7bd6bf198ae0489df375e5a17cb086acb30fbvboxsync STDMETHOD(DisableMetrics) (ComSafeArrayIn (INPTR BSTR, metricNames),
30f7bd6bf198ae0489df375e5a17cb086acb30fbvboxsync STDMETHOD(QueryMetricsData) (ComSafeArrayIn (INPTR BSTR, metricNames),
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // public methods only for internal purposes
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync void registerBaseMetric (pm::BaseMetric *baseMetric);
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync void unregisterBaseMetricsFor (const ComPtr <IUnknown> &object);
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync void unregisterMetricsFor (const ComPtr <IUnknown> &object);
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // public methods for internal purposes only
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // (ensure there is a caller and a read lock before calling them!)
f2fedb6cbb946e9dd6d418b1472373395e2ac34fvboxsync pm::MetricFactory *getMetricFactory() { return m.mFactory; };
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // for VirtualBoxSupportErrorInfoImpl
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync static const wchar_t *getComponentName() { return L"PerformanceCollector"; }
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync static void staticSamplerCallback (PRTTIMER pTimer, void *pvUser, uint64_t iTick);
6c5e2fff0e3fdfc7c3f3fb2e7b7ec8ebb2223cecvboxsync unsigned int mMagic;
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync#endif //!____H_PERFORMANCEIMPL