// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

[DartPackage="mojo_services"]
module http_server;

import "http_server/public/interfaces/http_server.mojom";
import "network/public/interfaces/net_address.mojom";

interface HttpServerFactory {
  // Creates an http server running on the specified local network address.  If
  // |local_address| is null, it will take the default value of 0.0.0.0 at a
  // system-allocated port.
  //
  // Note that the port value of 0 means that the operating system will pick
  // one of available ports. You can use HttpServer::GetPort() to retrieve the
  // allocated port.
  //
  // Only one backing server will be created for each local network address. It
  // will be shared among clients, if more than one client requests a server
  // running on a particular network address.
  //
  // TODO(ppi): would it be better to create a server only for the first caller
  // and require the access to it to be explicitly shared by the party that
  // requests it first?
  CreateHttpServer(HttpServer& server_request, mojo.NetAddress? local_address);
};
