PerformanceImpl.h revision 561574402775590253d11504354bfe21d80e4858
1c898140fdfb6f3d207b0066f4fc8988226da7d4vboxsync * VBox Performance COM class implementation.
e64031e20c39650a7bc902a3e1aba613b9415deevboxsync * Copyright (C) 2008-2009 Oracle Corporation
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.
4651430e55b9df9726347e3e3968618e540fe729vboxsync//#ifdef VBOX_WITH_RESOURCE_USAGE_API
4651430e55b9df9726347e3e3968618e540fe729vboxsync//#endif /* VBOX_WITH_RESOURCE_USAGE_API */
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync/* Each second we obtain new CPU load stats. */
e07acfb7f2dbb8bb40804024c79fd3139bdb3f24vboxsync VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(PerformanceMetric, IPerformanceMetric)
c7a378ed2fbad681c0b674351d698ef20a368935vboxsync VBOX_DEFAULT_INTERFACE_ENTRIES (IPerformanceMetric)
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // public initializer/uninitializer for internal purposes only
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // IPerformanceMetric properties
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync STDMETHOD(COMGETTER(MetricName)) (BSTR *aMetricName);
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync STDMETHOD(COMGETTER(Object)) (IUnknown **anObject);
83c86878d483df62ca8db465c671995984838338vboxsync STDMETHOD(COMGETTER(Description)) (BSTR *aDescription);
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!)
5a6bbb9c0d896e804f267c6919f52158a420b998vboxsync /* Constructor. */
e07acfb7f2dbb8bb40804024c79fd3139bdb3f24vboxsync VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(PerformanceCollector, IPerformanceCollector)
c7a378ed2fbad681c0b674351d698ef20a368935vboxsync VBOX_DEFAULT_INTERFACE_ENTRIES(IPerformanceCollector)
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // public initializers/uninitializers only for internal purposes
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // IPerformanceCollector properties
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync STDMETHOD(COMGETTER(MetricNames)) (ComSafeArrayOut (BSTR, metricNames));
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // IPerformanceCollector methods
f72cbd6a549c34992fa79cce84600fe2b92b3299vboxsync STDMETHOD(GetMetrics) (ComSafeArrayIn (IN_BSTR, metricNames),
30f7bd6bf198ae0489df375e5a17cb086acb30fbvboxsync ComSafeArrayOut (IPerformanceMetric *, outMetrics));
f72cbd6a549c34992fa79cce84600fe2b92b3299vboxsync STDMETHOD(SetupMetrics) (ComSafeArrayIn (IN_BSTR, metricNames),
f72cbd6a549c34992fa79cce84600fe2b92b3299vboxsync STDMETHOD(EnableMetrics) (ComSafeArrayIn (IN_BSTR, metricNames),
f72cbd6a549c34992fa79cce84600fe2b92b3299vboxsync STDMETHOD(DisableMetrics) (ComSafeArrayIn (IN_BSTR, metricNames),
f72cbd6a549c34992fa79cce84600fe2b92b3299vboxsync STDMETHOD(QueryMetricsData) (ComSafeArrayIn (IN_BSTR, metricNames),
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // public methods only for internal purposes
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync void registerBaseMetric (pm::BaseMetric *baseMetric);
32529464ff2d4288a3c949ab8042126b0fa903devboxsync void unregisterBaseMetricsFor (const ComPtr<IUnknown> &object);
32529464ff2d4288a3c949ab8042126b0fa903devboxsync 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!)
0b6e534f55fcb5870df42b58ae354ad5fdbda66avboxsync pm::CollectorGuestManager *getGuestManager() { return m.gm; };
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync HRESULT toIPerformanceMetric(pm::Metric *src, IPerformanceMetric **dst);
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync HRESULT toIPerformanceMetric(pm::BaseMetric *src, IPerformanceMetric **dst);
e6a899848410114df5f1db88a025d0843a98112cvboxsync static void staticSamplerCallback (RTTIMERLR hTimerLR, void *pvUser, uint64_t iTick);
6c5e2fff0e3fdfc7c3f3fb2e7b7ec8ebb2223cecvboxsync unsigned int mMagic;
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync#endif //!____H_PERFORMANCEIMPL
f6adf1a86574758258baa232172c965aed0d848dvboxsync/* vi: set tabstop=4 shiftwidth=4 expandtab: */