Sha256: a829294a945c4ba8eacc9a340108450217f8c21447a7ab299abaec10cff4bfbc

Contents?: true

Size: 855 Bytes

Versions: 52

Compression:

Stored size: 855 Bytes

Contents

require 'openssl'

module Mongo

  # A basic wrapper over Ruby's SSLSocket that initiates
  # a TCP connection over SSL and then provides an basic interface
  # mirroring Ruby's TCPSocket, vis., TCPSocket#send and TCPSocket#read.
  class SSLSocket

    attr_accessor :pool

    def initialize(host, port)
      @socket = ::TCPSocket.new(host, port)
      @ssl = OpenSSL::SSL::SSLSocket.new(@socket)
      @ssl.sync_close = true
      @ssl.connect
    end

    def setsockopt(key, value, n)
      @socket.setsockopt(key, value, n)
    end

    # Write to the SSL socket.
    #
    # @param buffer a buffer to send.
    # @param flags socket flags. Because Ruby's SSL
    def send(buffer, flags=0)
      @ssl.syswrite(buffer)
    end

    def read(length, buffer)
      @ssl.sysread(length, buffer)
    end

    def close
      @ssl.close
    end
  end
end

Version data entries

52 entries across 52 versions & 3 rubygems

Version Path
classiccms-0.7.5 vendor/bundle/gems/mongo-1.6.1/lib/mongo/util/ssl_socket.rb
classiccms-0.7.4 vendor/bundle/gems/mongo-1.6.1/lib/mongo/util/ssl_socket.rb
classiccms-0.7.3 vendor/bundle/gems/mongo-1.6.1/lib/mongo/util/ssl_socket.rb
classiccms-0.7.2 vendor/bundle/gems/mongo-1.6.1/lib/mongo/util/ssl_socket.rb
classiccms-0.7.1 vendor/bundle/gems/mongo-1.6.1/lib/mongo/util/ssl_socket.rb
classiccms-0.7.0 vendor/bundle/gems/mongo-1.6.1/lib/mongo/util/ssl_socket.rb
classiccms-0.6.9 vendor/bundle/gems/mongo-1.6.1/lib/mongo/util/ssl_socket.rb
classiccms-0.6.8 vendor/bundle/gems/mongo-1.6.1/lib/mongo/util/ssl_socket.rb
classiccms-0.6.7 vendor/bundle/gems/mongo-1.6.1/lib/mongo/util/ssl_socket.rb
classiccms-0.6.6 vendor/bundle/gems/mongo-1.6.1/lib/mongo/util/ssl_socket.rb
classiccms-0.6.5 vendor/bundle/gems/mongo-1.6.1/lib/mongo/util/ssl_socket.rb
classiccms-0.6.4 vendor/bundle/gems/mongo-1.6.1/lib/mongo/util/ssl_socket.rb
classiccms-0.6.3 vendor/bundle/gems/mongo-1.6.1/lib/mongo/util/ssl_socket.rb
classiccms-0.6.2 vendor/bundle/gems/mongo-1.6.1/lib/mongo/util/ssl_socket.rb
classiccms-0.6.1 vendor/bundle/gems/mongo-1.6.1/lib/mongo/util/ssl_socket.rb
classiccms-0.6.0 vendor/bundle/gems/mongo-1.6.1/lib/mongo/util/ssl_socket.rb
classiccms-0.5.17 vendor/bundle/gems/mongo-1.6.1/lib/mongo/util/ssl_socket.rb
classiccms-0.5.16 vendor/bundle/gems/mongo-1.6.1/lib/mongo/util/ssl_socket.rb
classiccms-0.5.15 vendor/bundle/gems/mongo-1.6.1/lib/mongo/util/ssl_socket.rb
classiccms-0.5.14 vendor/bundle/gems/mongo-1.6.1/lib/mongo/util/ssl_socket.rb