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.
11namespace multi_process_function_list {
12
13namespace {
14
15typedef std::map<std::string, ChildFunctionPtr> MultiProcessTestMap;
16
17// Retrieve a reference to the global 'func name' -> func ptr map.
18MultiProcessTestMap &GetMultiprocessFuncMap() {
19  static MultiProcessTestMap test_name_to_func_ptr_map;
20  return test_name_to_func_ptr_map;
21}
22
23}  // namespace
24
25AppendMultiProcessTest::AppendMultiProcessTest(std::string test_name,
26                                               ChildFunctionPtr func_ptr) {
27  GetMultiprocessFuncMap()[test_name] = func_ptr;
28}
29
30int 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  }
39
40  return -1;
41}
42
43}  // namespace multi_process_function_list
44