1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
/** @file
*
* VirtualBox COM class implementation
*/
/*
* Copyright (C) 2006-2012 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
* you can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) as published by the Free Software
* Foundation, in version 2 as it comes in the "COPYING" file of the
* VirtualBox OSE distribution. VirtualBox OSE is distributed in the
* hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
*/
#ifndef ____H_BANDWIDTHCONTROLIMPL
#define ____H_BANDWIDTHCONTROLIMPL
#include "VirtualBoxBase.h"
class BandwidthGroup;
namespace settings
{
struct IOSettings;
}
class ATL_NO_VTABLE BandwidthControl :
public VirtualBoxBase,
VBOX_SCRIPTABLE_IMPL(IBandwidthControl)
{
public:
VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(BandwidthControl, IBandwidthControl)
DECLARE_NOT_AGGREGATABLE(BandwidthControl)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(BandwidthControl)
VBOX_DEFAULT_INTERFACE_ENTRIES(IBandwidthControl)
END_COM_MAP()
BandwidthControl() { };
~BandwidthControl() { };
// public initializer/uninitializer for internal purposes only
HRESULT init(Machine *aParent);
HRESULT init(Machine *aParent, BandwidthControl *aThat);
HRESULT initCopy(Machine *aParent, BandwidthControl *aThat);
void uninit();
STDMETHOD(CreateBandwidthGroup) (IN_BSTR aName, BandwidthGroupType_T aType, LONG64 aMaxBytesPerSec);
STDMETHOD(DeleteBandwidthGroup) (IN_BSTR aName);
STDMETHOD(COMGETTER(NumGroups)) (ULONG *aGroups);
STDMETHOD(GetBandwidthGroup) (IN_BSTR aName, IBandwidthGroup **aBandwidthGroup);
STDMETHOD(GetAllBandwidthGroups) (ComSafeArrayOut(IBandwidthGroup *, aBandwidthGroups));
HRESULT FinalConstruct();
void FinalRelease();
// public internal methods
HRESULT loadSettings(const settings::IOSettings &data);
HRESULT saveSettings(settings::IOSettings &data);
void rollback();
void commit();
void copyFrom (BandwidthControl *aThat);
Machine *getMachine() const;
HRESULT getBandwidthGroupByName(const Utf8Str &aName,
ComObjPtr<BandwidthGroup> &aBandwidthGroup,
bool aSetError /* = false */);
private:
struct Data;
Data *m;
};
#endif // ____H_BANDWIDTHCONTROLIMPL
/* vi: set tabstop=4 shiftwidth=4 expandtab: */
|