Class: UV::TCP

Inherits:
Object
  • Object
show all
Includes:
Net, Stream
Defined in:
lib/uv/tcp.rb

Defined Under Namespace

Modules: SocketMethods Classes: Socket4, Socket6

Instance Method Summary collapse

Methods included from Stream

#accept, #listen, #readable?, #shutdown, #start_read, #stop_read, #writable?, #write

Methods included from Handle

#active?, close, #close, #closing?, #initialize, #ref, #unref

Methods included from Assertions

#assert_arity, #assert_block, #assert_boolean, #assert_signal, #assert_type

Methods included from Resource

#check_result, #check_result!, #to_ptr

Methods included from Listener

define_callback, undefine_callbacks

Instance Method Details

#bind(ip, port) ⇒ Object



13
14
15
16
17
18
19
20
21
22
# File 'lib/uv/tcp.rb', line 13

def bind(ip, port)
  assert_type(String, ip, "ip must be a String")
  assert_type(Integer, port, "port must be an Integer")

  @socket = create_socket(IPAddr.new(ip), port)

  @socket.bind

  self
end

#connect(ip, port, &block) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/uv/tcp.rb', line 24

def connect(ip, port, &block)
  assert_block(block)
  assert_arity(1, block)
  assert_type(String, ip, "ip must be a String")
  assert_type(Integer, port, "port must be an Integer")

  @connect_block = block
  @socket        = create_socket(IPAddr.new(ip), port)

  @socket.connect(callback(:on_connect))

  self
end

#disable_keepaliveObject



70
71
72
73
74
# File 'lib/uv/tcp.rb', line 70

def disable_keepalive
  check_result! UV.tcp_keepalive(handle, 0, 0)

  self
end

#disable_nodelayObject



56
57
58
59
60
# File 'lib/uv/tcp.rb', line 56

def disable_nodelay
  check_result! UV.tcp_nodelay(handle, 0)

  self
end

#disable_simultaneous_acceptsObject



82
83
84
85
86
# File 'lib/uv/tcp.rb', line 82

def disable_simultaneous_accepts
  check_result! UV.tcp_simultaneous_accepts(handle, 0)

  self
end

#enable_keepalive(delay) ⇒ Object



62
63
64
65
66
67
68
# File 'lib/uv/tcp.rb', line 62

def enable_keepalive(delay)
  assert_type(Integer, delay, "delay must be an Integer")

  check_result! UV.tcp_keepalive(handle, 1, delay)

  self
end

#enable_nodelayObject



50
51
52
53
54
# File 'lib/uv/tcp.rb', line 50

def enable_nodelay
  check_result! UV.tcp_nodelay(handle, 1)

  self
end

#enable_simultaneous_acceptsObject



76
77
78
79
80
# File 'lib/uv/tcp.rb', line 76

def enable_simultaneous_accepts
  check_result! UV.tcp_simultaneous_accepts(handle, 1)

  self
end

#open(fd) ⇒ Object



7
8
9
10
11
# File 'lib/uv/tcp.rb', line 7

def open(fd)
  check_result! UV.tcp_open(handle, fd)

  self
end

#peernameObject



44
45
46
47
48
# File 'lib/uv/tcp.rb', line 44

def peername
  sockaddr, len = get_sockaddr_and_len
  check_result! UV.tcp_getpeername(handle, sockaddr, len)
  get_ip_and_port(UV::Sockaddr.new(sockaddr), len.get_int(0))
end

#socknameObject



38
39
40
41
42
# File 'lib/uv/tcp.rb', line 38

def sockname
  sockaddr, len = get_sockaddr_and_len
  check_result! UV.tcp_getsockname(handle, sockaddr, len)
  get_ip_and_port(UV::Sockaddr.new(sockaddr), len.get_int(0))
end