1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| package clib
import ( "context" "net/http" "time"
"{{{ .Package }}}/app" "{{{ .Package }}}/app/controller" "{{{ .Package }}}/app/controller/cutil" "{{{ .Package }}}/app/lib/database" "{{{ .Package }}}/app/lib/queue" "{{{ .Package }}}/app/util" "{{{ .Package }}}/views/vadmin" )
var QueueInstance *queue.Queue
func QueueIndex(w http.ResponseWriter, r *http.Request) { controller.Act("queue.index", w, r, func(as *app.State, ps *cutil.PageState) (string, error) { st, err := initQueueInstance(ps.Context, ps.Logger) if err != nil { return "", err } ps.SetTitleAndData("Queue", st) return controller.Render(r, as, &vadmin.Queue{Status: st}, ps, keyAdmin, "Queue") }) }
func QueueSend(w http.ResponseWriter, r *http.Request) { controller.Act("queue.send", w, r, func(as *app.State, ps *cutil.PageState) (string, error) { st, err := initQueueInstance(ps.Context, ps.Logger) if err != nil { return "", err } msg := queue.NewMessage("foo", "OK") err = QueueInstance.Send(ps.Context, nil, msg, ps.Logger) if err != nil { return "", err } msg, err = QueueInstance.Receive(ps.Context, nil, "foo", ps.Logger) if err != nil { return "", err } ps.SetTitleAndData("Queue", util.ValueMap{"message": msg, "status": st}) return controller.Render(r, as, &vadmin.Queue{Status: st, Message: msg}, ps, keyAdmin, "Queue") }) }
func initQueueInstance(ctx context.Context, logger util.Logger) (*queue.Status, error) { if QueueInstance == nil { db, err := database.OpenSQLiteDatabase(ctx, "queue", &database.SQLiteParams{File: "tmp/queue.sqlite"}, logger) if err != nil { return nil, err } QueueInstance, err = queue.New(ctx, "queue", 0, 10*time.Second, "", db, logger) if err != nil { return nil, err } } return QueueInstance.Status(), nil }
|