Class AbstractOperatingSystem

java.lang.Object
oshi.software.common.AbstractOperatingSystem
All Implemented Interfaces:
OperatingSystem
Direct Known Subclasses:
AixOperatingSystem, FreeBsdOperatingSystem, LinuxOperatingSystem, MacOperatingSystem, OpenBsdOperatingSystem, SolarisOperatingSystem, WindowsOperatingSystem

public abstract class AbstractOperatingSystem extends Object implements OperatingSystem
Common methods for OperatingSystem implementations
  • Field Details

    • USE_WHO_COMMAND

      protected static final boolean USE_WHO_COMMAND
  • Constructor Details

    • AbstractOperatingSystem

      public AbstractOperatingSystem()
  • Method Details

    • getManufacturer

      public String getManufacturer()
      Description copied from interface: OperatingSystem
      Get the Operating System manufacturer.
      Specified by:
      getManufacturer in interface OperatingSystem
      Returns:
      the manufacturer
    • queryManufacturer

      protected abstract String queryManufacturer()
    • getFamily

      public String getFamily()
      Description copied from interface: OperatingSystem
      Get the Operating System family.
      Specified by:
      getFamily in interface OperatingSystem
      Returns:
      the family
    • getVersionInfo

      public OperatingSystem.OSVersionInfo getVersionInfo()
      Description copied from interface: OperatingSystem
      Get Operating System version information.
      Specified by:
      getVersionInfo in interface OperatingSystem
      Returns:
      version information
    • queryFamilyVersionInfo

      protected abstract Pair<String,OperatingSystem.OSVersionInfo> queryFamilyVersionInfo()
    • getBitness

      public int getBitness()
      Description copied from interface: OperatingSystem
      Gets the bitness (32 or 64) of the operating system.
      Specified by:
      getBitness in interface OperatingSystem
      Returns:
      The number of bits supported by the operating system.
    • queryBitness

      protected abstract int queryBitness(int jvmBitness)
      Backup OS-specific query to determine bitness if previous checks fail
      Parameters:
      jvmBitness - The bitness of the JVM
      Returns:
      The operating system bitness
    • getProcesses

      public List<OSProcess> getProcesses(Predicate<OSProcess> filter, Comparator<OSProcess> sort, int limit)
      Description copied from interface: OperatingSystem
      Gets currently running processes, optionally filtering, sorting, and limited to the top "N".
      Specified by:
      getProcesses in interface OperatingSystem
      Parameters:
      filter - An optional Predicate limiting the results to the specified filter. Some common predicates are available in OperatingSystem.ProcessSorting. May be null for no filtering.
      sort - An optional Comparator specifying the sorting order. Some common comparators are available in OperatingSystem.ProcessSorting. May be null for no sorting.
      limit - Max number of results to return, or 0 to return all results
      Returns:
      A list of OSProcess objects, optionally filtered, sorted, and limited to the specified number.

      The list may contain processes with a state of OSProcess.State.INVALID if a process terminates during iteration.

    • queryAllProcesses

      protected abstract List<OSProcess> queryAllProcesses()
    • getChildProcesses

      public List<OSProcess> getChildProcesses(int parentPid, Predicate<OSProcess> filter, Comparator<OSProcess> sort, int limit)
      Description copied from interface: OperatingSystem
      Gets currently running child processes of provided parent PID, optionally filtering, sorting, and limited to the top "N".
      Specified by:
      getChildProcesses in interface OperatingSystem
      Parameters:
      parentPid - The Process ID whose children to list.
      filter - An optional Predicate limiting the results to the specified filter. Some common predicates are available in OperatingSystem.ProcessSorting. May be null for no filtering.
      sort - An optional Comparator specifying the sorting order. Some common comparators are available in OperatingSystem.ProcessSorting. May be null for no sorting.
      limit - Max number of results to return, or 0 to return all results
      Returns:
      A list of OSProcess objects representing the currently running child processes of the provided PID, optionally filtered, sorted, and limited to the specified number.

      The list may contain processes with a state of OSProcess.State.INVALID if a process terminates during iteration.

    • queryChildProcesses

      protected abstract List<OSProcess> queryChildProcesses(int parentPid)
    • getDescendantProcesses

      public List<OSProcess> getDescendantProcesses(int parentPid, Predicate<OSProcess> filter, Comparator<OSProcess> sort, int limit)
      Description copied from interface: OperatingSystem
      Gets currently running processes of provided parent PID's descendants, including their children, the children's children, etc., optionally filtering, sorting, and limited to the top "N".
      Specified by:
      getDescendantProcesses in interface OperatingSystem
      Parameters:
      parentPid - The Process ID whose children to list.
      filter - An optional Predicate limiting the results to the specified filter. Some common predicates are available in OperatingSystem.ProcessSorting. May be null for no filtering.
      sort - An optional Comparator specifying the sorting order. Some common comparators are available in OperatingSystem.ProcessSorting. May be null for no sorting.
      limit - Max number of results to return, or 0 to return all results
      Returns:
      A list of OSProcess objects representing the currently running descendant processes of the provided PID, optionally filtered, sorted, and limited to the specified number.

      The list may contain processes with a state of OSProcess.State.INVALID if a process terminates during iteration.

    • queryDescendantProcesses

      protected abstract List<OSProcess> queryDescendantProcesses(int parentPid)
    • getChildrenOrDescendants

      protected static Set<Integer> getChildrenOrDescendants(Collection<OSProcess> allProcs, int parentPid, boolean allDescendants)
      Utility method for subclasses to take a full process list as input and return the children or descendants of a particular process. The process itself is also returned to more efficiently extract its start time for filtering
      Parameters:
      allProcs - A collection of all processes
      parentPid - The process ID whose children or descendants to return
      allDescendants - If false, only gets immediate children of this process. If true, gets all descendants.
      Returns:
      Set of children or descendants of parentPid
    • getChildrenOrDescendants

      protected static Set<Integer> getChildrenOrDescendants(Map<Integer,Integer> parentPidMap, int parentPid, boolean allDescendants)
      Utility method for subclasses to take a map of pid to parent as input and return the children or descendants of a particular process.
      Parameters:
      parentPidMap - a map of all processes with processID as key and parentProcessID as value
      parentPid - The process ID whose children or descendants to return
      allDescendants - If false, only gets immediate children of this process. If true, gets all descendants.
      Returns:
      Set of children or descendants of parentPid, including the parent
    • toString

      public String toString()
      Overrides:
      toString in class Object