VirtualBox

source: vbox/trunk/src/VBox/Frontends/VBoxManage/VBoxManageGuestCtrl.h@ 57745

Last change on this file since 57745 was 55604, checked in by vboxsync, 10 years ago

VBoxManageGuestCtrl.cpp: Refactored the common option handling. Made the default --username value be the host user id, if we can get at it. Dropped all the short common option, except for -v and the new -q (--quiet), as they may be needed in emulating some unix or DOS command. Shouldn't be any trouble for anyone except vbox devs since they are undocument. All commands are case sensitive now. Use gctl as prefix instead of a mix of it and ctrl. Expanded upon GCTLCMD, renaming it GCTLCMDDEF and refactoring handleGuestControl with it in mind. While doing so, I've made the unix command names the preferred ones both internally and in the help text. Various adjustments has been made to option parsing code and one or two other places, but there shouldn't be any real functional changes. (The code still needs more TLC though, too sparsly commented and full of todos and quick-and-dirty error handling. This is all the care I'm willing to give it for now.)

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.6 KB
Line 
1/* $Id: VBoxManageGuestCtrl.h 55604 2015-05-02 20:21:33Z vboxsync $ */
2/** @file
3 * VBoxManageGuestCtrl.h - Definitions for guest control.
4 */
5
6/*
7 * Copyright (C) 2013-2015 Oracle Corporation
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License (GPL) as published by the Free Software
13 * Foundation, in version 2 as it comes in the "COPYING" file of the
14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16 */
17
18#ifndef ___H_VBOXMANAGE_GUESTCTRL
19#define ___H_VBOXMANAGE_GUESTCTRL
20
21#ifndef VBOX_ONLY_DOCS
22
23#include <VBox/com/com.h>
24#include <VBox/com/listeners.h>
25#include <VBox/com/VirtualBox.h>
26
27#include <iprt/time.h>
28
29#include <map>
30
31const char *gctlFileStatusToText(FileStatus_T enmStatus);
32const char *gctlProcessStatusToText(ProcessStatus_T enmStatus);
33const char *gctlGuestSessionStatusToText(GuestSessionStatus_T enmStatus);
34
35using namespace com;
36
37class GuestFileEventListener;
38typedef ListenerImpl<GuestFileEventListener> GuestFileEventListenerImpl;
39
40class GuestProcessEventListener;
41typedef ListenerImpl<GuestProcessEventListener> GuestProcessEventListenerImpl;
42
43class GuestSessionEventListener;
44typedef ListenerImpl<GuestSessionEventListener> GuestSessionEventListenerImpl;
45
46class GuestEventListener;
47typedef ListenerImpl<GuestEventListener> GuestEventListenerImpl;
48
49/** Simple statistics class for binding locally
50 * held data to a specific guest object. */
51class GuestEventStats
52{
53
54public:
55
56 GuestEventStats(void)
57 : uLastUpdatedMS(RTTimeMilliTS())
58 {
59 }
60
61 /** @todo Make this more a class than a structure. */
62public:
63
64 uint64_t uLastUpdatedMS;
65};
66
67class GuestFileStats : public GuestEventStats
68{
69
70public:
71
72 GuestFileStats(void) { }
73
74 GuestFileStats(ComObjPtr<GuestFileEventListenerImpl> pListenerImpl)
75 : mListener(pListenerImpl)
76 {
77 }
78
79public: /** @todo */
80
81 ComObjPtr<GuestFileEventListenerImpl> mListener;
82};
83
84class GuestProcStats : public GuestEventStats
85{
86
87public:
88
89 GuestProcStats(void) { }
90
91 GuestProcStats(ComObjPtr<GuestProcessEventListenerImpl> pListenerImpl)
92 : mListener(pListenerImpl)
93 {
94 }
95
96public: /** @todo */
97
98 ComObjPtr<GuestProcessEventListenerImpl> mListener;
99};
100
101class GuestSessionStats : public GuestEventStats
102{
103
104public:
105
106 GuestSessionStats(void) { }
107
108 GuestSessionStats(ComObjPtr<GuestSessionEventListenerImpl> pListenerImpl)
109 : mListener(pListenerImpl)
110 {
111 }
112
113public: /** @todo */
114
115 ComObjPtr<GuestSessionEventListenerImpl> mListener;
116};
117
118/** Map containing all watched guest files. */
119typedef std::map< ComPtr<IGuestFile>, GuestFileStats > GuestEventFiles;
120/** Map containing all watched guest processes. */
121typedef std::map< ComPtr<IGuestProcess>, GuestProcStats > GuestEventProcs;
122/** Map containing all watched guest sessions. */
123typedef std::map< ComPtr<IGuestSession>, GuestSessionStats > GuestEventSessions;
124
125class GuestListenerBase
126{
127public:
128
129 GuestListenerBase(void);
130
131 virtual ~GuestListenerBase(void);
132
133public:
134
135 HRESULT init(bool fVerbose = false);
136
137protected:
138
139 /** Verbose flag. */
140 bool mfVerbose;
141};
142
143/**
144 * Handler for guest process events.
145 */
146class GuestFileEventListener : public GuestListenerBase
147{
148public:
149
150 GuestFileEventListener(void);
151
152 virtual ~GuestFileEventListener(void);
153
154public:
155
156 void uninit(void);
157
158 STDMETHOD(HandleEvent)(VBoxEventType_T aType, IEvent *aEvent);
159
160protected:
161
162};
163
164/**
165 * Handler for guest process events.
166 */
167class GuestProcessEventListener : public GuestListenerBase
168{
169public:
170
171 GuestProcessEventListener(void);
172
173 virtual ~GuestProcessEventListener(void);
174
175public:
176
177 void uninit(void);
178
179 STDMETHOD(HandleEvent)(VBoxEventType_T aType, IEvent *aEvent);
180
181protected:
182
183};
184
185/**
186 * Handler for guest session events.
187 */
188class GuestSessionEventListener : public GuestListenerBase
189{
190public:
191
192 GuestSessionEventListener(void);
193
194 virtual ~GuestSessionEventListener(void);
195
196public:
197
198 void uninit(void);
199
200 STDMETHOD(HandleEvent)(VBoxEventType_T aType, IEvent *aEvent);
201
202protected:
203
204 GuestEventFiles mFiles;
205 GuestEventProcs mProcs;
206};
207
208/**
209 * Handler for guest events.
210 */
211class GuestEventListener : public GuestListenerBase
212{
213
214public:
215
216 GuestEventListener(void);
217
218 virtual ~GuestEventListener(void);
219
220public:
221
222 void uninit(void);
223
224 STDMETHOD(HandleEvent)(VBoxEventType_T aType, IEvent *aEvent);
225
226protected:
227
228 GuestEventSessions mSessions;
229};
230#endif /* !VBOX_ONLY_DOCS */
231
232#endif /* !___H_VBOXMANAGE_GUESTCTRL */
233
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