Class: Dalli::Socket::TCP
- Inherits:
-
TCPSocket
- Object
- TCPSocket
- Dalli::Socket::TCP
- Includes:
- InstanceMethods
- Defined in:
- lib/dalli/socket.rb
Overview
A standard TCP socket between the Dalli client and the Memcached server.
Constant Summary
Constants included from InstanceMethods
InstanceMethods::FILTERED_OUT_OPTIONS, InstanceMethods::WAIT_RCS
Instance Attribute Summary collapse
-
#options ⇒ Object
options - supports enhanced logging in the case of a timeout.
Class Method Summary collapse
- .init_socket_options(sock, options) ⇒ Object
- .open(host, port, options = {}) ⇒ Object
- .wrapping_ssl_socket(tcp_socket, host, ssl_context) ⇒ Object
Methods included from InstanceMethods
#append_to_buffer?, #logged_options, #nonblock_timed_out?, #read_available, #readfull
Instance Attribute Details
#options ⇒ Object
options - supports enhanced logging in the case of a timeout
89 90 91 |
# File 'lib/dalli/socket.rb', line 89 def @options end |
Class Method Details
.init_socket_options(sock, options) ⇒ Object
101 102 103 104 105 106 |
# File 'lib/dalli/socket.rb', line 101 def self.(sock, ) sock.setsockopt(::Socket::IPPROTO_TCP, ::Socket::TCP_NODELAY, true) sock.setsockopt(::Socket::SOL_SOCKET, ::Socket::SO_KEEPALIVE, true) if [:keepalive] sock.setsockopt(::Socket::SOL_SOCKET, ::Socket::SO_RCVBUF, [:rcvbuf]) if [:rcvbuf] sock.setsockopt(::Socket::SOL_SOCKET, ::Socket::SO_SNDBUF, [:sndbuf]) if [:sndbuf] end |
.open(host, port, options = {}) ⇒ Object
91 92 93 94 95 96 97 98 99 |
# File 'lib/dalli/socket.rb', line 91 def self.open(host, port, = {}) Timeout.timeout([:socket_timeout]) do sock = new(host, port) sock. = { host: host, port: port }.merge() (sock, ) [:ssl_context] ? wrapping_ssl_socket(sock, host, [:ssl_context]) : sock end end |
.wrapping_ssl_socket(tcp_socket, host, ssl_context) ⇒ Object
108 109 110 111 112 113 114 |
# File 'lib/dalli/socket.rb', line 108 def self.wrapping_ssl_socket(tcp_socket, host, ssl_context) ssl_socket = Dalli::Socket::SSLSocket.new(tcp_socket, ssl_context) ssl_socket.hostname = host ssl_socket.sync_close = true ssl_socket.connect ssl_socket end |