Class: DatawireQuarkCore::Servers

Inherits:
Object
  • Object
show all
Includes:
Celluloid
Defined in:
lib/datawire-quark-core.rb

Instance Method Summary collapse

Constructor Details

#initialize(events) ⇒ Servers

Returns a new instance of Servers.



769
770
771
772
# File 'lib/datawire-quark-core.rb', line 769

def initialize(events)
  @servers = {}
  @events= events
end

Instance Method Details

#add(adapter) ⇒ Object



773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
# File 'lib/datawire-quark-core.rb', line 773

def add(adapter)
  if not adapter.scheme_supported?
    error = "${adapter.uri.scheme} is not supported"
    @events.event { adapter.servlet.onServletError(adapter.url, ::Quark.quark.ServletError.new(error)) }
    return
  end
  if adapter.secure?
    error = "${adapter.uri.scheme} is not yet supported"
    @events.event { adapter.servlet.onServletError(adapter.url, ::Quark.quark.ServletError.new(error)) }
    return
  end
  server = @servers[adapter.key]
  if server.nil?
    if adapter.secure?
      server = HTTPSServer.new(adapter.uri.hostname, adapter.uri.port, @events)
    else
      server = HTTPServer.new(adapter.uri.hostname, adapter.uri.port, @events)
    end
    # in case the port was 0 this will mutate the #effective_url, and #key of adapter
    adapter.uri.port = server.local_address.ip_port
    @servers[adapter.key] = server
  end
  server.add(adapter)
end