github.com/goravel/framework@v1.13.9/event/application.go (about) 1 package event 2 3 import ( 4 "github.com/goravel/framework/contracts/event" 5 queuecontract "github.com/goravel/framework/contracts/queue" 6 ) 7 8 type Application struct { 9 events map[event.Event][]event.Listener 10 queue queuecontract.Queue 11 } 12 13 func NewApplication(queue queuecontract.Queue) *Application { 14 return &Application{ 15 queue: queue, 16 } 17 } 18 19 func (app *Application) Register(events map[event.Event][]event.Listener) { 20 var jobs []queuecontract.Job 21 22 if app.events == nil { 23 app.events = map[event.Event][]event.Listener{} 24 } 25 26 for e, listeners := range events { 27 app.events[e] = listeners 28 for _, listener := range listeners { 29 jobs = append(jobs, listener) 30 } 31 } 32 33 app.queue.Register(jobs) 34 } 35 36 func (app *Application) GetEvents() map[event.Event][]event.Listener { 37 return app.events 38 } 39 40 func (app *Application) Job(e event.Event, args []event.Arg) event.Task { 41 listeners, ok := app.events[e] 42 if !ok { 43 listeners = make([]event.Listener, 0) 44 } 45 46 return NewTask(app.queue, args, e, listeners) 47 }