taskmanager

package module
v0.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 20, 2024 License: MIT Imports: 5 Imported by: 0

README

Go Task Manager

A lightweight and flexible task management library for Go applications that provides concurrent task execution with status monitoring and operation control.

Features

  • 🔄 Concurrent task execution and management
  • 📊 Real-time task status monitoring
  • 🎮 Dynamic task control (start/stop/restart)
  • 🔍 Task status tracking and updates
  • 📝 Event-based messaging system
  • 🔒 Thread-safe operations
  • 🎯 Context-based cancellation support

Installation

go get github.com/yourusername/taskmanager

Usage

Basic Example
package main

import (
    "context"
    "fmt"
    "time"
    "github.com/yourusername/taskmanager"
)

func main() {
    // Create a new task manager
    tm := taskmanager.NewTaskManager()
    defer tm.StopTaskManager(true)

    // Define a sample task
    sampleTask := func(ctx context.Context, eventChan chan<- taskmanager.StatusEvent_t) error {
        count := 0
        for {
            select {
            case <-ctx.Done():
                return nil
            default:
                count++
                eventChan <- taskmanager.StatusEvent_t{
                    Status: count,
                }
                time.Sleep(time.Second)
            }
        }
    }

    // Add and run the task
    tm.AddTask("counter", sampleTask)
    tm.RunTask("counter")

    // Monitor task messages
    go func() {
        for msg := range tm.GetEventMsg() {
            fmt.Printf("Message: %s, Time: %s\n", msg.Msg, msg.T)
        }
    }()

    // Let it run for a while
    time.Sleep(5 * time.Second)
}
Task Operations
// Start a task
tm.RunTask("taskName")

// Stop a task
tm.StopTask("taskName")

// Restart a task
tm.RestartTask("taskName")

// Delete a task
tm.DeleteTask("taskName")

// Stop all tasks
tm.StopAllTask()
Task Status Monitoring
// Get task status
status, err := tm.GetTaskStatus("taskName")

// Get task operation state
op, err := tm.GetTaskOperation("taskName")

// Get last update time
lastUpdate, err := tm.GetTaskLastUpdateTime("taskName")

// Get task function result
result := tm.GetTaskFuncResult("taskName")

// Get list of all task names
taskNames, err := tm.GetTaskNameList()

// Get total task count
count := tm.GetTotalTaskCount()

Task Status Events

Tasks can emit status events to update their state:

eventChan <- taskmanager.StatusEvent_t{
    Status:    newStatus,    // Any type of status data
    Operation: taskmanager.OPERATION_NONE,
    Func:      nil,         // Optional new task function
}

Message Monitoring

The task manager provides a message channel for monitoring system events:

for msg := range tm.GetEventMsg() {
    fmt.Printf("Message: %s\n", msg.Msg)
    if msg.Err != nil {
        fmt.Printf("Error: %v\n", msg.Err)
    }
}

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type StatusEvent_t

type StatusEvent_t struct {
	Status    interface{}
	Operation TaskOperation_t
	Func      TaskFunc
}

type TaskFunc

type TaskFunc func(ctx context.Context, eventChan chan<- StatusEvent_t) error

type TaskManagerMsg_t

type TaskManagerMsg_t struct {
	Msg string
	Err error
	T   time.Time
}

type TaskManager_t

type TaskManager_t struct {
	// contains filtered or unexported fields
}

func NewTaskManager

func NewTaskManager() *TaskManager_t

func (*TaskManager_t) AddTask

func (t *TaskManager_t) AddTask(taskName string, taskFunc TaskFunc)

func (*TaskManager_t) CloseTaskManager added in v0.0.2

func (t *TaskManager_t) CloseTaskManager(waitMsg bool)

func (*TaskManager_t) DeleteAllTask added in v0.0.2

func (t *TaskManager_t) DeleteAllTask() error

func (*TaskManager_t) DeleteTask

func (t *TaskManager_t) DeleteTask(taskName string) error

func (*TaskManager_t) GetEventMsg

func (t *TaskManager_t) GetEventMsg() <-chan TaskManagerMsg_t

func (*TaskManager_t) GetTaskFuncLockStatus

func (t *TaskManager_t) GetTaskFuncLockStatus(taskName string) bool

func (*TaskManager_t) GetTaskFuncResult

func (t *TaskManager_t) GetTaskFuncResult(taskName string) error

func (*TaskManager_t) GetTaskLastUpdateTime

func (t *TaskManager_t) GetTaskLastUpdateTime(taskName string) (time.Time, error)

func (*TaskManager_t) GetTaskNameList

func (t *TaskManager_t) GetTaskNameList() ([]string, error)

func (*TaskManager_t) GetTaskOperation

func (t *TaskManager_t) GetTaskOperation(taskName string) (TaskOperation_t, error)

func (*TaskManager_t) GetTaskStatus

func (t *TaskManager_t) GetTaskStatus(taskName string) (interface{}, error)

func (*TaskManager_t) GetTotalTaskCount

func (t *TaskManager_t) GetTotalTaskCount() int

func (*TaskManager_t) GetTotalTaskCountByStatus

func (t *TaskManager_t) GetTotalTaskCountByStatus(status interface{}) (int, error)

func (*TaskManager_t) IsTaskExist

func (t *TaskManager_t) IsTaskExist(taskName string) bool

func (*TaskManager_t) RestartTask

func (t *TaskManager_t) RestartTask(taskName string) error

func (*TaskManager_t) RunTask

func (t *TaskManager_t) RunTask(taskName string) error

func (*TaskManager_t) Service

func (t *TaskManager_t) Service()

func (*TaskManager_t) StopAllTask

func (t *TaskManager_t) StopAllTask() error

func (*TaskManager_t) StopTask

func (t *TaskManager_t) StopTask(taskName string) error

type TaskOperation_t

type TaskOperation_t int
const (
	OPERATION_NONE TaskOperation_t = iota
	OPERATION_START
	OPERATION_STOP
	OPERATION_RESTART
	OPERATION_DELETE
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL