classdef (Hidden, Sealed) GridEngine < parallel.settings.schedulerComponent.Generic
% GridEngine - Scheduler Component for GridEngine

%   Copyright 2023-2024 The MathWorks, Inc.

    methods (Hidden, Static) % Implementation of NamedNode Hidden, Static methods
        function obj = hBuildFromSettings(name, settingsNode, parentSettingsNode, varargin)
            obj = parallel.settings.schedulerComponent.GridEngine(name, settingsNode, parentSettingsNode, varargin{:});
        end
    end

    methods (Access = private) % Constructor
        function obj = GridEngine(name, node, parentNode, varargin)
            import parallel.internal.types.SchedulerType
            obj@parallel.settings.schedulerComponent.Generic(name, ...
                SchedulerType.GridEngine, node, parentNode, varargin{:});

            % By default, use the shipping Grid Engine plugins
            if ~obj.isSet('PluginScriptsLocation')
                obj.PluginScriptsLocation = 'parallel.cluster.gridengine';
            end

            % The default plugins only support Linux
            obj.OperatingSystem = 'unix';
        end
    end
end
