]> git.proxmox.com Git - ceph.git/blame - ceph/src/jaegertracing/thrift/lib/rb/lib/thrift/transport/ssl_socket.rb
buildsys: switch source download to quincy
[ceph.git] / ceph / src / jaegertracing / thrift / lib / rb / lib / thrift / transport / ssl_socket.rb
CommitLineData
f67539c2
TL
1# encoding: ascii-8bit
2#
3# Licensed to the Apache Software Foundation (ASF) under one
4# or more contributor license agreements. See the NOTICE file
5# distributed with this work for additional information
6# regarding copyright ownership. The ASF licenses this file
7# to you under the Apache License, Version 2.0 (the
8# "License"); you may not use this file except in compliance
9# with the License. You may obtain a copy of the License at
10#
11# http://www.apache.org/licenses/LICENSE-2.0
12#
13# Unless required by applicable law or agreed to in writing,
14# software distributed under the License is distributed on an
15# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16# KIND, either express or implied. See the License for the
17# specific language governing permissions and limitations
18# under the License.
19
20module Thrift
21 class SSLSocket < Socket
22 def initialize(host='localhost', port=9090, timeout=nil, ssl_context=nil)
23 super(host, port, timeout)
24 @ssl_context = ssl_context
25 end
26
27 attr_accessor :ssl_context
28
29 def open
30 socket = super
31 @handle = OpenSSL::SSL::SSLSocket.new(socket, @ssl_context)
32 begin
33 @handle.connect_nonblock
34 @handle.post_connection_check(@host)
35 @handle
36 rescue IO::WaitReadable
37 IO.select([ @handle ], nil, nil, @timeout)
38 retry
39 rescue IO::WaitWritable
40 IO.select(nil, [ @handle ], nil, @timeout)
41 retry
42 rescue StandardError => e
43 raise TransportException.new(TransportException::NOT_OPEN, "Could not connect to #{@desc}: #{e}")
44 end
45 end
46
47 def to_s
48 "ssl(#{super.to_s})"
49 end
50 end
51end