Class: Necropsy::Analyzers::Dynamic::RedisTransport
- Inherits:
-
Object
- Object
- Necropsy::Analyzers::Dynamic::RedisTransport
- Includes:
- RedisNonblockingIO
- Defined in:
- lib/necropsy/analyzers/dynamic/redis_transport.rb
Constant Summary collapse
- CRLF =
"\r\n"
Instance Method Summary collapse
- #close ⇒ Object
- #command(*parts) ⇒ Object
- #connect ⇒ Object
-
#initialize(uri:, limits:, deadline:, redactor:) ⇒ RedisTransport
constructor
A new instance of RedisTransport.
Constructor Details
#initialize(uri:, limits:, deadline:, redactor:) ⇒ RedisTransport
Returns a new instance of RedisTransport.
19 20 21 22 23 24 25 26 |
# File 'lib/necropsy/analyzers/dynamic/redis_transport.rb', line 19 def initialize(uri:, limits:, deadline:, redactor:) @uri = uri @limits = limits @deadline = deadline @redactor = redactor @response_bytes = 0 @read_buffer = +'' end |
Instance Method Details
#close ⇒ Object
41 42 43 44 45 46 47 48 49 |
# File 'lib/necropsy/analyzers/dynamic/redis_transport.rb', line 41 def close socket&.close tcp_socket&.close unless socket.equal?(tcp_socket) rescue IOError, SystemCallError nil ensure @socket = nil @tcp_socket = nil end |
#command(*parts) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/necropsy/analyzers/dynamic/redis_transport.rb', line 51 def command(*parts) deadline.check! write_all(redis_command(parts)) response = read_response deadline.check! response rescue RedisCommandError raise rescue IOError, SystemCallError, OpenSSL::SSL::SSLError => e domain_error("Redis connection failed: #{e.}") end |
#connect ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/necropsy/analyzers/dynamic/redis_transport.rb', line 28 def connect @tcp_socket = connect_tcp @socket = uri.scheme == 'rediss' ? connect_tls : tcp_socket deadline.check! self rescue Error close raise rescue SystemCallError, SocketError, IO::TimeoutError, OpenSSL::SSL::SSLError => e close domain_error("Could not connect securely to Redis at #{target}: #{e.}") end |