VirtualBox

source: vbox/trunk/src/VBox/Main/include/BandwidthGroupImpl.h

Last change on this file was 106061, checked in by vboxsync, 2 months ago

Copyright year updates by scm.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.4 KB
Line 
1/* $Id: BandwidthGroupImpl.h 106061 2024-09-16 14:03:52Z vboxsync $ */
2/** @file
3 *
4 * VirtualBox COM class implementation
5 */
6
7/*
8 * Copyright (C) 2006-2024 Oracle and/or its affiliates.
9 *
10 * This file is part of VirtualBox base platform packages, as
11 * available from https://www.virtualbox.org.
12 *
13 * This program is free software; you can redistribute it and/or
14 * modify it under the terms of the GNU General Public License
15 * as published by the Free Software Foundation, in version 3 of the
16 * License.
17 *
18 * This program is distributed in the hope that it will be useful, but
19 * WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21 * General Public License for more details.
22 *
23 * You should have received a copy of the GNU General Public License
24 * along with this program; if not, see <https://www.gnu.org/licenses>.
25 *
26 * SPDX-License-Identifier: GPL-3.0-only
27 */
28
29#ifndef MAIN_INCLUDED_BandwidthGroupImpl_h
30#define MAIN_INCLUDED_BandwidthGroupImpl_h
31#ifndef RT_WITHOUT_PRAGMA_ONCE
32# pragma once
33#endif
34
35#include <VBox/settings.h>
36#include "BandwidthControlImpl.h"
37#include "BandwidthGroupWrap.h"
38
39
40class ATL_NO_VTABLE BandwidthGroup :
41 public BandwidthGroupWrap
42{
43public:
44
45 DECLARE_COMMON_CLASS_METHODS(BandwidthGroup)
46
47 HRESULT FinalConstruct();
48 void FinalRelease();
49
50 // public initializer/uninitializer for internal purposes only
51 HRESULT init(BandwidthControl *aParent,
52 const com::Utf8Str &aName,
53 BandwidthGroupType_T aType,
54 LONG64 aMaxBytesPerSec);
55 HRESULT init(BandwidthControl *aParent, BandwidthGroup *aThat, bool aReshare = false);
56 HRESULT initCopy(BandwidthControl *aParent, BandwidthGroup *aThat);
57 void uninit();
58
59 // public methods only for internal purposes
60 void i_rollback();
61 void i_commit();
62 void i_unshare();
63 void i_reference();
64 void i_release();
65
66 ComObjPtr<BandwidthGroup> i_getPeer() { return m->pPeer; }
67 const Utf8Str &i_getName() const { return m->bd->mData.strName; }
68 BandwidthGroupType_T i_getType() const { return m->bd->mData.enmType; }
69 LONG64 i_getMaxBytesPerSec() const { return (LONG64)m->bd->mData.cMaxBytesPerSec; }
70 ULONG i_getReferences() const { return m->bd->cReferences; }
71
72private:
73
74 // wrapped IBandwidthGroup properties
75 HRESULT getName(com::Utf8Str &aName);
76 HRESULT getType(BandwidthGroupType_T *aType);
77 HRESULT getReference(ULONG *aReferences);
78 HRESULT getMaxBytesPerSec(LONG64 *aMaxBytesPerSec);
79 HRESULT setMaxBytesPerSec(LONG64 MaxBytesPerSec);
80
81 ////////////////////////////////////////////////////////////////////////////////
82 ////
83 //// private member data definition
84 ////
85 //////////////////////////////////////////////////////////////////////////////////
86 //
87 struct BackupableBandwidthGroupData
88 {
89 BackupableBandwidthGroupData()
90 : cReferences(0)
91 { }
92
93 settings::BandwidthGroup mData;
94 ULONG cReferences;
95 };
96
97 struct Data
98 {
99 Data(BandwidthControl * const aBandwidthControl)
100 : pParent(aBandwidthControl),
101 pPeer(NULL)
102 { }
103
104 BandwidthControl * const pParent;
105 ComObjPtr<BandwidthGroup> pPeer;
106
107 // use the XML settings structure in the members for simplicity
108 Backupable<BackupableBandwidthGroupData> bd;
109 };
110
111 Data *m;
112};
113
114#endif /* !MAIN_INCLUDED_BandwidthGroupImpl_h */
115/* vi: set tabstop=4 shiftwidth=4 expandtab: */
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette