lib/falcon/host.rb in falcon-0.32.1 vs lib/falcon/host.rb in falcon-0.33.0
- old
+ new
@@ -16,26 +16,14 @@
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-require 'async/io/endpoint'
+require_relative 'service'
-require_relative 'proxy'
-require_relative 'redirection'
-
-require 'async/container'
-require 'async/container/controller'
-require 'async/http/endpoint'
-
module Falcon
- class Host
- def initialize(environment)
- @environment = environment.flatten
- @evaluator = @environment.evaluator
- end
-
+ class Host < Service
def name
"Falcon Host for #{self.authority}"
end
def authority
@@ -60,38 +48,25 @@
def to_s
"\#<#{self.class} #{@evaluator.authority}>"
end
- def assume_privileges(path)
- stat = File.stat(path)
-
- Process::GID.change_privilege(stat.gid)
- Process::UID.change_privilege(stat.uid)
- end
-
- def spawn(container)
- container.spawn(name: self.name, restart: true) do |instance|
- path = File.join(self.root, "falcon.rb")
-
- assume_privileges(path)
-
- instance.exec("bundle", "exec", path)
- end
- end
-
def run(container)
if @environment.include?(:server)
bound_endpoint = self.bound_endpoint
container.run(name: self.name, restart: true) do |task, instance|
- Async.logger.info(self) {"Starting application server..."}
+ Async.logger.info(self) {"Starting application server, binding to #{self.endpoint}..."}
server = @evaluator.server
server.run
task.children.each(&:wait)
+ end
+
+ container.attach do
+ bound_endpoint.close
end
end
end
end
end