mirror of
https://github.com/prometheus-community/windows_exporter.git
synced 2026-03-07 11:06:36 +00:00
changing anonymous funcs to normal funcs
Signed-off-by: Rahman Mousavian <rahman.mousavian@oracle.com>
This commit is contained in:
@@ -59,6 +59,8 @@ type ScheduledTask struct {
|
|||||||
LastTaskResult TaskResult
|
LastTaskResult TaskResult
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ScheduledTasks []ScheduledTask
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
registerCollector("scheduled_task", NewScheduledTask)
|
registerCollector("scheduled_task", NewScheduledTask)
|
||||||
}
|
}
|
||||||
@@ -161,10 +163,7 @@ const SCHEDULED_TASK_PROGRAM_ID = "Schedule.Service.1"
|
|||||||
// S_FALSE is returned by CoInitialize if it was already called on this thread.
|
// S_FALSE is returned by CoInitialize if it was already called on this thread.
|
||||||
const S_FALSE = 0x00000001
|
const S_FALSE = 0x00000001
|
||||||
|
|
||||||
func getScheduledTasks() ([]ScheduledTask, error) {
|
func getScheduledTasks() (scheduledTasks ScheduledTasks, err error) {
|
||||||
var err error
|
|
||||||
scheduledTasks := []ScheduledTask{}
|
|
||||||
|
|
||||||
err = ole.CoInitialize(0)
|
err = ole.CoInitialize(0)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
code := err.(*ole.OleError).Code()
|
code := err.(*ole.OleError).Code()
|
||||||
@@ -176,13 +175,11 @@ func getScheduledTasks() ([]ScheduledTask, error) {
|
|||||||
|
|
||||||
schedClassID, err := ole.ClassIDFrom(SCHEDULED_TASK_PROGRAM_ID)
|
schedClassID, err := ole.ClassIDFrom(SCHEDULED_TASK_PROGRAM_ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ole.CoUninitialize()
|
|
||||||
return scheduledTasks, err
|
return scheduledTasks, err
|
||||||
}
|
}
|
||||||
|
|
||||||
taskSchedulerObj, err := ole.CreateInstance(schedClassID, nil)
|
taskSchedulerObj, err := ole.CreateInstance(schedClassID, nil)
|
||||||
if err != nil || taskSchedulerObj == nil {
|
if err != nil || taskSchedulerObj == nil {
|
||||||
ole.CoUninitialize()
|
|
||||||
return scheduledTasks, err
|
return scheduledTasks, err
|
||||||
}
|
}
|
||||||
defer taskSchedulerObj.Release()
|
defer taskSchedulerObj.Release()
|
||||||
@@ -202,56 +199,53 @@ func getScheduledTasks() ([]ScheduledTask, error) {
|
|||||||
rootFolderObj := res.ToIDispatch()
|
rootFolderObj := res.ToIDispatch()
|
||||||
defer rootFolderObj.Release()
|
defer rootFolderObj.Release()
|
||||||
|
|
||||||
var fetchTasksInFolder func(*ole.IDispatch) error
|
fetchTasksRecursively(rootFolderObj, &scheduledTasks)
|
||||||
var fetchTasksRecursively func(*ole.IDispatch) error
|
|
||||||
|
|
||||||
fetchTasksInFolder = func(folder *ole.IDispatch) error {
|
|
||||||
res, err := oleutil.CallMethod(folder, "GetTasks", 1)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
tasks := res.ToIDispatch()
|
|
||||||
defer tasks.Release()
|
|
||||||
|
|
||||||
err = oleutil.ForEach(tasks, func(v *ole.VARIANT) error {
|
|
||||||
task := v.ToIDispatch()
|
|
||||||
|
|
||||||
parsedTask := parseTask(task)
|
|
||||||
scheduledTasks = append(scheduledTasks, parsedTask)
|
|
||||||
|
|
||||||
return nil
|
|
||||||
})
|
|
||||||
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
fetchTasksRecursively = func(folder *ole.IDispatch) error {
|
|
||||||
if err := fetchTasksInFolder(folder); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
res, err := oleutil.CallMethod(folder, "GetFolders", 1)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
subFolders := res.ToIDispatch()
|
|
||||||
defer subFolders.Release()
|
|
||||||
|
|
||||||
err = oleutil.ForEach(subFolders, func(v *ole.VARIANT) error {
|
|
||||||
subFolder := v.ToIDispatch()
|
|
||||||
return fetchTasksRecursively(subFolder)
|
|
||||||
})
|
|
||||||
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
fetchTasksRecursively(rootFolderObj)
|
|
||||||
|
|
||||||
return scheduledTasks, nil
|
return scheduledTasks, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func fetchTasksInFolder(folder *ole.IDispatch, scheduledTasks *ScheduledTasks) error {
|
||||||
|
res, err := oleutil.CallMethod(folder, "GetTasks", 1)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks := res.ToIDispatch()
|
||||||
|
defer tasks.Release()
|
||||||
|
|
||||||
|
err = oleutil.ForEach(tasks, func(v *ole.VARIANT) error {
|
||||||
|
task := v.ToIDispatch()
|
||||||
|
|
||||||
|
parsedTask := parseTask(task)
|
||||||
|
*scheduledTasks = append(*scheduledTasks, parsedTask)
|
||||||
|
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func fetchTasksRecursively(folder *ole.IDispatch, scheduledTasks *ScheduledTasks) error {
|
||||||
|
if err := fetchTasksInFolder(folder, scheduledTasks); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
res, err := oleutil.CallMethod(folder, "GetFolders", 1)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
subFolders := res.ToIDispatch()
|
||||||
|
defer subFolders.Release()
|
||||||
|
|
||||||
|
err = oleutil.ForEach(subFolders, func(v *ole.VARIANT) error {
|
||||||
|
subFolder := v.ToIDispatch()
|
||||||
|
return fetchTasksRecursively(subFolder, scheduledTasks)
|
||||||
|
})
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
func parseTask(task *ole.IDispatch) ScheduledTask {
|
func parseTask(task *ole.IDispatch) ScheduledTask {
|
||||||
scheduledTask := ScheduledTask{}
|
scheduledTask := ScheduledTask{}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user