Class: Net::InternetMessageIO
- Inherits:
-
BufferedIO
- Object
- BufferedIO
- Net::InternetMessageIO
- Defined in:
- lib/net/protocol.rb
Overview
:nodoc: internal use only
Instance Attribute Summary
Attributes inherited from BufferedIO
#debug_output, #io, #read_timeout
Class Method Summary collapse
Instance Method Summary collapse
-
#each_list_item ⇒ Object
*library private* (cannot handle 'break').
-
#each_message_chunk ⇒ Object
Read.
-
#initialize(io) ⇒ InternetMessageIO
constructor
A new instance of InternetMessageIO.
-
#write_message(src) ⇒ Object
Write.
- #write_message_0(src) ⇒ Object
- #write_message_by_block(&block) ⇒ Object
Methods inherited from BufferedIO
#close, #closed?, #inspect, #read, #read_all, #readline, #readuntil, #write, #writeline
Constructor Details
#initialize(io) ⇒ InternetMessageIO
Returns a new instance of InternetMessageIO.
213 214 215 216 |
# File 'lib/net/protocol.rb', line 213 def initialize(io) super @wbuf = nil end |
Class Method Details
.old_open(addr, port, open_timeout = nil, read_timeout = nil, debug_output = nil) ⇒ Object
203 204 205 206 207 208 209 210 211 |
# File 'lib/net/protocol.rb', line 203 def InternetMessageIO.old_open(addr, port, open_timeout = nil, read_timeout = nil, debug_output = nil) debug_output << "opening connection to #{addr}...\n" if debug_output s = timeout(open_timeout) { TCPsocket.new(addr, port) } io = new(s) io.read_timeout = read_timeout io.debug_output = debug_output io end |
Instance Method Details
#each_list_item ⇒ Object
*library private* (cannot handle 'break')
235 236 237 238 239 |
# File 'lib/net/protocol.rb', line 235 def each_list_item while (str = readuntil("\r\n")) != ".\r\n" yield str.chop end end |
#each_message_chunk ⇒ Object
Read
222 223 224 225 226 227 228 229 230 231 232 |
# File 'lib/net/protocol.rb', line 222 def LOG 'reading message...' LOG_off() read_bytes = 0 while (line = readuntil("\r\n")) != ".\r\n" read_bytes += line.size yield line.sub(/\A\./, '') end LOG_on() LOG "read message (#{read_bytes} bytes)" end |
#write_message(src) ⇒ Object
Write
253 254 255 256 257 258 259 260 261 262 263 264 |
# File 'lib/net/protocol.rb', line 253 def (src) LOG "writing message from #{src.class}" LOG_off() len = writing { using_each_crlf_line { src } } LOG_on() LOG "wrote #{len} bytes" len end |
#write_message_0(src) ⇒ Object
241 242 243 244 245 246 247 |
# File 'lib/net/protocol.rb', line 241 def (src) prev = @written_bytes each_crlf_line(src) do |line| write0 line.sub(/\A\./, '..') end @written_bytes - prev end |
#write_message_by_block(&block) ⇒ Object
266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 |
# File 'lib/net/protocol.rb', line 266 def (&block) LOG 'writing message from block' LOG_off() len = writing { using_each_crlf_line { begin block.call(WriteAdapter.new(self, :write_message_0)) rescue LocalJumpError # allow `break' from writer block end } } LOG_on() LOG "wrote #{len} bytes" len end |