// File: CORBA_Pollable.idl
// CORBA 3.0, Chapter 7

#ifdef _PRE_3_0_COMPILER_
#pragma prefix "omg.org/CORBA"
#endif

    // interface for the Pollable sets of invocations

    local interface PollableSet;

    abstract valuetype Pollable {
        boolean is_ready(
            in unsigned long       timeout
        );

        PollableSet create_pollable_set();
    };

    abstract valuetype DIIPollable : Pollable {};

    local interface PollableSet {

        exception NoPossiblePollable {};
        exception UnknownPollable {};

        DIIPollable create_dii_pollable();

        void add_pollable(
            in Pollable             potential
        );

        Pollable get_ready_pollable(
            in unsigned long        timeout
        ) raises(NoPossiblePollable);

        void remove(
            in Pollable             potential
        ) raises(UnknownPollable);

        unsigned short number_left();
    };