+11
-6
@@ -2,6 +2,7 @@ package tgapi
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"sync"
|
||||
)
|
||||
|
||||
@@ -126,10 +127,14 @@ func (p *workerPool) worker() {
|
||||
}
|
||||
|
||||
func (p *workerPool) executeEnvelope(envelope requestEnvelope) {
|
||||
value, err := envelope.doFunc(envelope.ctx)
|
||||
envelope.resultCh <- requestResult{
|
||||
value: value,
|
||||
err: err,
|
||||
}
|
||||
close(envelope.resultCh)
|
||||
result := requestResult{}
|
||||
defer func() {
|
||||
if recovered := recover(); recovered != nil {
|
||||
result.value = nil
|
||||
result.err = fmt.Errorf("%w: %v", ErrPoolWorkerPanic, recovered)
|
||||
}
|
||||
envelope.resultCh <- result
|
||||
close(envelope.resultCh)
|
||||
}()
|
||||
result.value, result.err = envelope.doFunc(envelope.ctx)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user