/* SPDX-License-Identifier: BSD-3-Clause */
/*
 * Copyright 2010 Raritan Inc. All rights reserved.
 */

/**
 * Resource Monitor interface
 *
 */

module res_mon {

    /** ResMon Entry */
    structure Entry {

        /** Type of this ResMon Entry*/
        enumeration Type {
            GLOBAL_CPU_USAGE,     ///< global cpu usage
            GLOBAL_FREE_MEM,      ///< global free memory
            GLOBAL_PROC_COUNT,    ///< global process count
            FS_FREE_SPACE,        ///< free filesystem space
            FS_FREE_INODES,       ///< free filesystem inodes
            PROC_CPU_USAGE,       ///< process cpu usage
            PROC_VM_SIZE,         ///< process virtual r/w mem size (formerly full vm size)
            PROC_FREE_FILE_DESC,  ///< process free file descriptors
            PROC_LIFE_TIME,       ///< process life time
            PROC_COUNT            ///< process count
        };

        /** Type of this ResMon Entry */
        Type type;
        /** ResMon Entry name */
        string name;
        /** ResMon Entry value */
        long value;
    };

    /** ResMon interface */
    interface ResMon {

        /**
         * Retrieve ResMon data Entry array.
         *
         * @param entries  Result: List of data events
         */
        void getDataEntries(out vector<Entry> entries);

    };

}
