/**
  * Creates a network module that custom networking classes can be plugged into.
  *
  * @param settings The settings for the node
  * @param transportClient True if only transport classes should be allowed to be registered, false
  *     otherwise.
  */
 public NetworkModule(
     Settings settings,
     boolean transportClient,
     List<NetworkPlugin> plugins,
     ThreadPool threadPool,
     BigArrays bigArrays,
     CircuitBreakerService circuitBreakerService,
     NamedWriteableRegistry namedWriteableRegistry,
     NetworkService networkService) {
   this.settings = settings;
   this.transportClient = transportClient;
   for (NetworkPlugin plugin : plugins) {
     if (transportClient == false && HTTP_ENABLED.get(settings)) {
       Map<String, Supplier<HttpServerTransport>> httpTransportFactory =
           plugin.getHttpTransports(
               settings,
               threadPool,
               bigArrays,
               circuitBreakerService,
               namedWriteableRegistry,
               networkService);
       for (Map.Entry<String, Supplier<HttpServerTransport>> entry :
           httpTransportFactory.entrySet()) {
         registerHttpTransport(entry.getKey(), entry.getValue());
       }
     }
     Map<String, Supplier<Transport>> httpTransportFactory =
         plugin.getTransports(
             settings,
             threadPool,
             bigArrays,
             circuitBreakerService,
             namedWriteableRegistry,
             networkService);
     for (Map.Entry<String, Supplier<Transport>> entry : httpTransportFactory.entrySet()) {
       registerTransport(entry.getKey(), entry.getValue());
     }
     List<TransportInterceptor> transportInterceptors =
         plugin.getTransportInterceptors(namedWriteableRegistry);
     for (TransportInterceptor interceptor : transportInterceptors) {
       registerTransportInterceptor(interceptor);
     }
   }
 }