package timer

import (
	"time"

	"jiraport/pkg/queue"
)

type Timer struct {
	queue chan<- queue.Event
}

func New(queue chan<- queue.Event) (*Timer, error) {
	t := &Timer{queue: queue}
	return t, nil
}

func (tm *Timer) SyncSchedule(dura time.Duration, data interface{}) interface{} {
	time.Sleep(dura)
	return data
}

func (tm *Timer) AsyncSchedule(dura time.Duration, data interface{}) <-chan interface{} {
	future := make(chan interface{})
	go func() {
		time.Sleep(dura)
		future <- data
	}()
	return future
}
