VirtualBox

Changeset 30963 in vbox


Ignore:
Timestamp:
Jul 21, 2010 1:46:23 PM (15 years ago)
Author:
vboxsync
Message:

SDKRef: move IEvent documentation from SDKRef source to IEvent description in XIDL; fix lots of broken links

File:
1 edited

Legend:

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

    r30956 r30963  
    679679        The machine is about to be teleported to a different host or process.
    680680        It is possible to pause a machine in this state, but it will go to the
    681         <link to="MachineState::PausedTeleporting"/> state and it will not be
     681        @c TeleportingPausedVM state and it will not be
    682682        possible to resume it again unless the teleportation fails.
    683683      </desc>
     
    688688        some of the runtime configuration options are inaccessible.  Also, if
    689689        paused while in this state it will transition to
    690         <link to="MachineState::Saving"/> and it will not be resume the
     690        @c Saving and it will not be resume the
    691691        execution until the snapshot operation has completed.
    692692      </desc>
     
    720720        The machine is being teleported to another host or process, but it is
    721721        not running.  This is the paused variant of the
    722         <link to="MachineState::Teleporting"/> state.
     722        @c state.
    723723      </desc>
    724724    </const>
     
    22322232        <note>
    22332233          On success, the
    2234           <link to="IExtraDataChanged"/> notification
     2234          <link to="IExtraDataChangedEvent"/> notification
    22352235          is called to inform all registered listeners about a successful data
    22362236          change.
     
    39403940        The only possible action you can perform on an inaccessible
    39413941        machine is to unregister it using the
    3942         <link to="#unregisterMachine"/> call (or, to check
     3942        <link to="IMachine::unregister"/> call (or, to check
    39433943        for the accessibility state once more by querying this
    39443944        property).
     
    42114211          by <link to="IVirtualBox::openMachine"/> but not
    42124212          yet registered, or on unregistered machines after calling
    4213           <link to="#unregisterMachine"/>. For all other
     4213          <link to="IMachine::unregister"/>. For all other
    42144214          cases, the settings can never be modified.
    42154215        </note>
     
    42894289        Current snapshot of this machine. This is @c null if the machine
    42904290        currently has no snapshots. If it is not @c null, then it was
    4291         set by one of <link to="Console::takeSnapshot" />,
    4292         <link to="Console::deleteSnapshot" />
    4293         or <link to="Console::restoreSnapshot" />, depending on which
     4291        set by one of <link to="IConsole::takeSnapshot" />,
     4292        <link to="IConsole::deleteSnapshot" />
     4293        or <link to="IConsole::restoreSnapshot" />, depending on which
    42944294        was called last. See <link to="ISnapshot"/> for details.
    42954295      </desc>
     
    45044504        This method is intended for managing storage devices in general (it works
    45054505        for both fixed and removable media). For storage devices supporting removable
    4506         media (such as DVDs and floppies), you can also use <link to="IMedium::mountMedium"/>
     4506        media (such as DVDs and floppies), you can also use <link to="IMachine::mountMedium"/>
    45074507        for changing the media while the machine is running.
    45084508
     
    51705170          created by <link to="IVirtualBox::createMachine"/> but not
    51715171          yet registered, or on unregistered machines after calling
    5172           <link to="#unregisterMachine"/>.
     5172          <link to="IMachine::unregister"/>.
    51735173        </note>
    51745174
     
    51975197          opened by <link to="IVirtualBox::openMachine"/> but not
    51985198          yet registered, or on unregistered machines after calling
    5199           <link to="#unregisterMachine"/>.
     5199          <link to="IMachine::unregister"/>.
    52005200        </note>
    52015201
     
    52715271          opened by <link to="IVirtualBox::openMachine"/> but not
    52725272          yet registered, or on unregistered machines after calling
    5273           <link to="#unregisterMachine"/>.
     5273          <link to="IMachine::unregister"/>.
    52745274        </note>
    52755275        <note>
     
    70887088      <param name="name" type="wstring" dir="in">
    70897089        <desc>
    7090           Filter name. See <link to="IHostUSBDeviceFilter::name"/>
    7091           for more info.
     7090          Filter name. See <link to="IUSBDeviceFilter::name"/> for more information.
    70927091        </desc>
    70937092      </param>
     
    74737472
    74747473        The list of supported medium formats may be obtained by the
    7475         <link  to="#mediaFormats"/> call. Note that the default medium
     7474        <link  to="#mediumFormats"/> call. Note that the default medium
    74767475        format must have a capability to create differencing media;
    74777476        otherwise operations that create media implicitly may fail
     
    74877486
    74887487        <see>
    7489           <link to="#mediaFormats"/>,
     7488          <link to="#mediumFormats"/>,
    74907489          <link to="IMediumFormat::id"/>,
    74917490          <link to="IVirtualBox::createHardDisk"/>
     
    91599158          For media whose state is <link to="#state"/> is <link
    91609159          to="MediumState_Inaccessible"/>, the value of this property is the
    9161           last known logical size. For <link to="MediumaState_NotCreated"/>
     9160          last known logical size. For <link to="MediumState_NotCreated"/>
    91629161          media, the returned value is zero.
    91639162        </note>
     
    1004110040
    1004210041        The list of all supported medium formats can be obtained using
    10043         <link to="ISystemProperties::mediaFormats"/>.
     10042        <link to="ISystemProperties::mediumFormats"/>.
    1004410043
    1004510044        <see>IMedium</see>
     
    1206212061
    1206312062      <note>
    12064         The <link to="#remote"/> attribute is ignored by this type of
     12063        The <link to="IUSBDeviceFilter::remote"/> attribute is ignored by this type of
    1206512064        filters, because it makes sense only for
    1206612065        <link to="IUSBController::deviceFilters">machine USB filters</link>.
     
    1376213761    <desc>
    1376313762      Type of an event.
     13763      See <link to="IEvent" /> for an introduction to VirtualBox event handling.
    1376413764    </desc>
    1376513765
     
    1397713977    <desc>
    1397813978      Event source. Generally, any object which could generate events can be an event source,
    13979       or aggregate one. To simplify using one-way protocols, such as webservices running on top of HTTP(S),
    13980       event source can work with listeners in either active or passive mode. In active mode it's up to
    13981       IEventSource implementation to call handleEvent(), in passive mode event source keeps track of
    13982       pending events for each listener and returns available events on demand.
     13979      or aggregate one. To simplify using one-way protocols such as webservices running on top of HTTP(S),
     13980      an event source can work with listeners in either active or passive mode. In active mode it is up to
     13981      the IEventSource implementation to call <link to="IEventListener::handleEvent" />, in passive mode the
     13982      event source keeps track of pending events for each listener and returns available events on demand.
     13983
     13984      See <link to="IEvent" /> for an introduction to VirtualBox event handling.
    1398313985    </desc>
    1398413986
    1398513987    <method name="createListener">
    1398613988      <desc>
    13987         Creates new listener object, useful for passive mode.
    13988         <see>IEventListener</see>
     13989        Creates a new listener object, useful for passive mode.
    1398913990      </desc>
    1399013991      <param name="listener" type="IEventListener" dir="return"/>
     
    1400614007      <param name="active" type="boolean" dir="in">
    1400714008        <desc>
    14008           Which mode this listener shall function in.
    14009           If in active mode, IEventListener's handleEvent() is called directly.
    14010           If in passive mode - for this IEventListener internal event queue is created.
    14011           When next event comes, it's added to queues for all interested registered passive
    14012           listeners. It's up to external code to call listener's handleEvent() then.
    14013           When done with event, it shall call source's eventComplete().
     14009          Which mode this listener is operating in.
     14010          In active mode, <link to="IEventListener::handleEvent" /> is called directly.
     14011          In passive mode, an internal event queue is created for this this IEventListener.
     14012          For each event coming in, it is added to queues for all interested registered passive
     14013          listeners. It is then up to the external code to call the listener's
     14014          <link to="IEventListener::handleEvent" /> method. When done with an event, the
     14015          external code must call eventComplete().
    1401414016        </desc>
    1401514017      </param>
     
    1404714049      <desc>
    1404814050        Get events from this peer's event queue (for passive mode). Consumer's implementation
    14049         must call listener's handleEvent() once event is available.
     14051        must call <link to="IEventListener::handleEvent" /> once the event is available.
    1405014052      </desc>
    1405114053      <param name="listener" type="IEventListener" dir="in">
     
    1408214084     >
    1408314085    <desc>
    14084       Event listener. Event listener can work in either active, or passive mode, depending on the way it's registered.
     14086      Event listener. An event listener can work in either active or passive mode, depending on the way
     14087      it was registered.
     14088      See <link to="IEvent" /> for an introduction to VirtualBox event handling.
    1408514089    </desc>
    1408614090
     
    1410314107     >
    1410414108    <desc>
    14105       Generic event. Usually events implements some of IEvent subinterfaces, so
    14106       standard use pattern is to check 'type' attribute and downcast (with QueryInterface())
    14107       appropraitely.
     14109      Abstract parent interface for VirtualBox events. Actual events will typically implement
     14110      a more specific interface which derives from this (see below).
     14111
     14112      <b>Introduction to VirtualBox events</b>
     14113
     14114      Starting with VirtualBox 3.3, support for generic events was introduced.
     14115      It provides a uniform mechanism to register for and consume specific events.
     14116      Previously, several callback interfaces were used which means that clients
     14117      were called for each event in the interface. Also, this mechanism was not
     14118      compatible with scripting languages, local Java bindings and remote web
     14119      services as they do not support callbacks.
     14120
     14121      To overcome those issues, the notion of events and listeners was introduced.
     14122      Generally speaking, an event represents the information that something happened,
     14123      while a listener represents an entity that is interested in certain events.
     14124      In order for this to work with unidirectional protocols (i.e. web services),
     14125      the concept of passive and active listeners is used.
     14126
     14127      Event consumers can register themselves as listeners, providing an array of
     14128      events they are interested in. When an event triggers, the listener is
     14129      notified about the event. The exact mechanism of the notification
     14130      depends on the way the listener was registered - as an active or passive listener:
     14131
     14132      <ul>
     14133        <li>An active listener is very similar to a traditional callback - i.e. it is a
     14134        function invoked by the API implementation.
     14135        The main difference here is that there's an event object notion, not individual
     14136        callback parameters.</li>
     14137
     14138        <li>Passive listeners are somewhat trickier: internally the
     14139        <link to="IEventSource" /> implementation maintains an event queue for each passive
     14140        listener, and newly arrived events are put in this queue. When the listener calls
     14141        <link to="IEventSource::getEvent"/>, all elements from its internal event queue are
     14142        returned. When the client completes processing of an event, the
     14143        <link to="IEventSource::eventProcessed" /> function must be called, acknowledging
     14144        that the events were processed. It supports implementing waitable events. On passive
     14145        listener unregistration, all events from its queue are auto-acknowledged.</li>
     14146      </ul>
     14147
     14148      Waitable events are useful in situations where the event generator wants to track
     14149      delivery or a party wants to wait until all listeners have completed the event. A
     14150      typical example would be a vetoable event where a listeners might put a veto on
     14151      a certain action, and thus the event producer has to make sure that all listeners have
     14152      processed the event and not vetoed before taking the action.
     14153
     14154      A given event may have both passive and active listeners at the same time.
     14155
     14156      <b>Using events</b>
     14157
     14158      Any VirtualBox object capable of producing externally visible events provides an
     14159      @c eventSource read-only attribute, which is of the type <link to="IEventSource" />.
     14160      This event source object is notified by VirtualBox once something has happened, so
     14161      consumers may register event listeners with this event source. To register a listener,
     14162      an object implementing the <link to="IEventListener" /> interface must be provided.
     14163      For active listeners, such an object is typically created by the consumer, while for
     14164      passive listeners <link to="IEventSource::createListener" /> should  be used. Please
     14165      note that a listener created with @c CreateListener() must not be used as an active listener.
     14166
     14167      Once created, the listener must be registered to listen for the desired events, providing
     14168      an array of <link to="VBoxEventType" /> enums. Those elements can either be the individual
     14169      event IDs or wildcards matching multiple event IDs.
     14170
     14171      After registration, the callback's <link to="IEventListener::handleEvent" /> method is
     14172      called automatically when the event is triggered, while passive listeners have to call
     14173      <link to="IEventSource::getEvent" /> and <link to="IEventSource::eventProcessed" /> in
     14174      an event processing loop.
     14175
     14176      This interface (IEvent) is an abstract parent interface for all such VirtualBox events
     14177      coming in. As a result, the standard use pattern inside <link to="IEventListener::handleEvent" />
     14178      or the event processing loop is to check the <link to="#type" /> attribute of the event and
     14179      then cast to the appropriate specific interface using @c QueryInterface().
    1410814180    </desc>
    1410914181
     
    1458014652    <desc>
    1458114653      Notification when the status of the VRDP server changes. Interested callees
    14582       should use <link to="IConsole::RemoteDisplayInfo">IRemoteDisplayInfo</link>
     14654      should use <link to="IConsole::remoteDisplayInfo">IRemoteDisplayInfo</link>
    1458314655      attributes to find out what is the current status.
    1458414656    </desc>
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