ApplianceImpl.h revision 20281e6ab7ca197da1faf8f339be13d2f0e39b6d
/* $Id$ */
/** @file
* VirtualBox COM class implementation
*/
/*
* Copyright (C) 2006-2013 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
* 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_APPLIANCEIMPL
#define ____H_APPLIANCEIMPL
/* VBox includes */
#include <VBox/settings.h>
#include "VirtualSystemDescriptionWrap.h"
#include "ApplianceWrap.h"
#include "MediumFormatImpl.h"
/* Todo: This file needs massive cleanup. Split IAppliance in a public and
* private classes. */
#include "ovfreader.h"
#include <set>
/* VBox forward declarations */
struct VirtualSystemDescriptionEntry;
struct LocationInfo;
typedef struct VDINTERFACE *PVDINTERFACE;
typedef struct VDINTERFACEIO *PVDINTERFACEIO;
typedef struct SHASTORAGE *PSHASTORAGE;
{
struct HardDiskController;
struct VirtualSystem;
struct DiskImage;
struct EnvelopeData;
}
{
}
{
}
{
void FinalRelease();
void uninit();
/* public methods only for internal purposes */
{
return setErrorInternal(aResultCode, getStaticClassIID(), getStaticComponentName(), aText, false, true);
}
/* private instance data */
// wrapped IAppliance properties
HRESULT getVirtualSystemDescriptions(std::vector<ComPtr<IVirtualSystemDescription> > &aVirtualSystemDescriptions);
// wrapped IAppliance methods
/** weak VirtualBox parent */
VirtualBox* const mVirtualBox;
struct ImportStack;
struct TaskOVF;
struct Data; // opaque, defined in ApplianceImpl.cpp
Data *m;
/** @name General stuff
* @{
*/
bool i_isApplianceIdle();
const Bstr &bstrDescription,
void i_addWarning(const char* aWarning, ...);
void i_disksWeight();
/** @} */
/** @name Read stuff
* @{
*/
HRESULT i_readFSImpl(TaskOVF *pTask, const RTCString &strFilename, PVDINTERFACEIO pCallbacks, PSHASTORAGE pStorage);
/** @} */
/** @name Import stuff
* @}
*/
void **ppvBuf,
bool fCreateDigest,
void **ppvBuf,
bool fCreateDigest,
HRESULT i_verifyManifestFile(const Utf8Str &strFile, ImportStack &stack, void *pvBuf, size_t cbSize);
/** @} */
/** @name Write stuff
* @{
*/
HRESULT i_writeImpl(ovf::OVFVersion_T aFormat, const LocationInfo &aLocInfo, ComObjPtr<Progress> &aProgress);
HRESULT i_writeFSImpl(TaskOVF *pTask, AutoWriteLockBase& writeLock, PVDINTERFACEIO pCallbacks, PSHASTORAGE pStorage);
struct XMLStack;
/** @} */
};
{
Utf8Str strVBoxSuggested; ///< configuration value (type-dependent); original value suggested by interpret()
Utf8Str strVBoxCurrent; ///< configuration value (type-dependent); current value, either from interpret() or setFinalValue()
Utf8Str strExtraConfigSuggested; ///< extra configuration key=value strings (type-dependent); original value suggested by interpret()
Utf8Str strExtraConfigCurrent; ///< extra configuration key=value strings (type-dependent); current value, either from interpret() or setFinalValue()
bool skipIt; ///< used during export to skip some parts if it's needed
};
{
void FinalRelease();
void uninit();
/* public methods only for internal purposes */
const Utf8Str &aVBoxValue,
/* private instance data */
// wrapped IVirtualSystemDescription properties
// wrapped IVirtualSystemDescription methods
struct Data;
Data *m;
};
#endif // !____H_APPLIANCEIMPL
/* vi: set tabstop=4 shiftwidth=4 expandtab: */