SetInterruptHandler sets a user interrupt handler using simplified approach. This will override any timeout handler (expected behavior)
(handler InterruptHandler)
| 941 | // SetInterruptHandler sets a user interrupt handler using simplified approach. |
| 942 | // This will override any timeout handler (expected behavior) |
| 943 | func (r *Runtime) SetInterruptHandler(handler InterruptHandler) { |
| 944 | if r == nil { |
| 945 | return |
| 946 | } |
| 947 | if !r.ensureOwnerAccess() { |
| 948 | return |
| 949 | } |
| 950 | r.mu.Lock() |
| 951 | defer r.mu.Unlock() |
| 952 | if r.closed.Load() || r.ref == nil { |
| 953 | return |
| 954 | } |
| 955 | if handler != nil { |
| 956 | r.interruptHandlerState.Store(&interruptHandlerHolder{fn: handler}) |
| 957 | } else { |
| 958 | r.interruptHandlerState.Store(nil) |
| 959 | } |
| 960 | |
| 961 | if handler != nil { |
| 962 | // Simplified call - no handlerArgs complexity |
| 963 | C.SetInterruptHandler(r.ref) |
| 964 | } else { |
| 965 | C.ClearInterruptHandler(r.ref) |
| 966 | } |
| 967 | } |
| 968 | |
| 969 | // ClearInterruptHandler clears the user interrupt handler |
| 970 | func (r *Runtime) ClearInterruptHandler() { |