| 2430 | } |
| 2431 | |
| 2432 | void MultiVersionApi::setNetworkOptionInternal(FDBNetworkOptions::Option option, Optional<StringRef> value) { |
| 2433 | bool forwardOption = false; |
| 2434 | |
| 2435 | auto itr = FDBNetworkOptions::optionInfo.find(option); |
| 2436 | if (itr != FDBNetworkOptions::optionInfo.end()) { |
| 2437 | TraceEvent("SetNetworkOption").detail("Option", itr->second.name); |
| 2438 | } else { |
| 2439 | TraceEvent("UnknownNetworkOption").detail("Option", option); |
| 2440 | throw invalid_option(); |
| 2441 | } |
| 2442 | |
| 2443 | if (option == FDBNetworkOptions::DISABLE_MULTI_VERSION_CLIENT_API) { |
| 2444 | validateOption(value, false, true); |
| 2445 | disableMultiVersionClientApi(); |
| 2446 | } else if (option == FDBNetworkOptions::CALLBACKS_ON_EXTERNAL_THREADS) { |
| 2447 | validateOption(value, false, true); |
| 2448 | setCallbacksOnExternalThreads(); |
| 2449 | } else if (option == FDBNetworkOptions::EXTERNAL_CLIENT_LIBRARY) { |
| 2450 | validateOption(value, true, false, false); |
| 2451 | addExternalLibrary(abspath(value.get().toString()), false); |
| 2452 | } else if (option == FDBNetworkOptions::EXTERNAL_CLIENT_DIRECTORY) { |
| 2453 | validateOption(value, true, false, false); |
| 2454 | addExternalLibraryDirectory(value.get().toString()); |
| 2455 | } else if (option == FDBNetworkOptions::DISABLE_LOCAL_CLIENT) { |
| 2456 | validateOption(value, false, true); |
| 2457 | disableLocalClient(); |
| 2458 | } else if (option == FDBNetworkOptions::SUPPORTED_CLIENT_VERSIONS) { |
| 2459 | ASSERT(value.present()); |
| 2460 | setSupportedClientVersions(value.get()); |
| 2461 | } else if (option == FDBNetworkOptions::EXTERNAL_CLIENT) { |
| 2462 | MutexHolder holder(lock); |
| 2463 | ASSERT(!value.present() && !networkStartSetup); |
| 2464 | externalClient = true; |
| 2465 | bypassMultiClientApi = true; |
| 2466 | forwardOption = true; |
| 2467 | } else if (option == FDBNetworkOptions::CLIENT_THREADS_PER_VERSION) { |
| 2468 | MutexHolder holder(lock); |
| 2469 | validateOption(value, true, false, false); |
| 2470 | if (networkStartSetup) { |
| 2471 | throw invalid_option(); |
| 2472 | } |
| 2473 | #if defined(__unixish__) |
| 2474 | threadCount = extractIntOption(value, 1, 1024); |
| 2475 | #else |
| 2476 | // multiple client threads are not supported on windows. |
| 2477 | threadCount = extractIntOption(value, 1, 1); |
| 2478 | #endif |
| 2479 | } else if (option == FDBNetworkOptions::CLIENT_TMP_DIR) { |
| 2480 | validateOption(value, true, false, false); |
| 2481 | tmpDir = abspath(value.get().toString()); |
| 2482 | } else if (option == FDBNetworkOptions::FUTURE_VERSION_CLIENT_LIBRARY) { |
| 2483 | validateOption(value, true, false, false); |
| 2484 | addExternalLibrary(abspath(value.get().toString()), true); |
| 2485 | } else { |
| 2486 | forwardOption = true; |
| 2487 | } |
| 2488 | |
| 2489 | if (forwardOption) { |
nothing calls this directly
no test coverage detected