SessionImpl.h revision 2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7
6f3e57ac9d0b054c3169579f3422080b8ba10105mx/** @file
47693af92e50a1ad81825eb01b7157a211269613mx * VBox Client Session COM Class definition
47693af92e50a1ad81825eb01b7157a211269613mx */
47693af92e50a1ad81825eb01b7157a211269613mx
47693af92e50a1ad81825eb01b7157a211269613mx/*
47693af92e50a1ad81825eb01b7157a211269613mx * Copyright (C) 2006-2014 Oracle Corporation
47693af92e50a1ad81825eb01b7157a211269613mx *
47693af92e50a1ad81825eb01b7157a211269613mx * This file is part of VirtualBox Open Source Edition (OSE), as
47693af92e50a1ad81825eb01b7157a211269613mx * available from http://www.virtualbox.org. This file is free software;
47693af92e50a1ad81825eb01b7157a211269613mx * you can redistribute it and/or modify it under the terms of the GNU
47693af92e50a1ad81825eb01b7157a211269613mx * General Public License (GPL) as published by the Free Software
47693af92e50a1ad81825eb01b7157a211269613mx * Foundation, in version 2 as it comes in the "COPYING" file of the
47693af92e50a1ad81825eb01b7157a211269613mx * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
47693af92e50a1ad81825eb01b7157a211269613mx * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
47693af92e50a1ad81825eb01b7157a211269613mx */
47693af92e50a1ad81825eb01b7157a211269613mx
47693af92e50a1ad81825eb01b7157a211269613mx#ifndef ____H_SESSIONIMPL
47693af92e50a1ad81825eb01b7157a211269613mx#define ____H_SESSIONIMPL
47693af92e50a1ad81825eb01b7157a211269613mx
6f3e57ac9d0b054c3169579f3422080b8ba10105mx#include "SessionWrap.h"
6f3e57ac9d0b054c3169579f3422080b8ba10105mx#include "ConsoleImpl.h"
6f3e57ac9d0b054c3169579f3422080b8ba10105mx
d635b452b5b58e50f0c67983f4a57a04deefce77Winson Wang - Sun Microsystems - Beijing China#ifdef RT_OS_WINDOWS
47693af92e50a1ad81825eb01b7157a211269613mx# include "win/resource.h"
6f3e57ac9d0b054c3169579f3422080b8ba10105mx#endif
6f3e57ac9d0b054c3169579f3422080b8ba10105mx
6f3e57ac9d0b054c3169579f3422080b8ba10105mx#ifdef RT_OS_WINDOWS
51fc88a818087605a0e5f11eddb8b66576f72c23Winson Wang - Sun Microsystems - Beijing China[threading(free)]
51fc88a818087605a0e5f11eddb8b66576f72c23Winson Wang - Sun Microsystems - Beijing China#endif
6f3e57ac9d0b054c3169579f3422080b8ba10105mxclass ATL_NO_VTABLE Session :
6f3e57ac9d0b054c3169579f3422080b8ba10105mx public SessionWrap
6f3e57ac9d0b054c3169579f3422080b8ba10105mx#ifdef RT_OS_WINDOWS
6f3e57ac9d0b054c3169579f3422080b8ba10105mx , public CComCoClass<Session, &CLSID_Session>
6f3e57ac9d0b054c3169579f3422080b8ba10105mx#endif
6f3e57ac9d0b054c3169579f3422080b8ba10105mx{
6f3e57ac9d0b054c3169579f3422080b8ba10105mxpublic:
6f3e57ac9d0b054c3169579f3422080b8ba10105mx
6f3e57ac9d0b054c3169579f3422080b8ba10105mx DECLARE_CLASSFACTORY()
6f3e57ac9d0b054c3169579f3422080b8ba10105mx
6f3e57ac9d0b054c3169579f3422080b8ba10105mx DECLARE_REGISTRY_RESOURCEID(IDR_VIRTUALBOX)
6f3e57ac9d0b054c3169579f3422080b8ba10105mx
6f3e57ac9d0b054c3169579f3422080b8ba10105mx DECLARE_NOT_AGGREGATABLE(Session)
6f3e57ac9d0b054c3169579f3422080b8ba10105mx
6f3e57ac9d0b054c3169579f3422080b8ba10105mx DECLARE_EMPTY_CTOR_DTOR(Session)
6f3e57ac9d0b054c3169579f3422080b8ba10105mx
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT FinalConstruct();
6f3e57ac9d0b054c3169579f3422080b8ba10105mx void FinalRelease();
6f3e57ac9d0b054c3169579f3422080b8ba10105mx
6f3e57ac9d0b054c3169579f3422080b8ba10105mx // public initializers/uninitializers only for internal purposes
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT init();
6f3e57ac9d0b054c3169579f3422080b8ba10105mx void uninit();
6f3e57ac9d0b054c3169579f3422080b8ba10105mx
6f3e57ac9d0b054c3169579f3422080b8ba10105mxprivate:
6f3e57ac9d0b054c3169579f3422080b8ba10105mx
6f3e57ac9d0b054c3169579f3422080b8ba10105mx // Wrapped Isession properties
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT getState(SessionState_T *aState);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT getType(SessionType_T *aType);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT getMachine(ComPtr<IMachine> &aMachine);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT getConsole(ComPtr<IConsole> &aConsole);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx
6f3e57ac9d0b054c3169579f3422080b8ba10105mx // Wrapped Isession methods
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT unlockMachine();
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT getPID(ULONG *aPid);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT getRemoteConsole(ComPtr<IConsole> &aConsole);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx#ifndef VBOX_WITH_GENERIC_SESSION_WATCHER
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT assignMachine(const ComPtr<IMachine> &aMachine,
6f3e57ac9d0b054c3169579f3422080b8ba10105mx LockType_T aLockType,
6f3e57ac9d0b054c3169579f3422080b8ba10105mx const com::Utf8Str &aTokenId);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx#else
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT assignMachine(const ComPtr<IMachine> &aMachine,
6f3e57ac9d0b054c3169579f3422080b8ba10105mx LockType_T aLockType,
6f3e57ac9d0b054c3169579f3422080b8ba10105mx const ComPtr<IToken> &aToken);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx#endif /* !VBOX_WITH_GENERIC_SESSION_WATCHER */
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT assignRemoteMachine(const ComPtr<IMachine> &aMachine,
6f3e57ac9d0b054c3169579f3422080b8ba10105mx const ComPtr<IConsole> &aConsole);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT updateMachineState(MachineState_T aMachineState);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT uninitialize();
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT onNetworkAdapterChange(const ComPtr<INetworkAdapter> &aNetworkAdapter,
6f3e57ac9d0b054c3169579f3422080b8ba10105mx BOOL aChangeAdapter);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT onSerialPortChange(const ComPtr<ISerialPort> &aSerialPort);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT onParallelPortChange(const ComPtr<IParallelPort> &aParallelPort);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT onStorageControllerChange();
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT onMediumChange(const ComPtr<IMediumAttachment> &aMediumAttachment,
6f3e57ac9d0b054c3169579f3422080b8ba10105mx BOOL aForce);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT onStorageDeviceChange(const ComPtr<IMediumAttachment> &aMediumAttachment,
6f3e57ac9d0b054c3169579f3422080b8ba10105mx BOOL aRemove,
6f3e57ac9d0b054c3169579f3422080b8ba10105mx BOOL aSilent);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT onClipboardModeChange(ClipboardMode_T aClipboardMode);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT onDnDModeChange(DnDMode_T aDndMode);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT onCPUChange(ULONG aCpu,
6f3e57ac9d0b054c3169579f3422080b8ba10105mx BOOL aAdd);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT onCPUExecutionCapChange(ULONG aExecutionCap);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT onVRDEServerChange(BOOL aRestart);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT onVideoCaptureChange();
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT onUSBControllerChange();
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT onSharedFolderChange(BOOL aGlobal);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT onUSBDeviceAttach(const ComPtr<IUSBDevice> &aDevice,
6f3e57ac9d0b054c3169579f3422080b8ba10105mx const ComPtr<IVirtualBoxErrorInfo> &aError,
6f3e57ac9d0b054c3169579f3422080b8ba10105mx ULONG aMaskedInterfaces);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT onUSBDeviceDetach(const com::Guid &aId,
6f3e57ac9d0b054c3169579f3422080b8ba10105mx const ComPtr<IVirtualBoxErrorInfo> &aError);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT onShowWindow(BOOL aCheck,
6f3e57ac9d0b054c3169579f3422080b8ba10105mx BOOL *aCanShow,
6f3e57ac9d0b054c3169579f3422080b8ba10105mx LONG64 *aWinId);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT onBandwidthGroupChange(const ComPtr<IBandwidthGroup> &aBandwidthGroup);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT accessGuestProperty(const com::Utf8Str &aName,
6f3e57ac9d0b054c3169579f3422080b8ba10105mx const com::Utf8Str &aValue,
6f3e57ac9d0b054c3169579f3422080b8ba10105mx const com::Utf8Str &aFlags,
6f3e57ac9d0b054c3169579f3422080b8ba10105mx BOOL aIsSetter,
6f3e57ac9d0b054c3169579f3422080b8ba10105mx com::Utf8Str &aRetValue,
6f3e57ac9d0b054c3169579f3422080b8ba10105mx LONG64 *aRetTimestamp,
6f3e57ac9d0b054c3169579f3422080b8ba10105mx com::Utf8Str &aRetFlags);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT enumerateGuestProperties(const com::Utf8Str &aPatterns,
6f3e57ac9d0b054c3169579f3422080b8ba10105mx std::vector<com::Utf8Str> &aKeys,
6f3e57ac9d0b054c3169579f3422080b8ba10105mx std::vector<com::Utf8Str> &aValues,
6f3e57ac9d0b054c3169579f3422080b8ba10105mx std::vector<LONG64> &aTimestamps,
6f3e57ac9d0b054c3169579f3422080b8ba10105mx std::vector<com::Utf8Str> &aFlags);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT onlineMergeMedium(const ComPtr<IMediumAttachment> &aMediumAttachment,
6f3e57ac9d0b054c3169579f3422080b8ba10105mx ULONG aSourceIdx,
6f3e57ac9d0b054c3169579f3422080b8ba10105mx ULONG aTargetIdx,
6f3e57ac9d0b054c3169579f3422080b8ba10105mx const ComPtr<IProgress> &aProgress);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT enableVMMStatistics(BOOL aEnable);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT pauseWithReason(Reason_T aReason);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT resumeWithReason(Reason_T aReason);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT saveStateWithReason(Reason_T aReason,
6f3e57ac9d0b054c3169579f3422080b8ba10105mx ComPtr<IProgress> &aProgress);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx HRESULT unlockMachine(bool aFinalRelease, bool aFromServer);
6f3e57ac9d0b054c3169579f3422080b8ba10105mx
6f3e57ac9d0b054c3169579f3422080b8ba10105mx SessionState_T mState;
6f3e57ac9d0b054c3169579f3422080b8ba10105mx SessionType_T mType;
6f3e57ac9d0b054c3169579f3422080b8ba10105mx
6f3e57ac9d0b054c3169579f3422080b8ba10105mx ComPtr<IInternalMachineControl> mControl;
6f3e57ac9d0b054c3169579f3422080b8ba10105mx
6f3e57ac9d0b054c3169579f3422080b8ba10105mx#ifndef VBOX_COM_INPROC_API_CLIENT
6f3e57ac9d0b054c3169579f3422080b8ba10105mx ComObjPtr<Console> mConsole;
6f3e57ac9d0b054c3169579f3422080b8ba10105mx#endif
6f3e57ac9d0b054c3169579f3422080b8ba10105mx
6f3e57ac9d0b054c3169579f3422080b8ba10105mx ComPtr<IMachine> mRemoteMachine;
6f3e57ac9d0b054c3169579f3422080b8ba10105mx ComPtr<IConsole> mRemoteConsole;
6f3e57ac9d0b054c3169579f3422080b8ba10105mx
6f3e57ac9d0b054c3169579f3422080b8ba10105mx ComPtr<IVirtualBox> mVirtualBox;
6f3e57ac9d0b054c3169579f3422080b8ba10105mx
6f3e57ac9d0b054c3169579f3422080b8ba10105mx class ClientTokenHolder;
6f3e57ac9d0b054c3169579f3422080b8ba10105mx
6f3e57ac9d0b054c3169579f3422080b8ba10105mx ClientTokenHolder *mClientTokenHolder;
6f3e57ac9d0b054c3169579f3422080b8ba10105mx};
6f3e57ac9d0b054c3169579f3422080b8ba10105mx
6f3e57ac9d0b054c3169579f3422080b8ba10105mx#endif // !____H_SESSIONIMPL
6f3e57ac9d0b054c3169579f3422080b8ba10105mx/* vi: set tabstop=4 shiftwidth=4 expandtab: */
6f3e57ac9d0b054c3169579f3422080b8ba10105mx