Sha256: 2bb3b3eb71549643a749af8dbe814f5c348c082d51b0b25734e8a2e1c4fae8d2

Contents?: true

Size: 1.99 KB

Versions: 5

Compression:

Stored size: 1.99 KB

Contents

class Puppet::Network::Server
	attr_reader :server_type, :protocols, :address, :port

    def initialize(args = {})
        @server_type = Puppet[:servertype] or raise "No servertype configuration found."  # e.g.,  WEBrick, Mongrel, etc.
        http_server_class || raise(ArgumentError, "Could not determine HTTP Server class for server type [#{@server_type}]")
        @address = args[:address] || Puppet[:bindaddress] || 
            raise(ArgumentError, "Must specify :address or configure Puppet :bindaddress.")
        @port = args[:port] || Puppet[:masterport] ||
            raise(ArgumentError, "Must specify :port or configure Puppet :masterport")
	    @protocols = []
	    @listening = false
	    @routes = {}
	    self.register(args[:handlers]) if args[:handlers]
    end

    def register(*indirections)
	    raise ArgumentError, "Indirection names are required." if indirections.empty?
	    indirections.flatten.each { |i| @routes[i.to_sym] = true }
    end
  
    def unregister(*indirections)
        raise "Cannot unregister indirections while server is listening." if listening?
	    indirections = @routes.keys if indirections.empty?
	    
	    indirections.flatten.each do |i|
	        raise(ArgumentError, "Indirection [%s] is unknown." % i) unless @routes[i.to_sym]
        end
        
        indirections.flatten.each do |i|
	        @routes.delete(i.to_sym)
	    end
    end

    def listening?
	    @listening
    end
  
    def listen
	    raise "Cannot listen -- already listening." if listening?
	    http_server.listen(@routes.dup)
	    @listening = true
    end
  
    def unlisten
	    raise "Cannot unlisten -- not currently listening." unless listening?
	    http_server.unlisten   
	    @listening = false
    end
    
    def http_server_class
        http_server_class_by_type(@server_type)
    end

  private
  
    def http_server
        @http_server ||= http_server_class.new
    end
    
    def http_server_class_by_type(kind)
        Puppet::Network::HTTP.server_class_by_type(kind)
    end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
puppet-0.24.0 lib/puppet/network/server.rb
puppet-0.24.2 lib/puppet/network/server.rb
puppet-0.24.3 lib/puppet/network/server.rb
puppet-0.24.1 lib/puppet/network/server.rb
puppet-0.24.4 lib/puppet/network/server.rb