static */
| 47 | |
| 48 | /* static */ |
| 49 | Status ServerFactory::GetFactory(const ServerDef& server_def, |
| 50 | ServerFactory** out_factory) { |
| 51 | mutex_lock l(*get_server_factory_lock()); |
| 52 | for (const auto& server_factory : *server_factories()) { |
| 53 | if (server_factory.second->AcceptsOptions(server_def)) { |
| 54 | *out_factory = server_factory.second; |
| 55 | return Status::OK(); |
| 56 | } |
| 57 | } |
| 58 | |
| 59 | std::vector<string> server_names; |
| 60 | for (const auto& server_factory : *server_factories()) { |
| 61 | server_names.push_back(server_factory.first); |
| 62 | } |
| 63 | |
| 64 | return errors::NotFound( |
| 65 | "No server factory registered for the given ServerDef: ", |
| 66 | server_def.DebugString(), "\nThe available server factories are: [ ", |
| 67 | absl::StrJoin(server_names, ", "), " ]"); |
| 68 | } |
| 69 | |
| 70 | // Creates a server based on the given `server_def`, and stores it in |
| 71 | // `*out_server`. Returns OK on success, otherwise returns an error. |
nothing calls this directly
no test coverage detected