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