Class: Networking::TCPClient
- Inherits:
-
Object
- Object
- Networking::TCPClient
- Defined in:
- lib/networking/tcp.rb
Overview
TCPServer
Instance Attribute Summary collapse
-
#tcp_thread ⇒ Object
readonly
Returns the value of attribute tcp_thread.
Instance Method Summary collapse
-
#initialize(host, port, obj_clb = nil, reconnected_clb = nil) ⇒ TCPClient
constructor
A new instance of TCPClient.
-
#open_socket ⇒ Object
This function may be executed only from one thread!!! or in synchronized manner.
- #send_obj(obj) ⇒ Object
Constructor Details
#initialize(host, port, obj_clb = nil, reconnected_clb = nil) ⇒ TCPClient
Returns a new instance of TCPClient.
132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
# File 'lib/networking/tcp.rb', line 132 def initialize(host, port, obj_clb=nil, reconnected_clb=nil) @host = host @port = port @tcp_socket = nil @obj_clb = obj_clb @reconnected_clb = reconnected_clb # Variable to signal when remote server is ready. @remote_server_available = ConditionVariable.new @remote_server_available_mutex = Mutex.new Log.debug3("Start TCPClient initialize with @obj_clb: %s", @obj_clb) if @obj_clb != nil @tcp_thread = start_reading @tcp_thread.abort_on_exception = true end open_socket unless socket_good? Log.debug3("End TCPClient initialize.") end |
Instance Attribute Details
#tcp_thread ⇒ Object (readonly)
Returns the value of attribute tcp_thread.
130 131 132 |
# File 'lib/networking/tcp.rb', line 130 def tcp_thread @tcp_thread end |
Instance Method Details
#open_socket ⇒ Object
This function may be executed only from one thread!!! or in synchronized manner. private
165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 |
# File 'lib/networking/tcp.rb', line 165 def open_socket Log.debug1("Connecting to content server %s:%s", @host, @port) begin @tcp_socket = TCPSocket.new(@host, @port) rescue Errno::ECONNREFUSED Log.warning('Connection refused') end Log.debug3("Reconnect clb: %s", @reconnected_clb) if socket_good? @remote_server_available_mutex.synchronize { @remote_server_available.signal } @reconnected_clb.call if @reconnected_clb != nil && socket_good? end end |
#send_obj(obj) ⇒ Object
150 151 152 153 154 155 156 157 158 159 160 161 |
# File 'lib/networking/tcp.rb', line 150 def send_obj(obj) Log.debug1('send_obj') open_socket unless socket_good? Log.debug1('after open') if !socket_good? Log.warning('Socket not opened for writing, skipping send.') return false end Log.debug2("writing... socket port: %s", @tcp_socket.peeraddr) bytes_written = Networking.write_to_stream(@tcp_socket, obj) return bytes_written end |