EventImpl.h revision c2590a722c15520a45551ed7dc02d4831fb1a48e
a7d389fbff436fb217a78d48fab17adcaf43dc54vboxsync * VirtualBox COM IEvent implementation
6bc1c8274566f065e18c252f709143511be5276cvboxsync * Copyright (C) 2010-2012 Oracle Corporation
a7d389fbff436fb217a78d48fab17adcaf43dc54vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
a7d389fbff436fb217a78d48fab17adcaf43dc54vboxsync * available from http://www.virtualbox.org. This file is free software;
a7d389fbff436fb217a78d48fab17adcaf43dc54vboxsync * you can redistribute it and/or modify it under the terms of the GNU
a7d389fbff436fb217a78d48fab17adcaf43dc54vboxsync * General Public License (GPL) as published by the Free Software
a7d389fbff436fb217a78d48fab17adcaf43dc54vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
a7d389fbff436fb217a78d48fab17adcaf43dc54vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
a7d389fbff436fb217a78d48fab17adcaf43dc54vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
e07acfb7f2dbb8bb40804024c79fd3139bdb3f24vboxsync VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(VBoxEvent, IEvent)
a7d389fbff436fb217a78d48fab17adcaf43dc54vboxsync // public initializer/uninitializer for internal purposes only
7d913420297c8662dd9523fbf927125b3ed48814vboxsync HRESULT init(IEventSource *aSource, VBoxEventType_T aType, BOOL aWaitable);
a7d389fbff436fb217a78d48fab17adcaf43dc54vboxsync // IEvent properties
7d913420297c8662dd9523fbf927125b3ed48814vboxsync STDMETHOD(COMGETTER(Type))(VBoxEventType_T *aType);
7d913420297c8662dd9523fbf927125b3ed48814vboxsync STDMETHOD(COMGETTER(Source))(IEventSource * *aSource);
a7d389fbff436fb217a78d48fab17adcaf43dc54vboxsync // IEvent methods
a7d389fbff436fb217a78d48fab17adcaf43dc54vboxsync STDMETHOD(WaitProcessed)(LONG aTimeout, BOOL *aResult);
e07acfb7f2dbb8bb40804024c79fd3139bdb3f24vboxsync VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(VBoxVetoEvent, IVetoEvent)
2c7402dd06f73977076fdbc86bb9f1c0c2be17f9vboxsync // public initializer/uninitializer for internal purposes only
7d913420297c8662dd9523fbf927125b3ed48814vboxsync HRESULT init(IEventSource *aSource, VBoxEventType_T aType);
1cee507a10df8208ebb4a36db7073b312dff343fvboxsync // IEvent properties
7d913420297c8662dd9523fbf927125b3ed48814vboxsync STDMETHOD(COMGETTER(Source))(IEventSource * *aSource)
1cee507a10df8208ebb4a36db7073b312dff343fvboxsync // IEvent methods
1cee507a10df8208ebb4a36db7073b312dff343fvboxsync STDMETHOD(WaitProcessed)(LONG aTimeout, BOOL *aResult)
1cee507a10df8208ebb4a36db7073b312dff343fvboxsync return VBoxEvent::WaitProcessed(aTimeout, aResult);
2c7402dd06f73977076fdbc86bb9f1c0c2be17f9vboxsync // IVetoEvent methods
2c7402dd06f73977076fdbc86bb9f1c0c2be17f9vboxsync STDMETHOD(GetVetos)(ComSafeArrayOut(BSTR, aVetos));
e07acfb7f2dbb8bb40804024c79fd3139bdb3f24vboxsync VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(EventSource, IEventSource)
a7d389fbff436fb217a78d48fab17adcaf43dc54vboxsync // public initializer/uninitializer for internal purposes only
a7d389fbff436fb217a78d48fab17adcaf43dc54vboxsync // IEventSource methods
7d913420297c8662dd9523fbf927125b3ed48814vboxsync STDMETHOD(CreateListener)(IEventListener **aListener);
7d913420297c8662dd9523fbf927125b3ed48814vboxsync STDMETHOD(CreateAggregator)(ComSafeArrayIn(IEventSource *, aSubordinates),
7d913420297c8662dd9523fbf927125b3ed48814vboxsync STDMETHOD(RegisterListener)(IEventListener *aListener,
7d913420297c8662dd9523fbf927125b3ed48814vboxsync STDMETHOD(UnregisterListener)(IEventListener *aListener);
7d913420297c8662dd9523fbf927125b3ed48814vboxsync STDMETHOD(FireEvent)(IEvent *aEvent, LONG aTimeout, BOOL *aProcessed);
7d913420297c8662dd9523fbf927125b3ed48814vboxsync STDMETHOD(GetEvent)(IEventListener *aListener, LONG aTimeout,
7d913420297c8662dd9523fbf927125b3ed48814vboxsync STDMETHOD(EventProcessed)(IEventListener *aListener, IEvent *aEvent);
7d913420297c8662dd9523fbf927125b3ed48814vboxsync * This function to be used with some care, as arguments order must match
7d913420297c8662dd9523fbf927125b3ed48814vboxsync * attribute declaration order event class and its superclasses up to
7d913420297c8662dd9523fbf927125b3ed48814vboxsync * IEvent. If unsure, consult implementation in generated VBoxEvents.cpp.
7d913420297c8662dd9523fbf927125b3ed48814vboxsync HRESULT init(IEventSource* aSource, VBoxEventType_T aType, ...);
7d913420297c8662dd9523fbf927125b3ed48814vboxsync * Function similar to the above, but assumes that init() for this type
7d913420297c8662dd9523fbf927125b3ed48814vboxsync * already called once, so no need to allocate memory, and only reinit
7d913420297c8662dd9523fbf927125b3ed48814vboxsync * fields. Assumes event is subtype of IReusableEvent, asserts otherwise.
7d913420297c8662dd9523fbf927125b3ed48814vboxsync int rc = mEventSource->FireEvent(mEvent, aTimeout, &fDelivered);
a7d389fbff436fb217a78d48fab17adcaf43dc54vboxsync#endif // ____H_EVENTIMPL