Glossary
========

.. glossary::

    Device
        A device is a user implemented class which defines how the simulated
        device interacts with the world, including it's observation of external
        state and it's resulting influence on world state.

    Adapter
        An adapter is a user implemented class which facilitaties interactions
        between a device and components external to the simulation - e.g. a TCP
        client.

    Component
        A component is a high level simulation object which acts upon ticks from
        the scheduler, returning changes to its state and requests for wakeup.
        Components may additionally raise interrupts in response to
        unpredictable internal changes.

    System Simulation
        A system simulation is a component which wraps a slave scheduler and a
        collection of components, allowing for infinitely nested systems.

    Device Simulation
        A device simulation is a component which wraps a device and the
        corresponding adapters.
        
    Callback
        A callback is a request to update a component after a specified period
        of simulation time - typically these are generated by a device and
        handled by the scheduler.

    Interrupt
        An interrupt is a request to immediately update a component - typically
        these are generated by an adapter and handled by the scheduler.

    Ticker
        A ticker sequences the update of components during a tick to ensure
        that all wired component interactions are captured faithfully.

        .. seealso:: `How component updates are ordered`

    Scheduler
        A scheduler oversees and orchestrates the running of a simulation, and
        is responsible for initiating ticks to handle callbacks or interrupts.
