diff options
Diffstat (limited to 'lib/puppet/network/http/mongrel.rb')
-rw-r--r-- | lib/puppet/network/http/mongrel.rb | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/lib/puppet/network/http/mongrel.rb b/lib/puppet/network/http/mongrel.rb index bbba69fe3..ab1e616b1 100644 --- a/lib/puppet/network/http/mongrel.rb +++ b/lib/puppet/network/http/mongrel.rb @@ -6,10 +6,17 @@ class Puppet::Network::HTTP::Mongrel end def listen(args = {}) - raise ArgumentError, ":handlers must be specified." if !args[:handlers] or args[:handlers].keys.empty? + raise ArgumentError, ":handlers must be specified." if !args[:handlers] or args[:handlers].empty? + raise ArgumentError, ":protocols must be specified." if !args[:protocols] or args[:protocols].empty? raise ArgumentError, ":address must be specified." unless args[:address] raise ArgumentError, ":port must be specified." unless args[:port] raise "Mongrel server is already listening" if listening? + + @protocols = args[:protocols] + @handlers = args[:handlers] + + setup_handlers + @server = Mongrel::HttpServer.new(args[:address], args[:port]) @server.run @listening = true @@ -24,4 +31,18 @@ class Puppet::Network::HTTP::Mongrel def listening? @listening end + + private + + def setup_handlers + @protocols.each do |protocol| + @handlers.each do |handler| + class_for_protocol_handler(protocol, handler).new + end + end + end + + def class_for_protocol_handler(protocol, handler) + Class.new + end end |