Class: RelayHelper::Connection

Inherits:
Object
  • Object
show all
Defined in:
lib/weechat-relay-helper/connection.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(host, port, ssl) ⇒ Connection

Returns a new instance of Connection.



5
6
7
8
9
# File 'lib/weechat-relay-helper/connection.rb', line 5

def initialize host, port, ssl
  @host = host
  @port = port
  @ssl = ssl
end

Instance Attribute Details

#socketObject (readonly)

Returns the value of attribute socket.



4
5
6
# File 'lib/weechat-relay-helper/connection.rb', line 4

def socket
  @socket
end

Instance Method Details

#closeObject



43
44
45
46
47
48
49
# File 'lib/weechat-relay-helper/connection.rb', line 43

def close
  if @ssl
    close_ssl_connection @socket
  else
    close_plaintext_connection @socket
  end
end

#close_plaintext_connection(socket) ⇒ Object



22
23
24
# File 'lib/weechat-relay-helper/connection.rb', line 22

def close_plaintext_connection socket
  socket.close
end

#close_ssl_connection(socket) ⇒ Object



25
26
27
# File 'lib/weechat-relay-helper/connection.rb', line 25

def close_ssl_connection socket
  socket.close
end

#closed?Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/weechat-relay-helper/connection.rb', line 40

def closed?
  @socket.closed?
end

#establish_plaintext_connection(host, port) ⇒ Object



10
11
12
# File 'lib/weechat-relay-helper/connection.rb', line 10

def establish_plaintext_connection host, port
  TCPSocket.open(host, port)
end

#establish_ssl_connection(host, port) ⇒ Object



13
14
15
16
17
18
19
20
21
# File 'lib/weechat-relay-helper/connection.rb', line 13

def establish_ssl_connection host, port
  sock = TCPSocket.new host, port
  ssl_ctx = OpenSSL::SSL::SSLContext.new
  ssl_ctx.ssl_version = :SSLv23
  OpenSSL::SSL::SSLSocket.new(sock, ssl_ctx).tap do |sock|
    sock.sync_close = true
    sock.connect
  end
end

#openObject



50
51
52
53
54
55
56
# File 'lib/weechat-relay-helper/connection.rb', line 50

def open
  if @ssl
    @socket = establish_ssl_connection @host, @port
  else
    @socket = establish_plaintext_connection @host, @port
  end
end

#puts(string) ⇒ Object



34
35
36
# File 'lib/weechat-relay-helper/connection.rb', line 34

def puts string
  @socket.puts string
end

#read(num_bytes) ⇒ Object



28
29
30
# File 'lib/weechat-relay-helper/connection.rb', line 28

def read num_bytes
  @socket.read num_bytes
end

#read_nonblock(num_bytes) ⇒ Object



31
32
33
# File 'lib/weechat-relay-helper/connection.rb', line 31

def read_nonblock num_bytes
  @socket.read_nonblock num_bytes
end

#write(string) ⇒ Object



37
38
39
# File 'lib/weechat-relay-helper/connection.rb', line 37

def write string
  @socket.write string
end