[email protected] | 307f536 | 2008-10-29 20:46:04 | [diff] [blame] | 1 | // Copyright (c) 2008 The Chromium Authors. All rights reserved. |
2 | // Use of this source code is governed by a BSD-style license that can be | ||||
3 | // found in the LICENSE file. | ||||
4 | |||||
5 | #include "multiprocess_func_list.h" | ||||
6 | |||||
7 | #include <map> | ||||
8 | |||||
9 | // Helper functions to maintain mapping of "test name"->test func. | ||||
10 | // The information is accessed via a global map. | ||||
11 | namespace multi_process_function_list { | ||||
[email protected] | f0a51fb5 | 2009-03-05 12:46:38 | [diff] [blame] | 12 | |
[email protected] | 307f536 | 2008-10-29 20:46:04 | [diff] [blame] | 13 | namespace { |
14 | |||||
15 | typedef std::map<std::string, ChildFunctionPtr> MultiProcessTestMap; | ||||
[email protected] | f0a51fb5 | 2009-03-05 12:46:38 | [diff] [blame] | 16 | |
[email protected] | 307f536 | 2008-10-29 20:46:04 | [diff] [blame] | 17 | // Retrieve a reference to the global 'func name' -> func ptr map. |
18 | MultiProcessTestMap &GetMultiprocessFuncMap() { | ||||
19 | static MultiProcessTestMap test_name_to_func_ptr_map; | ||||
20 | return test_name_to_func_ptr_map; | ||||
21 | } | ||||
[email protected] | f0a51fb5 | 2009-03-05 12:46:38 | [diff] [blame] | 22 | |
[email protected] | 307f536 | 2008-10-29 20:46:04 | [diff] [blame] | 23 | } // namespace |
24 | |||||
[email protected] | f0a51fb5 | 2009-03-05 12:46:38 | [diff] [blame] | 25 | AppendMultiProcessTest::AppendMultiProcessTest(std::string test_name, |
[email protected] | 307f536 | 2008-10-29 20:46:04 | [diff] [blame] | 26 | ChildFunctionPtr func_ptr) { |
27 | GetMultiprocessFuncMap()[test_name] = func_ptr; | ||||
28 | } | ||||
29 | |||||
30 | int InvokeChildProcessTest(std::string test_name) { | ||||
31 | MultiProcessTestMap &func_lookup_table = GetMultiprocessFuncMap(); | ||||
32 | MultiProcessTestMap::iterator it = func_lookup_table.find(test_name); | ||||
33 | if (it != func_lookup_table.end()) { | ||||
34 | ChildFunctionPtr func = it->second; | ||||
35 | if (func) { | ||||
36 | return (*func)(); | ||||
37 | } | ||||
38 | } | ||||
[email protected] | f0a51fb5 | 2009-03-05 12:46:38 | [diff] [blame] | 39 | |
[email protected] | 307f536 | 2008-10-29 20:46:04 | [diff] [blame] | 40 | return -1; |
41 | } | ||||
42 | |||||
43 | } // namespace multi_process_function_list |