github.com/goravel/framework@v1.13.9/contracts/event/events.go (about)

     1  package event
     2  
     3  //go:generate mockery --name=Instance
     4  type Instance interface {
     5  	// Register event listeners to the application.
     6  	Register(map[Event][]Listener)
     7  	// Job create a new event task.
     8  	Job(event Event, args []Arg) Task
     9  	// GetEvents gets all registered events.
    10  	GetEvents() map[Event][]Listener
    11  }
    12  
    13  type Event interface {
    14  	// Handle the event.
    15  	Handle(args []Arg) ([]Arg, error)
    16  }
    17  
    18  type Listener interface {
    19  	// Signature returns the unique identifier for the listener.
    20  	Signature() string
    21  	// Queue configure the event queue options.
    22  	Queue(args ...any) Queue
    23  	// Handle the event.
    24  	Handle(args ...any) error
    25  }
    26  
    27  //go:generate mockery --name=Task
    28  type Task interface {
    29  	// Dispatch an event and call the listeners.
    30  	Dispatch() error
    31  }
    32  
    33  type Arg struct {
    34  	Type  string
    35  	Value any
    36  }
    37  
    38  type Queue struct {
    39  	Enable     bool
    40  	Connection string
    41  	Queue      string
    42  }