24 lines
476 B
Go
24 lines
476 B
Go
package processor
|
|
|
|
type Processor[TMessage any] struct {
|
|
queue chan TMessage
|
|
process func(message TMessage)
|
|
}
|
|
|
|
func (p *Processor[TMessage]) Work() {
|
|
for msg := range p.queue {
|
|
p.process(msg)
|
|
}
|
|
}
|
|
|
|
func (p *Processor[TMessage]) Add(msg TMessage) {
|
|
p.queue <- msg
|
|
}
|
|
|
|
func NewProcessor[TMessage any](bufferSize int, process func(message TMessage)) *Processor[TMessage] {
|
|
return &Processor[TMessage]{
|
|
queue: make(chan TMessage, bufferSize),
|
|
process: process,
|
|
}
|
|
}
|