// UpdateStateHook calls the PostStateUpdate hook with the current state.
UpdateStateHook calls the PostStateUpdate hook with the current state.
// UpdateStateHook calls the PostStateUpdate hook with the current state .
func UpdateStateHook(ctx EvalContext) error {
	stateSync := ctx.State()
	state := stateSync.Lock().DeepCopy()
	defer stateSync.Unlock()
	err := ctx.Hook(func(h Hook) (HookAction, error) {
		return h.PostStateUpdate(state)
	})
	return err
}
func UpdateStateHook ( ctx EvalContext ) error { stateSync := ctx . State ( ) state := stateSync . Lock ( ) . DeepCopy ( ) defer stateSync . Unlock ( ) err := ctx . Hook ( func ( h Hook ) ( HookAction , error ) { return h . PostStateUpdate ( state ) } ) return err }
UpdateStateHook calls the PostStateUpdate hook with the current state.
UpdateStateHook calls the PostStateUpdate hook with the current state .
// In principle we could grab the lock here just long enough to take a // deep copy and then pass that to our hooks below, but we'll instead // hold the hook for the duration to avoid the potential confusing // situation of us racing to call PostStateUpdate concurrently with // different state snapshots. // Call the hook