lib/dalli/socket.rb in dalli-2.7.4 vs lib/dalli/socket.rb in dalli-2.7.5
- old
+ new
@@ -1,7 +1,16 @@
require 'rbconfig'
+module Dalli::Server::TCPSocketOptions
+ def setsockopts(sock, options)
+ sock.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, true)
+ sock.setsockopt(Socket::SOL_SOCKET, Socket::SO_KEEPALIVE, true) if options[:keepalive]
+ sock.setsockopt(Socket::SOL_SOCKET, Socket::SO_RCVBUF, options[:rcvbuf]) if options[:rcvbuf]
+ sock.setsockopt(Socket::SOL_SOCKET, Socket::SO_SNDBUF, options[:sndbuf]) if options[:sndbuf]
+ end
+end
+
begin
require 'kgio'
puts "Using kgio socket IO" if defined?($TESTING) && $TESTING
class Dalli::Server::KSocket < Kgio::Socket
@@ -42,15 +51,16 @@
value
end
end
class Dalli::Server::KSocket::TCP < Dalli::Server::KSocket
+ extend Dalli::Server::TCPSocketOptions
+
def self.open(host, port, server, options = {})
addr = Socket.pack_sockaddr_in(port, host)
sock = start(addr)
- sock.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, true)
- sock.setsockopt(Socket::SOL_SOCKET, Socket::SO_KEEPALIVE, true) if options[:keepalive]
+ setsockopts(sock, options)
sock.options = options
sock.server = server
sock.kgio_wait_writable
sock
end
@@ -112,16 +122,16 @@
receiver.send(:include, InstanceMethods)
end
end
class Dalli::Server::KSocket::TCP < TCPSocket
+ extend Dalli::Server::TCPSocketOptions
include Dalli::Server::KSocket
def self.open(host, port, server, options = {})
Timeout.timeout(options[:socket_timeout]) do
sock = new(host, port)
- sock.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, true)
- sock.setsockopt(Socket::SOL_SOCKET, Socket::SO_KEEPALIVE, true) if options[:keepalive]
+ setsockopts(sock, options)
sock.options = {:host => host, :port => port}.merge(options)
sock.server = server
sock
end
end