Merge pull request #822 from trheyi/main
Refactor call method in Assistant to streamline context handling
This commit is contained in:
commit
1d9d9b2aa8
1 changed files with 5 additions and 21 deletions
|
|
@ -206,26 +206,10 @@ func (ast *Assistant) call(ctx context.Context, method string, context chatctx.C
|
|||
return nil, fmt.Errorf(HookErrorMethodNotFound)
|
||||
}
|
||||
|
||||
// Create done channel for handling cancellation
|
||||
done := make(chan struct{})
|
||||
var result interface{}
|
||||
var callErr error
|
||||
|
||||
go func() {
|
||||
defer close(done)
|
||||
// Call the method
|
||||
args = append([]interface{}{context.Map()}, args...)
|
||||
result, callErr = scriptCtx.Call(method, args...)
|
||||
}()
|
||||
|
||||
// Wait for either context cancellation or method completion
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
if scriptCtx != nil {
|
||||
scriptCtx.Close() // Force close the script context
|
||||
}
|
||||
return nil, ctx.Err()
|
||||
case <-done:
|
||||
return result, callErr
|
||||
// Call the method directly in the current thread
|
||||
args = append([]interface{}{context.Map()}, args...)
|
||||
if scriptCtx != nil {
|
||||
return scriptCtx.CallWith(ctx, method, args...)
|
||||
}
|
||||
return nil, nil
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue