3
* VBox Client callback COM Class implementation
7
* Copyright (C) 2009 Sun Microsystems, Inc.
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.
17
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
18
* Clara, CA 95054 USA or visit http://www.sun.com if you need
19
* additional information or have any questions.
22
#include "VirtualBoxCallbackImpl.h"
25
HRESULT CallbackWrapper::FinalConstruct()
30
void CallbackWrapper::FinalRelease()
34
// public initializers/uninitializers only for internal purposes
35
HRESULT CallbackWrapper::init()
40
void CallbackWrapper::uninit(bool aFinalRelease)
44
// ILocalOwner methods
45
/////////////////////////////////////////////////////////////////////////////
47
STDMETHODIMP CallbackWrapper::SetLocalObject(IUnknown *aCallback)
49
if (aCallback == NULL)
51
mVBoxCallback.setNull();
52
mConsoleCallback.setNull();
56
if (!VALID_PTR (aCallback))
59
mVBoxCallback = aCallback;
60
mConsoleCallback = aCallback;
62
// or some other error code?
63
AssertReturn(!!mVBoxCallback || !!mConsoleCallback, E_FAIL);
68
// IVirtualBoxCallback methods
69
/////////////////////////////////////////////////////////////////////////////
70
STDMETHODIMP CallbackWrapper::OnMachineStateChange(IN_BSTR machineId, MachineState_T state)
72
if (mVBoxCallback.isNull())
75
return mVBoxCallback->OnMachineStateChange(machineId, state);
78
STDMETHODIMP CallbackWrapper::OnMachineDataChange(IN_BSTR machineId)
80
AutoReadLock alock(this);
82
if (mVBoxCallback.isNull())
85
return mVBoxCallback->OnMachineDataChange(machineId);
89
STDMETHODIMP CallbackWrapper::OnExtraDataCanChange(IN_BSTR machineId, IN_BSTR key, IN_BSTR value,
90
BSTR *error, BOOL *changeAllowed)
92
if (mVBoxCallback.isNull())
95
return mVBoxCallback->OnExtraDataCanChange(machineId, key, value, error, changeAllowed);
98
STDMETHODIMP CallbackWrapper::OnExtraDataChange(IN_BSTR machineId, IN_BSTR key, IN_BSTR value)
100
if (mVBoxCallback.isNull())
103
return mVBoxCallback->OnExtraDataChange(machineId, key, value);
106
STDMETHODIMP CallbackWrapper::OnMediaRegistered(IN_BSTR mediaId, DeviceType_T mediaType,
109
if (mVBoxCallback.isNull())
112
return mVBoxCallback->OnMediaRegistered(mediaId, mediaType, registered);
116
STDMETHODIMP CallbackWrapper::OnMachineRegistered(IN_BSTR aMachineId, BOOL registered)
118
if (mVBoxCallback.isNull())
121
return mVBoxCallback->OnMachineRegistered(aMachineId, registered);
124
STDMETHODIMP CallbackWrapper::OnSessionStateChange(IN_BSTR aMachineId, SessionState_T state)
126
if (mVBoxCallback.isNull())
129
return mVBoxCallback->OnSessionStateChange(aMachineId, state);
132
STDMETHODIMP CallbackWrapper::OnSnapshotTaken(IN_BSTR aMachineId, IN_BSTR aSnapshotId)
134
if (mVBoxCallback.isNull())
137
return mVBoxCallback->OnSnapshotTaken(aMachineId, aSnapshotId);
140
STDMETHODIMP CallbackWrapper::OnSnapshotDiscarded(IN_BSTR aMachineId, IN_BSTR aSnapshotId)
142
if (mVBoxCallback.isNull())
145
return mVBoxCallback->OnSnapshotDiscarded(aMachineId, aSnapshotId);
148
STDMETHODIMP CallbackWrapper::OnSnapshotChange(IN_BSTR aMachineId, IN_BSTR aSnapshotId)
150
if (mVBoxCallback.isNull())
153
return mVBoxCallback->OnSnapshotChange(aMachineId, aSnapshotId);
156
STDMETHODIMP CallbackWrapper::OnGuestPropertyChange(IN_BSTR aMachineId, IN_BSTR key, IN_BSTR value, IN_BSTR flags)
158
if (mVBoxCallback.isNull())
161
return mVBoxCallback->OnGuestPropertyChange(aMachineId, key, value, flags);
165
// IConsoleCallback methods
166
/////////////////////////////////////////////////////////////////////////////
167
STDMETHODIMP CallbackWrapper::OnMousePointerShapeChange(BOOL visible, BOOL alpha, ULONG xHot, ULONG yHot,
168
ULONG width, ULONG height, BYTE *shape)
170
if (mConsoleCallback.isNull())
173
return mConsoleCallback->OnMousePointerShapeChange(visible, alpha, xHot, yHot, width, height, shape);
177
STDMETHODIMP CallbackWrapper::OnMouseCapabilityChange(BOOL supportsAbsolute, BOOL needsHostCursor)
179
if (mConsoleCallback.isNull())
182
return mConsoleCallback->OnMouseCapabilityChange(supportsAbsolute, needsHostCursor);
185
STDMETHODIMP CallbackWrapper::OnKeyboardLedsChange(BOOL fNumLock, BOOL fCapsLock, BOOL fScrollLock)
187
if (mConsoleCallback.isNull())
190
return mConsoleCallback->OnKeyboardLedsChange(fNumLock, fCapsLock, fScrollLock);
193
STDMETHODIMP CallbackWrapper::OnStateChange(MachineState_T machineState)
195
if (mConsoleCallback.isNull())
198
return mConsoleCallback->OnStateChange(machineState);
201
STDMETHODIMP CallbackWrapper::OnAdditionsStateChange()
203
if (mConsoleCallback.isNull())
206
return mConsoleCallback->OnAdditionsStateChange();
209
STDMETHODIMP CallbackWrapper::OnDVDDriveChange()
211
if (mConsoleCallback.isNull())
214
return mConsoleCallback->OnDVDDriveChange();
217
STDMETHODIMP CallbackWrapper::OnFloppyDriveChange()
219
if (mConsoleCallback.isNull())
222
return mConsoleCallback->OnFloppyDriveChange();
225
STDMETHODIMP CallbackWrapper::OnNetworkAdapterChange(INetworkAdapter *aNetworkAdapter)
227
if (mConsoleCallback.isNull())
230
return mConsoleCallback->OnNetworkAdapterChange(aNetworkAdapter);
233
STDMETHODIMP CallbackWrapper::OnSerialPortChange(ISerialPort *aSerialPort)
235
if (mConsoleCallback.isNull())
238
return mConsoleCallback->OnSerialPortChange(aSerialPort);
241
STDMETHODIMP CallbackWrapper::OnParallelPortChange(IParallelPort *aParallelPort)
243
if (mConsoleCallback.isNull())
246
return mConsoleCallback->OnParallelPortChange(aParallelPort);
248
STDMETHODIMP CallbackWrapper::OnVRDPServerChange()
250
if (mConsoleCallback.isNull())
253
return mConsoleCallback->OnVRDPServerChange();
256
STDMETHODIMP CallbackWrapper::OnUSBControllerChange()
258
if (mConsoleCallback.isNull())
261
return mConsoleCallback->OnUSBControllerChange();
264
STDMETHODIMP CallbackWrapper::OnUSBDeviceStateChange(IUSBDevice *aDevice,
266
IVirtualBoxErrorInfo *aError)
268
if (mConsoleCallback.isNull())
271
return mConsoleCallback->OnUSBDeviceStateChange(aDevice, aAttached, aError);
274
STDMETHODIMP CallbackWrapper::OnSharedFolderChange(Scope_T aScope)
276
if (mConsoleCallback.isNull())
279
return mConsoleCallback->OnSharedFolderChange(aScope);
282
STDMETHODIMP CallbackWrapper::OnStorageControllerChange()
284
if (mConsoleCallback.isNull())
287
return mConsoleCallback->OnStorageControllerChange();
290
STDMETHODIMP CallbackWrapper::OnRuntimeError(BOOL fFatal, IN_BSTR id, IN_BSTR message)
292
if (mConsoleCallback.isNull())
295
return mConsoleCallback->OnRuntimeError(fFatal, id, message);
298
STDMETHODIMP CallbackWrapper::OnCanShowWindow(BOOL *canShow)
300
if (mConsoleCallback.isNull())
303
return mConsoleCallback->OnCanShowWindow(canShow);
306
STDMETHODIMP CallbackWrapper::OnShowWindow(ULONG64 *winId)
308
if (mConsoleCallback.isNull())
311
return mConsoleCallback->OnShowWindow(winId);