52 lines
951 B
Go
52 lines
951 B
Go
package jobTask
|
|
|
|
import (
|
|
"fmt"
|
|
"gitlink.org.cn/cloudream/common/pkgs/async"
|
|
"gitlink.org.cn/cloudream/common/pkgs/future"
|
|
"gitlink.org.cn/cloudream/common/pkgs/logger"
|
|
"math/rand"
|
|
"time"
|
|
)
|
|
|
|
type JobTask[T any] struct {
|
|
id string
|
|
taskChan async.UnboundChannel[T]
|
|
}
|
|
|
|
func NewJobTask[T any]() *JobTask[T] {
|
|
return &JobTask[T]{
|
|
id: getTaskID(),
|
|
taskChan: *async.NewUnboundChannel[T](),
|
|
}
|
|
}
|
|
|
|
func getTaskID() string {
|
|
now := time.Now()
|
|
nano := now.UnixNano()
|
|
rand.Seed(time.Now().UnixNano())
|
|
randomNumber := rand.Intn(9000) + 1000 // 生成1000到9999之间的随机数
|
|
|
|
taskID := fmt.Sprintf("id_%d_%d", nano, randomNumber)
|
|
|
|
return taskID
|
|
}
|
|
|
|
func (c *JobTask[T]) Receive() future.Future1[T] {
|
|
|
|
return c.taskChan.Receive()
|
|
}
|
|
|
|
func (c *JobTask[T]) Send(info any) {
|
|
|
|
logger.Info("send http")
|
|
}
|
|
|
|
func (c *JobTask[T]) Chan() *async.UnboundChannel[T] {
|
|
return &c.taskChan
|
|
}
|
|
|
|
func (c *JobTask[T]) ID() string {
|
|
return c.id
|
|
}
|