1*6777b538SAndroid Build Coastguard Worker // Copyright 2023 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #include "base/win/resource_exhaustion.h" 6*6777b538SAndroid Build Coastguard Worker 7*6777b538SAndroid Build Coastguard Worker #include <utility> 8*6777b538SAndroid Build Coastguard Worker 9*6777b538SAndroid Build Coastguard Worker #include "base/functional/callback.h" 10*6777b538SAndroid Build Coastguard Worker #include "base/no_destructor.h" 11*6777b538SAndroid Build Coastguard Worker 12*6777b538SAndroid Build Coastguard Worker namespace base::win { 13*6777b538SAndroid Build Coastguard Worker 14*6777b538SAndroid Build Coastguard Worker namespace { 15*6777b538SAndroid Build Coastguard Worker 16*6777b538SAndroid Build Coastguard Worker OnResourceExhaustedFunction g_resource_exhausted_function = nullptr; 17*6777b538SAndroid Build Coastguard Worker 18*6777b538SAndroid Build Coastguard Worker } // namespace 19*6777b538SAndroid Build Coastguard Worker SetOnResourceExhaustedFunction(OnResourceExhaustedFunction on_resource_exhausted)20*6777b538SAndroid Build Coastguard Workervoid SetOnResourceExhaustedFunction( 21*6777b538SAndroid Build Coastguard Worker OnResourceExhaustedFunction on_resource_exhausted) { 22*6777b538SAndroid Build Coastguard Worker g_resource_exhausted_function = on_resource_exhausted; 23*6777b538SAndroid Build Coastguard Worker } 24*6777b538SAndroid Build Coastguard Worker OnResourceExhausted()25*6777b538SAndroid Build Coastguard Workervoid OnResourceExhausted() { 26*6777b538SAndroid Build Coastguard Worker // Stop execution here if there is no callback installed. 27*6777b538SAndroid Build Coastguard Worker CHECK(g_resource_exhausted_function) << "system resource exhausted."; 28*6777b538SAndroid Build Coastguard Worker g_resource_exhausted_function(); 29*6777b538SAndroid Build Coastguard Worker } 30*6777b538SAndroid Build Coastguard Worker 31*6777b538SAndroid Build Coastguard Worker } // namespace base::win 32