1
0
Fork 0
mirror of https://github.com/imjasonh/delay synced 2026-07-07 00:33:26 +00:00
delay/example/main.go
Jason Hall 3d77a37b51
modernize
Signed-off-by: Jason Hall <jason@chainguard.dev>
2024-04-09 22:49:06 -04:00

57 lines
1.1 KiB
Go

package main
import (
"context"
"errors"
"fmt"
"net/http"
"os"
"time"
"github.com/chainguard-dev/clog"
_ "github.com/chainguard-dev/clog/gcp/init"
"github.com/imjasonh/delay"
)
func main() {
delay.Init()
http.HandleFunc("/start", handler)
if err := http.ListenAndServe(":8080", nil); err != nil {
clog.Fatalf("ListenAndServe: %v", err)
}
}
var delayFunc = delay.Func(func(ctx context.Context, a, b, c string) error {
clog.FromContext(ctx).Infof("Delayed func called: %s %s %s", a, b, c)
if a == b {
return errors.New("a == b")
}
return nil
})
func handler(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
queueName := os.Getenv("QUEUE")
// call it now
if err := delayFunc.Call(ctx, r, queueName,
"right", "now", "!!!1!",
); err != nil {
clog.Errorf("call: %v", err)
fmt.Fprintln(w, err)
} else {
fmt.Fprintln(w, "immediate call done")
}
// ...and call it in 10 seconds
if err := delayFunc.Delay(ctx, r, queueName, 10*time.Second,
"a", "b", "c",
); err != nil {
clog.Errorf("delay: %v", err)
fmt.Fprintln(w, err)
} else {
fmt.Fprintln(w, "delay enqueued")
}
}