VirtualBox

Ignore:
Timestamp:
Aug 17, 2009 5:37:41 PM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
51179
Message:

Main: generic callback wrappers mechanism

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/idl/VirtualBox.xidl

    r22214 r22305  
    127127#define NS_IMPL_THREADSAFE_QUERY_INTERFACE1_CI  NS_IMPL_QUERY_INTERFACE1_CI
    128128#define NS_IMPL_THREADSAFE_QUERY_INTERFACE2_CI  NS_IMPL_QUERY_INTERFACE2_CI
     129#define NS_IMPL_THREADSAFE_QUERY_INTERFACE3_CI  NS_IMPL_QUERY_INTERFACE3_CI
    129130
    130131#ifndef NS_IMPL_THREADSAFE_ISUPPORTS1_CI
     
    142143   NS_IMPL_THREADSAFE_QUERY_INTERFACE2_CI(_class, _i1, _i2)                   \
    143144   NS_IMPL_CI_INTERFACE_GETTER2(_class, _i1, _i2)
     145#endif
     146
     147#ifndef NS_IMPL_THREADSAFE_ISUPPORTS3_CI
     148# define NS_IMPL_THREADSAFE_ISUPPORTS3_CI(_class, _i1, _i2, _i3)              \
     149   NS_IMPL_THREADSAFE_ADDREF(_class)                                          \
     150   NS_IMPL_THREADSAFE_RELEASE(_class)                                         \
     151   NS_IMPL_THREADSAFE_QUERY_INTERFACE3_CI(_class, _i1, _i2, _i3)              \
     152   NS_IMPL_CI_INTERFACE_GETTER3(_class, _i1, _i2, _i3)
    144153#endif
    145154
     
    164173#endif
    165174
     175#ifndef NS_IMPL_QUERY_INTERFACE3_AMBIGUOUS_CI
     176# define NS_IMPL_QUERY_INTERFACE3_AMBIGUOUS_CI(_class, _i1, _ic1,             \
     177                                               _i2, _ic2, _i3, _ic3)          \
     178   NS_INTERFACE_MAP_BEGIN(_class)                                             \
     179    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(_i1, _ic1)                               \
     180    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(_i2, _ic2)                               \
     181    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(_i3, _ic3)                               \
     182    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _ic1)                       \
     183    NS_IMPL_QUERY_CLASSINFO(_class)                                           \
     184   NS_INTERFACE_MAP_END
     185#endif
     186
    166187#define NS_IMPL_THREADSAFE_QUERY_INTERFACE1_AMBIGUOUS_CI NS_IMPL_QUERY_INTERFACE1_AMBIGUOUS_CI
    167188#define NS_IMPL_THREADSAFE_QUERY_INTERFACE2_AMBIGUOUS_CI NS_IMPL_QUERY_INTERFACE2_AMBIGUOUS_CI
     189#define NS_IMPL_THREADSAFE_QUERY_INTERFACE3_AMBIGUOUS_CI NS_IMPL_QUERY_INTERFACE3_AMBIGUOUS_CI
    168190
    169191#ifndef NS_IMPL_THREADSAFE_ISUPPORTS1_AMBIGUOUS_CI
     
    184206   NS_IMPL_CI_INTERFACE_GETTER2(_class, _i1, _i2)
    185207#endif
     208
     209#ifndef NS_IMPL_THREADSAFE_ISUPPORTS3_AMBIGUOUS_CI
     210# define NS_IMPL_THREADSAFE_ISUPPORTS3_AMBIGUOUS_CI(_class, _i1, _ic1,        \
     211                                                     _i2, _ic2, _i3, _ic3)    \
     212   NS_IMPL_THREADSAFE_ADDREF(_class)                                          \
     213   NS_IMPL_THREADSAFE_RELEASE(_class)                                         \
     214   NS_IMPL_THREADSAFE_QUERY_INTERFACE3_AMBIGUOUS_CI(_class, _i1, _ic1,        \
     215                                                    _i2, _ic2, _i3, _ic3)     \
     216   NS_IMPL_CI_INTERFACE_GETTER3(_class, _i1, _i2, _i3)
     217#endif
     218
    186219  </cpp>
    187220</if>
     
    10421075  </interface>
    10431076
     1077  <interface
     1078     name="ILocalOwner" extends="$dispatched"
     1079     uuid="308ff42a-dc45-49d4-a950-b1eee5e00bb5" wsmap="suppress"
     1080     >
     1081    <desc>
     1082      The ILocalOwner interface allows to provide custom implementation
     1083      of VirtualBox interfaces, not being fully remote-aware classes by themselved.
     1084      Most importnat usecase for this interface is callbacks implementation.
     1085    </desc>
     1086    <method name="setLocalObject">
     1087      <desc>
     1088        Set local object.
     1089      </desc>
     1090      <param name="object" type="$unknown" dir="in">
     1091        <desc>Local object, to forward requests to.
     1092          If null, clears currently set local object(s).</desc>
     1093      </param>
     1094    </method>
     1095  </interface>
    10441096
    10451097  <!--
     
    10531105     wsmap="suppress"
    10541106     >
     1107
    10551108    <method name="onMachineStateChange">
    10561109      <desc>
     
    1308913142
    1309013143  <module name="VBoxC" context="InprocServer" threadingModel="Free">
    13091     <class name="Session" uuid="3C02F46D-C9D2-4f11-A384-53F0CF917214"
     13144    <class name="Session" uuid="3C02F46D-C9D2-4F11-A384-53F0CF917214"
    1309213145           namespace="virtualbox.org">
    1309313146      <interface name="ISession" default="yes"/>
    1309413147    </class>
     13148    <class name="VirtualBoxCallback" uuid="49EE8561-5563-4715-B18C-A4B1A490DAFE"
     13149           namespace="virtualbox.org">
     13150      <interface name="IVirtualBoxCallback" default="yes"/>
     13151      <interface name="ILocalOwner"/>
     13152    </class>
    1309513153  </module>
    1309613154
Note: See TracChangeset for help on using the changeset viewer.

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