VirtualBox

source: vbox/trunk/src/VBox/Main/include/SnapshotImpl.h@ 52052

Last change on this file since 52052 was 50504, checked in by vboxsync, 11 years ago

Main/Snapshot: do not rename virtual methods carelessly, the code assumes this name and will not call anything else

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.7 KB
Line 
1/* $Id: SnapshotImpl.h 50504 2014-02-19 13:17:43Z vboxsync $ */
2
3/** @file
4 *
5 * VirtualBox COM class implementation
6 */
7
8/*
9 * Copyright (C) 2006-2013 Oracle Corporation
10 *
11 * This file is part of VirtualBox Open Source Edition (OSE), as
12 * available from http://www.virtualbox.org. This file is free software;
13 * you can redistribute it and/or modify it under the terms of the GNU
14 * General Public License (GPL) as published by the Free Software
15 * Foundation, in version 2 as it comes in the "COPYING" file of the
16 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
17 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
18 */
19
20#ifndef ____H_SNAPSHOTIMPL
21#define ____H_SNAPSHOTIMPL
22
23#include "SnapshotWrap.h"
24
25class SnapshotMachine;
26
27namespace settings
28{
29 struct Snapshot;
30}
31
32class ATL_NO_VTABLE Snapshot :
33 public SnapshotWrap
34{
35public:
36 DECLARE_EMPTY_CTOR_DTOR(Snapshot)
37
38 HRESULT FinalConstruct();
39 void FinalRelease();
40
41 // public initializer/uninitializer only for internal purposes
42 HRESULT init(VirtualBox *aVirtualBox,
43 const Guid &aId,
44 const Utf8Str &aName,
45 const Utf8Str &aDescription,
46 const RTTIMESPEC &aTimeStamp,
47 SnapshotMachine *aMachine,
48 Snapshot *aParent);
49 void uninit();
50
51 void i_beginSnapshotDelete();
52
53 void i_deparent();
54
55 // public methods only for internal purposes
56
57 /**
58 * Override of the default locking class to be used for validating lock
59 * order with the standard member lock handle.
60 */
61 virtual VBoxLockingClass getLockingClass() const
62 {
63 return LOCKCLASS_SNAPSHOTOBJECT;
64 }
65
66 const ComObjPtr<Snapshot>& i_getParent() const;
67 const ComObjPtr<Snapshot> i_getFirstChild() const;
68
69 const Utf8Str& i_getStateFilePath() const;
70
71 uint32_t i_getDepth();
72
73 ULONG i_getChildrenCount();
74 ULONG i_getAllChildrenCount();
75 ULONG i_getAllChildrenCountImpl();
76
77 const ComObjPtr<SnapshotMachine>& i_getSnapshotMachine() const;
78
79 Guid i_getId() const;
80 const Utf8Str& i_getName() const;
81 RTTIMESPEC i_getTimeStamp() const;
82
83 ComObjPtr<Snapshot> i_findChildOrSelf(IN_GUID aId);
84 ComObjPtr<Snapshot> i_findChildOrSelf(const Utf8Str &aName);
85
86 void i_updateSavedStatePaths(const Utf8Str &strOldPath,
87 const Utf8Str &strNewPath);
88 void i_updateSavedStatePathsImpl(const Utf8Str &strOldPath,
89 const Utf8Str &strNewPath);
90
91 bool i_sharesSavedStateFile(const Utf8Str &strPath,
92 Snapshot *pSnapshotToIgnore);
93
94 HRESULT i_saveSnapshot(settings::Snapshot &data, bool aAttrsOnly);
95 HRESULT i_saveSnapshotImpl(settings::Snapshot &data, bool aAttrsOnly);
96
97 HRESULT i_uninitRecursively(AutoWriteLock &writeLock,
98 CleanupMode_T cleanupMode,
99 MediaList &llMedia,
100 std::list<Utf8Str> &llFilenames);
101
102
103private:
104
105 struct Data; // opaque, defined in SnapshotImpl.cpp
106
107 // wrapped ISnapshot properties
108 HRESULT getId(com::Guid &aId);
109 HRESULT getName(com::Utf8Str &aName);
110 HRESULT setName(const com::Utf8Str &aName);
111 HRESULT getDescription(com::Utf8Str &aDescription);
112 HRESULT setDescription(const com::Utf8Str &aDescription);
113 HRESULT getTimeStamp(LONG64 *aTimeStamp);
114 HRESULT getOnline(BOOL *aOnline);
115 HRESULT getMachine(ComPtr<IMachine> &aMachine);
116 HRESULT getParent(ComPtr<ISnapshot> &aParent);
117 HRESULT getChildren(std::vector<ComPtr<ISnapshot> > &aChildren);
118
119 // wrapped ISnapshot methods
120 HRESULT getChildrenCount(ULONG *aChildrenCount);
121
122 Data *m;
123};
124
125#endif // ____H_SNAPSHOTIMPL
126
127/* 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