module Sanford::Server::InstanceMethods

Attributes

server_data[R]

Public Class Methods

new() click to toggle source
# File lib/sanford/server.rb, line 25
def initialize
  config = self.class.config
  begin
    config.validate!
  rescue InvalidError => exception
    exception.set_backtrace(caller)
    raise exception
  end

  @server_data = ServerData.new({
    :name                => config.name,
    :ip                  => config.ip,
    :port                => config.port,
    :pid_file            => config.pid_file,
    :shutdown_timeout    => config.shutdown_timeout,
    :worker_class        => config.worker_class,
    :worker_params       => config.worker_params,
    :num_workers         => config.num_workers,
    :error_procs         => config.error_procs,
    :template_source     => config.template_source,
    :logger              => config.logger,
    :router              => config.router,
    :receives_keep_alive => config.receives_keep_alive,
    :verbose_logging     => config.verbose_logging,
    :routes              => config.routes
  })

  @dat_tcp_server = DatTCP::Server.new(self.server_data.worker_class, {
    :num_workers      => self.server_data.num_workers,
    :logger           => self.server_data.dtcp_logger,
    :shutdown_timeout => self.server_data.shutdown_timeout,
    :worker_params    => self.server_data.worker_params.merge({
      :sanford_server_data => self.server_data
    })
  })
end

Public Instance Methods

client_file_descriptors() click to toggle source
# File lib/sanford/server.rb, line 74
def client_file_descriptors
  @dat_tcp_server.client_file_descriptors
end
configured_ip() click to toggle source
# File lib/sanford/server.rb, line 82
def configured_ip
  @server_data.ip
end
configured_port() click to toggle source
# File lib/sanford/server.rb, line 86
def configured_port
  @server_data.port
end
file_descriptor() click to toggle source
# File lib/sanford/server.rb, line 70
def file_descriptor
  @dat_tcp_server.file_descriptor
end
halt(*args) click to toggle source
# File lib/sanford/server.rb, line 131
def halt(*args)
  @dat_tcp_server.halt(*args)
end
ip() click to toggle source
# File lib/sanford/server.rb, line 62
def ip
  @dat_tcp_server.ip
end
listen(*args) click to toggle source
# File lib/sanford/server.rb, line 110
def listen(*args)
  args = [@server_data.ip, @server_data.port] if args.empty?
  @dat_tcp_server.listen(*args) do |server_socket|
    configure_tcp_server(server_socket)
  end
  @server_data.ip   = self.ip
  @server_data.port = self.port
end
listening?() click to toggle source
# File lib/sanford/server.rb, line 135
def listening?
  @dat_tcp_server.listening?
end
logger() click to toggle source
# File lib/sanford/server.rb, line 98
def logger
  @server_data.logger
end
name() click to toggle source
# File lib/sanford/server.rb, line 78
def name
  @server_data.name
end
pause(*args) click to toggle source
# File lib/sanford/server.rb, line 123
def pause(*args)
  @dat_tcp_server.pause(*args)
end
paused?() click to toggle source
# File lib/sanford/server.rb, line 143
def paused?
  self.listening? && !self.running?
end
pid_file() click to toggle source
# File lib/sanford/server.rb, line 94
def pid_file
  @server_data.pid_file
end
port() click to toggle source
# File lib/sanford/server.rb, line 66
def port
  @dat_tcp_server.port
end
process_label() click to toggle source
# File lib/sanford/server.rb, line 90
def process_label
  @server_data.process_label
end
router() click to toggle source
# File lib/sanford/server.rb, line 102
def router
  @server_data.router
end
running?() click to toggle source
# File lib/sanford/server.rb, line 139
def running?
  @dat_tcp_server.running?
end
start(*args) click to toggle source
# File lib/sanford/server.rb, line 119
def start(*args)
  @dat_tcp_server.start(*args)
end
stop(*args) click to toggle source
# File lib/sanford/server.rb, line 127
def stop(*args)
  @dat_tcp_server.stop(*args)
end
template_source() click to toggle source
# File lib/sanford/server.rb, line 106
def template_source
  @server_data.template_source
end

Private Instance Methods

configure_tcp_server(tcp_server) click to toggle source

TCP_NODELAY is set to disable buffering. In the case of Sanford communication, we have all the information we need to send up front and are closing the connection, so it doesn't need to buffer. See linux.die.net/man/7/tcp

# File lib/sanford/server.rb, line 153
def configure_tcp_server(tcp_server)
  tcp_server.setsockopt(::Socket::IPPROTO_TCP, ::Socket::TCP_NODELAY, true)
end