From f215e02bf85f68d3a6106c2a1f4f7f063f819064 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Thu, 11 Apr 2024 10:17:27 +0200 Subject: Adding upstream version 7.0.14-dfsg. Signed-off-by: Daniel Baumann --- src/VBox/Main/include/SessionImpl.h | 188 ++++++++++++++++++++++++++++++++++++ 1 file changed, 188 insertions(+) create mode 100644 src/VBox/Main/include/SessionImpl.h (limited to 'src/VBox/Main/include/SessionImpl.h') diff --git a/src/VBox/Main/include/SessionImpl.h b/src/VBox/Main/include/SessionImpl.h new file mode 100644 index 00000000..afa0c7df --- /dev/null +++ b/src/VBox/Main/include/SessionImpl.h @@ -0,0 +1,188 @@ +/* $Id: SessionImpl.h $ */ +/** @file + * VBox Client Session COM Class definition + */ + +/* + * Copyright (C) 2006-2023 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + * SPDX-License-Identifier: GPL-3.0-only + */ + +#ifndef MAIN_INCLUDED_SessionImpl_h +#define MAIN_INCLUDED_SessionImpl_h +#ifndef RT_WITHOUT_PRAGMA_ONCE +# pragma once +#endif + +#include "SessionWrap.h" +#include "ConsoleImpl.h" + +#ifdef RT_OS_WINDOWS +# include "win/resource.h" +#endif + +#if defined(RT_OS_WINDOWS) && !RT_MSC_PREREQ(RT_MSC_VER_VC140) +[threading(free)] +#endif +class ATL_NO_VTABLE Session : + public SessionWrap +#ifdef RT_OS_WINDOWS + , public ATL::CComCoClass +#endif +{ +public: + + DECLARE_CLASSFACTORY() + + // Do not use any ATL registry support. + //DECLARE_REGISTRY_RESOURCEID(IDR_VIRTUALBOX) + + DECLARE_NOT_AGGREGATABLE(Session) + + DECLARE_COMMON_CLASS_METHODS(Session) + + HRESULT FinalConstruct(); + void FinalRelease(); + + // public initializers/uninitializers only for internal purposes + HRESULT init(); + void uninit(); + +private: + + // Wrapped ISession properties + HRESULT getState(SessionState_T *aState); + HRESULT getType(SessionType_T *aType); + HRESULT getName(com::Utf8Str &aName); + HRESULT setName(const com::Utf8Str &aName); + HRESULT getMachine(ComPtr &aMachine); + HRESULT getConsole(ComPtr &aConsole); + + // Wrapped ISession methods + HRESULT unlockMachine(); + + // Wrapped IInternalSessionControl properties + HRESULT getPID(ULONG *aPid); + HRESULT getRemoteConsole(ComPtr &aRemoteConsole); + HRESULT getNominalState(MachineState_T *aNominalState); + + // Wrapped IInternalSessionControl methods +#ifndef VBOX_WITH_GENERIC_SESSION_WATCHER + HRESULT assignMachine(const ComPtr &aMachine, + LockType_T aLockType, + const com::Utf8Str &aTokenId); +#else + HRESULT assignMachine(const ComPtr &aMachine, + LockType_T aLockType, + const ComPtr &aToken); +#endif /* !VBOX_WITH_GENERIC_SESSION_WATCHER */ + HRESULT assignRemoteMachine(const ComPtr &aMachine, + const ComPtr &aConsole); + HRESULT updateMachineState(MachineState_T aMachineState); + HRESULT uninitialize(); + HRESULT onNetworkAdapterChange(const ComPtr &aNetworkAdapter, + BOOL aChangeAdapter); + HRESULT onAudioAdapterChange(const ComPtr &aAudioAdapter); + HRESULT onHostAudioDeviceChange(const ComPtr &aDevice, + BOOL aNew, AudioDeviceState_T aState, + const ComPtr &aErrInfo); + HRESULT onSerialPortChange(const ComPtr &aSerialPort); + HRESULT onParallelPortChange(const ComPtr &aParallelPort); + HRESULT onStorageControllerChange(const Guid &aMachineId, const com::Utf8Str& aControllerName); + HRESULT onMediumChange(const ComPtr &aMediumAttachment, + BOOL aForce); + HRESULT onStorageDeviceChange(const ComPtr &aMediumAttachment, + BOOL aRemove, + BOOL aSilent); + HRESULT onVMProcessPriorityChange(VMProcPriority_T priority); + HRESULT onClipboardModeChange(ClipboardMode_T aClipboardMode); + HRESULT onClipboardFileTransferModeChange(BOOL aEnabled); + HRESULT onDnDModeChange(DnDMode_T aDndMode); + HRESULT onCPUChange(ULONG aCpu, + BOOL aAdd); + HRESULT onCPUExecutionCapChange(ULONG aExecutionCap); + HRESULT onVRDEServerChange(BOOL aRestart); + HRESULT onRecordingChange(BOOL aEnable); + HRESULT onUSBControllerChange(); + HRESULT onSharedFolderChange(BOOL aGlobal); + HRESULT onGuestDebugControlChange(const ComPtr &aGuestDebugControl); + HRESULT onUSBDeviceAttach(const ComPtr &aDevice, + const ComPtr &aError, + ULONG aMaskedInterfaces, + const com::Utf8Str &aCaptureFilename); + HRESULT onUSBDeviceDetach(const com::Guid &aId, + const ComPtr &aError); + HRESULT onShowWindow(BOOL aCheck, + BOOL *aCanShow, + LONG64 *aWinId); + HRESULT onBandwidthGroupChange(const ComPtr &aBandwidthGroup); + HRESULT accessGuestProperty(const com::Utf8Str &aName, + const com::Utf8Str &aValue, + const com::Utf8Str &aFlags, + ULONG aAccessMode, + com::Utf8Str &aRetValue, + LONG64 *aRetTimestamp, + com::Utf8Str &aRetFlags); + HRESULT enumerateGuestProperties(const com::Utf8Str &aPatterns, + std::vector &aKeys, + std::vector &aValues, + std::vector &aTimestamps, + std::vector &aFlags); + HRESULT onlineMergeMedium(const ComPtr &aMediumAttachment, + ULONG aSourceIdx, + ULONG aTargetIdx, + const ComPtr &aProgress); + HRESULT reconfigureMediumAttachments(const std::vector > &aAttachments); + HRESULT enableVMMStatistics(BOOL aEnable); + HRESULT pauseWithReason(Reason_T aReason); + HRESULT resumeWithReason(Reason_T aReason); + HRESULT saveStateWithReason(Reason_T aReason, + const ComPtr &aProgress, + const ComPtr &aSnapshot, + const Utf8Str &aStateFilePath, + BOOL aPauseVM, + BOOL *aLeftPaused); + HRESULT cancelSaveStateWithReason(); + + + HRESULT i_unlockMachine(bool aFinalRelease, bool aFromServer, AutoWriteLock &aLockW); + + SessionState_T mState; + SessionType_T mType; + Utf8Str mName; + + ComPtr mControl; + +#ifndef VBOX_COM_INPROC_API_CLIENT + ComObjPtr mConsole; +#endif + + ComPtr mRemoteMachine; + ComPtr mRemoteConsole; + + ComPtr mVirtualBox; + + class ClientTokenHolder; + + ClientTokenHolder *mClientTokenHolder; +}; + +#endif /* !MAIN_INCLUDED_SessionImpl_h */ +/* vi: set tabstop=4 shiftwidth=4 expandtab: */ -- cgit v1.2.3