VirtualBox

Changeset 52442 in vbox


Ignore:
Timestamp:
Aug 21, 2014 4:03:15 PM (10 years ago)
Author:
vboxsync
Message:

Main: convert VirtualBoxClient and VRDEServerInfo to use wrappers

Location:
trunk/src/VBox/Main
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/include/ConsoleVRDPServer.h

    r51436 r52442  
    55
    66/*
    7  * Copyright (C) 2006-2012 Oracle Corporation
     7 * Copyright (C) 2006-2014 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    1919#define ____H_CONSOLEVRDPSERVER
    2020
     21#include "VRDEServerInfoWrap.h"
    2122#include "RemoteUSBBackend.h"
    2223#include "HGCM.h"
     
    364365
    365366class ATL_NO_VTABLE VRDEServerInfo :
    366     public VirtualBoxBase,
    367     VBOX_SCRIPTABLE_IMPL(IVRDEServerInfo)
     367    public VRDEServerInfoWrap
    368368{
    369369public:
    370 
    371     VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(VRDEServerInfo, IVRDEServerInfo)
    372 
    373370    DECLARE_NOT_AGGREGATABLE(VRDEServerInfo)
    374371
    375     DECLARE_PROTECT_FINAL_CONSTRUCT()
    376 
    377     BEGIN_COM_MAP(VRDEServerInfo)
    378         VBOX_DEFAULT_INTERFACE_ENTRIES(IVRDEServerInfo)
    379     END_COM_MAP()
    380 
    381     DECLARE_EMPTY_CTOR_DTOR (VRDEServerInfo)
     372    DECLARE_EMPTY_CTOR_DTOR(VRDEServerInfo)
    382373
    383374    HRESULT FinalConstruct();
     
    385376
    386377    /* Public initializer/uninitializer for internal purposes only. */
    387     HRESULT init (Console *aParent);
     378    HRESULT init(Console *aParent);
    388379    void uninit();
    389380
    390     /* IVRDEServerInfo properties */
    391     #define DECL_GETTER(_aType, _aName) STDMETHOD(COMGETTER(_aName)) (_aType *a##_aName)
    392         DECL_GETTER (BOOL,    Active);
    393         DECL_GETTER (LONG,    Port);
    394         DECL_GETTER (ULONG,   NumberOfClients);
    395         DECL_GETTER (LONG64,  BeginTime);
    396         DECL_GETTER (LONG64,  EndTime);
    397         DECL_GETTER (LONG64,  BytesSent);
    398         DECL_GETTER (LONG64,  BytesSentTotal);
    399         DECL_GETTER (LONG64,  BytesReceived);
    400         DECL_GETTER (LONG64,  BytesReceivedTotal);
    401         DECL_GETTER (BSTR,    User);
    402         DECL_GETTER (BSTR,    Domain);
    403         DECL_GETTER (BSTR,    ClientName);
    404         DECL_GETTER (BSTR,    ClientIP);
    405         DECL_GETTER (ULONG,   ClientVersion);
    406         DECL_GETTER (ULONG,   EncryptionStyle);
    407     #undef DECL_GETTER
    408 
    409381private:
     382    // wrapped IVRDEServerInfo properties
     383#define DECL_GETTER(_aType, _aName) virtual HRESULT get##_aName(_aType *a##_aName)
     384#define DECL_GETTER_REF(_aType, _aName) virtual HRESULT get##_aName(_aType &a##_aName)
     385    DECL_GETTER(BOOL, Active);
     386    DECL_GETTER(LONG, Port);
     387    DECL_GETTER(ULONG, NumberOfClients);
     388    DECL_GETTER(LONG64, BeginTime);
     389    DECL_GETTER(LONG64, EndTime);
     390    DECL_GETTER(LONG64, BytesSent);
     391    DECL_GETTER(LONG64, BytesSentTotal);
     392    DECL_GETTER(LONG64, BytesReceived);
     393    DECL_GETTER(LONG64, BytesReceivedTotal);
     394    DECL_GETTER_REF(com::Utf8Str, User);
     395    DECL_GETTER_REF(com::Utf8Str, Domain);
     396    DECL_GETTER_REF(com::Utf8Str, ClientName);
     397    DECL_GETTER_REF(com::Utf8Str, ClientIP);
     398    DECL_GETTER(ULONG, ClientVersion);
     399    DECL_GETTER(ULONG, EncryptionStyle);
     400#undef DECL_GETTER_REF
     401#undef DECL_GETTER
    410402
    411403    Console * const         mParent;
  • trunk/src/VBox/Main/include/VirtualBoxClientImpl.h

    r44970 r52442  
    66
    77/*
    8  * Copyright (C) 2010-2013 Oracle Corporation
     8 * Copyright (C) 2010-2014 Oracle Corporation
    99 *
    1010 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    2020#define ____H_VIRTUALBOXCLIENTIMPL
    2121
    22 #include "VirtualBoxBase.h"
     22#include "VirtualBoxClientWrap.h"
    2323#include "EventImpl.h"
    2424
     
    2828
    2929class ATL_NO_VTABLE VirtualBoxClient :
    30     public VirtualBoxBase,
    31     VBOX_SCRIPTABLE_IMPL(IVirtualBoxClient)
     30    public VirtualBoxClientWrap
    3231#ifdef RT_OS_WINDOWS
    3332    , public CComCoClass<VirtualBoxClient, &CLSID_VirtualBoxClient>
     
    3534{
    3635public:
    37 
    38     VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(VirtualBoxClient, IVirtualBoxClient)
    39 
    4036    DECLARE_CLASSFACTORY()
    4137
    4238    DECLARE_REGISTRY_RESOURCEID(IDR_VIRTUALBOX)
     39
    4340    DECLARE_NOT_AGGREGATABLE(VirtualBoxClient)
    44 
    45     DECLARE_PROTECT_FINAL_CONSTRUCT()
    46 
    47     BEGIN_COM_MAP(VirtualBoxClient)
    48         VBOX_DEFAULT_INTERFACE_ENTRIES(IVirtualBoxClient)
    49     END_COM_MAP()
    5041
    5142    HRESULT FinalConstruct();
     
    5647    void uninit();
    5748
    58     // IUSBDevice properties
    59     STDMETHOD(COMGETTER(VirtualBox))(IVirtualBox **aVirtualBox);
    60     STDMETHOD(COMGETTER(Session))(ISession **aSession);
    61     STDMETHOD(COMGETTER(EventSource))(IEventSource **aEventSource);
    62     STDMETHOD(CheckMachineError)(IMachine *aMachine);
     49private:
     50    // wrapped IVirtualBoxClient properties
     51    virtual HRESULT getVirtualBox(ComPtr<IVirtualBox> &aVirtualBox);
     52    virtual HRESULT getSession(ComPtr<ISession> &aSession);
     53    virtual HRESULT getEventSource(ComPtr<IEventSource> &aEventSource);
    6354
    64 private:
     55    // wrapped IVirtualBoxClient methods
     56    virtual HRESULT checkMachineError(const ComPtr<IMachine> &aMachine);
     57
    6558    /** Instance counter for simulating something similar to a singleton.
    6659     * Only the first instance will be a usable object, all additional
  • trunk/src/VBox/Main/src-client/ConsoleVRDPServer.cpp

    r52064 r52442  
    55
    66/*
    7  * Copyright (C) 2006-2013 Oracle Corporation
     7 * Copyright (C) 2006-2014 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    40824082
    40834083#define IMPL_GETTER_BOOL(_aType, _aName, _aIndex)                         \
    4084     STDMETHODIMP VRDEServerInfo::COMGETTER(_aName)(_aType *a##_aName)  \
     4084    HRESULT VRDEServerInfo::get##_aName(_aType *a##_aName)                \
    40854085    {                                                                     \
    4086         if (!a##_aName)                                                   \
    4087             return E_POINTER;                                             \
    4088                                                                           \
    4089         AutoCaller autoCaller(this);                                      \
    4090         if (FAILED(autoCaller.rc())) return autoCaller.rc();              \
    4091                                                                           \
    40924086        /* todo: Not sure if a AutoReadLock would be sufficient. */       \
    40934087        AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);                  \
     
    40964090        uint32_t cbOut = 0;                                               \
    40974091                                                                          \
    4098         mParent->i_consoleVRDPServer()->QueryInfo                           \
     4092        mParent->i_consoleVRDPServer()->QueryInfo                         \
    40994093            (_aIndex, &value, sizeof(value), &cbOut);                     \
    41004094                                                                          \
     
    41064100
    41074101#define IMPL_GETTER_SCALAR(_aType, _aName, _aIndex, _aValueMask)          \
    4108     STDMETHODIMP VRDEServerInfo::COMGETTER(_aName)(_aType *a##_aName)  \
     4102    HRESULT VRDEServerInfo::get##_aName(_aType *a##_aName)                \
    41094103    {                                                                     \
    4110         if (!a##_aName)                                                   \
    4111             return E_POINTER;                                             \
    4112                                                                           \
    4113         AutoCaller autoCaller(this);                                      \
    4114         if (FAILED(autoCaller.rc())) return autoCaller.rc();              \
    4115                                                                           \
    41164104        /* todo: Not sure if a AutoReadLock would be sufficient. */       \
    41174105        AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);                  \
     
    41204108        uint32_t cbOut = 0;                                               \
    41214109                                                                          \
    4122         mParent->i_consoleVRDPServer()->QueryInfo                           \
     4110        mParent->i_consoleVRDPServer()->QueryInfo                         \
    41234111            (_aIndex, &value, sizeof(value), &cbOut);                     \
    41244112                                                                          \
     
    41304118    extern void IMPL_GETTER_SCALAR_DUMMY(void)
    41314119
    4132 #define IMPL_GETTER_BSTR(_aType, _aName, _aIndex)                         \
    4133     STDMETHODIMP VRDEServerInfo::COMGETTER(_aName)(_aType *a##_aName)  \
     4120#define IMPL_GETTER_UTF8STR(_aType, _aName, _aIndex)                      \
     4121    HRESULT VRDEServerInfo::get##_aName(_aType &a##_aName)                \
    41344122    {                                                                     \
    4135         if (!a##_aName)                                                   \
    4136             return E_POINTER;                                             \
    4137                                                                           \
    4138         AutoCaller autoCaller(this);                                      \
    4139         if (FAILED(autoCaller.rc())) return autoCaller.rc();              \
    4140                                                                           \
    41414123        /* todo: Not sure if a AutoReadLock would be sufficient. */       \
    41424124        AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);                  \
     
    41444126        uint32_t cbOut = 0;                                               \
    41454127                                                                          \
    4146         mParent->i_consoleVRDPServer()->QueryInfo                           \
     4128        mParent->i_consoleVRDPServer()->QueryInfo                         \
    41474129            (_aIndex, NULL, 0, &cbOut);                                   \
    41484130                                                                          \
    41494131        if (cbOut == 0)                                                   \
    41504132        {                                                                 \
    4151             Bstr str("");                                                 \
    4152             str.cloneTo(a##_aName);                                       \
     4133            a##_aName = Utf8Str::Empty;                                   \
    41534134            return S_OK;                                                  \
    41544135        }                                                                 \
     
    41644145        }                                                                 \
    41654146                                                                          \
    4166         mParent->i_consoleVRDPServer()->QueryInfo                           \
     4147        mParent->i_consoleVRDPServer()->QueryInfo                         \
    41674148            (_aIndex, pchBuffer, cbOut, &cbOut);                          \
    41684149                                                                          \
    4169         Bstr str(pchBuffer);                                              \
    4170                                                                           \
    4171         str.cloneTo(a##_aName);                                           \
     4150        a##_aName = pchBuffer;                                            \
    41724151                                                                          \
    41734152        RTMemTmpFree(pchBuffer);                                          \
     
    41864165IMPL_GETTER_SCALAR (LONG64,  BytesReceived,      VRDE_QI_BYTES_RECEIVED,        INT64_MAX);
    41874166IMPL_GETTER_SCALAR (LONG64,  BytesReceivedTotal, VRDE_QI_BYTES_RECEIVED_TOTAL,  INT64_MAX);
    4188 IMPL_GETTER_BSTR   (BSTR,    User,               VRDE_QI_USER);
    4189 IMPL_GETTER_BSTR   (BSTR,    Domain,             VRDE_QI_DOMAIN);
    4190 IMPL_GETTER_BSTR   (BSTR,    ClientName,         VRDE_QI_CLIENT_NAME);
    4191 IMPL_GETTER_BSTR   (BSTR,    ClientIP,           VRDE_QI_CLIENT_IP);
     4167IMPL_GETTER_UTF8STR(Utf8Str, User,               VRDE_QI_USER);
     4168IMPL_GETTER_UTF8STR(Utf8Str, Domain,             VRDE_QI_DOMAIN);
     4169IMPL_GETTER_UTF8STR(Utf8Str, ClientName,         VRDE_QI_CLIENT_NAME);
     4170IMPL_GETTER_UTF8STR(Utf8Str, ClientIP,           VRDE_QI_CLIENT_IP);
    41924171IMPL_GETTER_SCALAR (ULONG,   ClientVersion,      VRDE_QI_CLIENT_VERSION,        0);
    41934172IMPL_GETTER_SCALAR (ULONG,   EncryptionStyle,    VRDE_QI_ENCRYPTION_STYLE,      0);
    41944173
    4195 #undef IMPL_GETTER_BSTR
     4174#undef IMPL_GETTER_UTF8STR
    41964175#undef IMPL_GETTER_SCALAR
    41974176#undef IMPL_GETTER_BOOL
  • trunk/src/VBox/Main/src-client/VirtualBoxClientImpl.cpp

    r50544 r52442  
    55
    66/*
    7  * Copyright (C) 2010-2013 Oracle Corporation
     7 * Copyright (C) 2010-2014 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    148148 * @param   aVirtualBox Address of result variable.
    149149 */
    150 STDMETHODIMP VirtualBoxClient::COMGETTER(VirtualBox)(IVirtualBox **aVirtualBox)
    151 {
    152     CheckComArgOutPointerValid(aVirtualBox);
    153 
    154     AutoCaller autoCaller(this);
    155     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    156 
     150HRESULT VirtualBoxClient::getVirtualBox(ComPtr<IVirtualBox> &aVirtualBox)
     151{
    157152    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    158     mData.m_pVirtualBox.queryInterfaceTo(aVirtualBox);
     153    aVirtualBox = mData.m_pVirtualBox;
    159154    return S_OK;
    160155}
     
    166161 * @param   aSession    Address of result variable.
    167162 */
    168 STDMETHODIMP VirtualBoxClient::COMGETTER(Session)(ISession **aSession)
    169 {
    170     HRESULT rc;
    171     CheckComArgOutPointerValid(aSession);
    172 
    173     AutoCaller autoCaller(this);
    174     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    175 
     163HRESULT VirtualBoxClient::getSession(ComPtr<ISession> &aSession)
     164{
    176165    /* this is not stored in this object, no need to lock */
    177166    ComPtr<ISession> pSession;
    178     rc = pSession.createInprocObject(CLSID_Session);
     167    HRESULT rc = pSession.createInprocObject(CLSID_Session);
    179168    if (SUCCEEDED(rc))
    180         pSession.queryInterfaceTo(aSession);
    181 
     169        aSession = pSession;
    182170    return rc;
    183171}
     
    189177 * @param   aEventSource    Address of result variable.
    190178 */
    191 STDMETHODIMP VirtualBoxClient::COMGETTER(EventSource)(IEventSource **aEventSource)
    192 {
    193     CheckComArgOutPointerValid(aEventSource);
    194 
    195     AutoCaller autoCaller(this);
    196     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    197 
     179HRESULT VirtualBoxClient::getEventSource(ComPtr<IEventSource> &aEventSource)
     180{
    198181    /* this is const, no need to lock */
    199     mData.m_pEventSource.queryInterfaceTo(aEventSource);
    200 
    201     return mData.m_pEventSource.isNull() ? E_FAIL : S_OK;
    202 }
     182    aEventSource = mData.m_pEventSource;
     183    return aEventSource.isNull() ? E_FAIL : S_OK;
     184}
     185
     186// IVirtualBoxClient methods
     187/////////////////////////////////////////////////////////////////////////////
    203188
    204189/**
     
    208193 * @param   aMachine    Machine object to check.
    209194 */
    210 STDMETHODIMP VirtualBoxClient::CheckMachineError(IMachine *aMachine)
    211 {
    212     HRESULT rc;
    213     CheckComArgNotNull(aMachine);
    214 
     195HRESULT VirtualBoxClient::checkMachineError(const ComPtr<IMachine> &aMachine)
     196{
    215197    BOOL fAccessible = FALSE;
    216     rc = aMachine->COMGETTER(Accessible)(&fAccessible);
     198    HRESULT rc = aMachine->COMGETTER(Accessible)(&fAccessible);
    217199    if (FAILED(rc))
    218200        return setError(rc, tr("Could not check the accessibility status of the VM"));
  • trunk/src/VBox/Main/src-client/xpcom/module.cpp

    r52400 r52442  
    2929#include "VirtualBox_XPCOM.h"
    3030
    31 #include "AdditionsFacilityImpl.h"
    32 #include "ConsoleImpl.h"
    33 #include "ConsoleVRDPServer.h"
    34 #include "DisplayImpl.h"
    35 #ifdef VBOX_WITH_EXTPACK
    36 # include "ExtPackManagerImpl.h"
    37 #endif
    38 #include "GuestImpl.h"
    39 #ifdef VBOX_WITH_GUEST_CONTROL
    40 # include "GuestDirectoryImpl.h"
    41 # include "GuestFileImpl.h"
    42 # include "GuestFsObjInfoImpl.h"
    43 # include "GuestProcessImpl.h"
    44 # include "GuestSessionImpl.h"
    45 #endif
    46 #include "KeyboardImpl.h"
    47 #include "MachineDebuggerImpl.h"
    48 #include "MouseImpl.h"
    49 #include "NATEngineImpl.h"
    50 #include "NetworkAdapterImpl.h"
    51 #include "ProgressImpl.h"
     31#include "SessionImpl.h"
     32#include "VirtualBoxClientImpl.h"
    5233#include "RemoteUSBDeviceImpl.h"
    53 #include "SessionImpl.h"
    54 #include "SharedFolderImpl.h"
    5534#include "USBDeviceImpl.h"
    56 #include "VirtualBoxClientImpl.h"
    5735
    5836#include "Logging.h"
     
    6038// XPCOM glue code unfolding
    6139
    62 NS_DECL_CLASSINFO(VirtualBoxClient)
    63 NS_IMPL_THREADSAFE_ISUPPORTS1_CI(VirtualBoxClient, IVirtualBoxClient)
    64 
    6540#ifndef VBOX_COM_INPROC_API_CLIENT
    6641NS_DECL_CLASSINFO(RemoteUSBDevice)
    6742NS_IMPL_THREADSAFE_ISUPPORTS2_CI(RemoteUSBDevice, IHostUSBDevice, IUSBDevice)
    68 NS_DECL_CLASSINFO(VRDEServerInfo)
    69 NS_IMPL_THREADSAFE_ISUPPORTS1_CI(VRDEServerInfo, IVRDEServerInfo)
    70  #ifdef VBOX_WITH_EXTPACK
    71 // deliberately omit ExtPackFile as it's unusable in the client context
    72 // NS_DECL_CLASSINFO(ExtPackFile)
    73 // NS_IMPL_THREADSAFE_ISUPPORTS2_CI(ExtPackFile, IExtPackFile, IExtPackBase)
    74  #endif
    75 
    7643#endif /* VBOX_COM_INPROC_API_CLIENT */
    7744
     
    8350NS_DECL_CI_INTERFACE_GETTER(SessionWrap)
    8451extern nsIClassInfo *NS_CLASSINFO_NAME(SessionWrap);
     52
     53/*
     54 * Declare extern variables here to tell the compiler that
     55 * NS_DECL_CLASSINFO(VirtualBoxClientWrap)
     56 * already exists in the VBoxAPIWrap library.
     57 */
     58NS_DECL_CI_INTERFACE_GETTER(VirtualBoxClientWrap)
     59extern nsIClassInfo *NS_CLASSINFO_NAME(VirtualBoxClientWrap);
    8560
    8661/**
     
    166141        NULL, // deregistration function
    167142        NULL, // destructor function
    168         NS_CI_INTERFACE_GETTER_NAME(VirtualBoxClient), // interfaces function
     143        NS_CI_INTERFACE_GETTER_NAME(VirtualBoxClientWrap), // interfaces function
    169144        NULL, // language helper
    170         &NS_CLASSINFO_NAME(VirtualBoxClient) // global class info & flags
     145        &NS_CLASSINFO_NAME(VirtualBoxClientWrap) // global class info & flags
    171146    },
    172147};
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette