BandwidthGroupImpl.h revision af7209255033c3b77816f81ef6293ff8070ee156
63b785c3291332a86a9bc473e68f08121368898bvboxsync/** @file
63b785c3291332a86a9bc473e68f08121368898bvboxsync *
63b785c3291332a86a9bc473e68f08121368898bvboxsync * VirtualBox COM class implementation
63b785c3291332a86a9bc473e68f08121368898bvboxsync */
63b785c3291332a86a9bc473e68f08121368898bvboxsync
63b785c3291332a86a9bc473e68f08121368898bvboxsync/*
63b785c3291332a86a9bc473e68f08121368898bvboxsync * Copyright (C) 2006-2009 Oracle Corporation
63b785c3291332a86a9bc473e68f08121368898bvboxsync *
63b785c3291332a86a9bc473e68f08121368898bvboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
63b785c3291332a86a9bc473e68f08121368898bvboxsync * available from http://www.virtualbox.org. This file is free software;
63b785c3291332a86a9bc473e68f08121368898bvboxsync * you can redistribute it and/or modify it under the terms of the GNU
63b785c3291332a86a9bc473e68f08121368898bvboxsync * General Public License (GPL) as published by the Free Software
63b785c3291332a86a9bc473e68f08121368898bvboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
63b785c3291332a86a9bc473e68f08121368898bvboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
63b785c3291332a86a9bc473e68f08121368898bvboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
63b785c3291332a86a9bc473e68f08121368898bvboxsync */
63b785c3291332a86a9bc473e68f08121368898bvboxsync
63b785c3291332a86a9bc473e68f08121368898bvboxsync#ifndef ____H_BANDWIDTHGROUPIMPL
63b785c3291332a86a9bc473e68f08121368898bvboxsync#define ____H_BANDWIDTHGROUPIMPL
63b785c3291332a86a9bc473e68f08121368898bvboxsync
63b785c3291332a86a9bc473e68f08121368898bvboxsync#include "VirtualBoxBase.h"
63b785c3291332a86a9bc473e68f08121368898bvboxsync#include "BandwidthControlImpl.h"
63b785c3291332a86a9bc473e68f08121368898bvboxsync
63b785c3291332a86a9bc473e68f08121368898bvboxsyncclass ATL_NO_VTABLE BandwidthGroup :
63b785c3291332a86a9bc473e68f08121368898bvboxsync public VirtualBoxBase,
63b785c3291332a86a9bc473e68f08121368898bvboxsync VBOX_SCRIPTABLE_IMPL(IBandwidthGroup)
63b785c3291332a86a9bc473e68f08121368898bvboxsync{
63b785c3291332a86a9bc473e68f08121368898bvboxsyncpublic:
63b785c3291332a86a9bc473e68f08121368898bvboxsync VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(BandwidthGroup, IBandwidthGroup)
63b785c3291332a86a9bc473e68f08121368898bvboxsync
63b785c3291332a86a9bc473e68f08121368898bvboxsync DECLARE_NOT_AGGREGATABLE(BandwidthGroup)
63b785c3291332a86a9bc473e68f08121368898bvboxsync
63b785c3291332a86a9bc473e68f08121368898bvboxsync DECLARE_PROTECT_FINAL_CONSTRUCT()
63b785c3291332a86a9bc473e68f08121368898bvboxsync
63b785c3291332a86a9bc473e68f08121368898bvboxsync BEGIN_COM_MAP(BandwidthGroup)
c7a378ed2fbad681c0b674351d698ef20a368935vboxsync VBOX_DEFAULT_INTERFACE_ENTRIES(IBandwidthGroup)
63b785c3291332a86a9bc473e68f08121368898bvboxsync END_COM_MAP()
63b785c3291332a86a9bc473e68f08121368898bvboxsync
63b785c3291332a86a9bc473e68f08121368898bvboxsync BandwidthGroup() { };
63b785c3291332a86a9bc473e68f08121368898bvboxsync ~BandwidthGroup() { };
63b785c3291332a86a9bc473e68f08121368898bvboxsync
63b785c3291332a86a9bc473e68f08121368898bvboxsync // public initializer/uninitializer for internal purposes only
63b785c3291332a86a9bc473e68f08121368898bvboxsync HRESULT init(BandwidthControl *aParent,
63b785c3291332a86a9bc473e68f08121368898bvboxsync const Utf8Str &aName,
63b785c3291332a86a9bc473e68f08121368898bvboxsync BandwidthGroupType_T aType,
af7209255033c3b77816f81ef6293ff8070ee156vboxsync LONG64 aMaxBytesPerSec);
63b785c3291332a86a9bc473e68f08121368898bvboxsync HRESULT init(BandwidthControl *aParent, BandwidthGroup *aThat, bool aReshare = false);
63b785c3291332a86a9bc473e68f08121368898bvboxsync HRESULT initCopy(BandwidthControl *aParent, BandwidthGroup *aThat);
63b785c3291332a86a9bc473e68f08121368898bvboxsync void uninit();
63b785c3291332a86a9bc473e68f08121368898bvboxsync
63b785c3291332a86a9bc473e68f08121368898bvboxsync HRESULT FinalConstruct();
63b785c3291332a86a9bc473e68f08121368898bvboxsync void FinalRelease();
63b785c3291332a86a9bc473e68f08121368898bvboxsync
63b785c3291332a86a9bc473e68f08121368898bvboxsync STDMETHOD(COMGETTER(Name))(BSTR *aName);
63b785c3291332a86a9bc473e68f08121368898bvboxsync STDMETHOD(COMGETTER(Type))(BandwidthGroupType_T *aType);
63b785c3291332a86a9bc473e68f08121368898bvboxsync STDMETHOD(COMGETTER(Reference))(ULONG *aReferences);
af7209255033c3b77816f81ef6293ff8070ee156vboxsync STDMETHOD(COMGETTER(MaxBytesPerSec))(LONG64 *aMaxBytesPerSec);
af7209255033c3b77816f81ef6293ff8070ee156vboxsync STDMETHOD(COMSETTER(MaxBytesPerSec))(LONG64 aMaxBytesPerSec);
63b785c3291332a86a9bc473e68f08121368898bvboxsync
63b785c3291332a86a9bc473e68f08121368898bvboxsync // public methods only for internal purposes
63b785c3291332a86a9bc473e68f08121368898bvboxsync void rollback();
63b785c3291332a86a9bc473e68f08121368898bvboxsync void commit();
63b785c3291332a86a9bc473e68f08121368898bvboxsync void unshare();
63b785c3291332a86a9bc473e68f08121368898bvboxsync
63b785c3291332a86a9bc473e68f08121368898bvboxsync const Utf8Str &getName() const;
63b785c3291332a86a9bc473e68f08121368898bvboxsync BandwidthGroupType_T getType() const;
af7209255033c3b77816f81ef6293ff8070ee156vboxsync LONG64 getMaxBytesPerSec() const;
63b785c3291332a86a9bc473e68f08121368898bvboxsync ULONG getReferences() const;
63b785c3291332a86a9bc473e68f08121368898bvboxsync
63b785c3291332a86a9bc473e68f08121368898bvboxsync void reference();
63b785c3291332a86a9bc473e68f08121368898bvboxsync void release();
63b785c3291332a86a9bc473e68f08121368898bvboxsync
63b785c3291332a86a9bc473e68f08121368898bvboxsync ComObjPtr<BandwidthGroup> getPeer();
63b785c3291332a86a9bc473e68f08121368898bvboxsync
63b785c3291332a86a9bc473e68f08121368898bvboxsyncprivate:
63b785c3291332a86a9bc473e68f08121368898bvboxsync struct Data;
63b785c3291332a86a9bc473e68f08121368898bvboxsync Data *m;
63b785c3291332a86a9bc473e68f08121368898bvboxsync};
63b785c3291332a86a9bc473e68f08121368898bvboxsync
63b785c3291332a86a9bc473e68f08121368898bvboxsync#endif // ____H_BANDWIDTHGROUPIMPL
63b785c3291332a86a9bc473e68f08121368898bvboxsync/* vi: set tabstop=4 shiftwidth=4 expandtab: */