Sha256: 685da3d431d4c446a13269ebd3392f1daae793583cfbe5d255dd5e73b9aa0882
Contents?: true
Size: 924 Bytes
Versions: 2
Compression:
Stored size: 924 Bytes
Contents
class Midori::Connection include Midori::Server attr_accessor :data def initialize(socket) @registered = false @socket = socket @monitor = nil @close_flag = false @data = '' listen(socket) end def listen(socket) EventLoop.register(socket, :rw) do |monitor| @monitor = monitor if monitor.readable? receive_data(monitor) end if monitor.writable? if !@data.empty? monitor.io.write_nonblock(@data) @data = '' elsif @close_flag close_connection end end end end def send_data(data) if @monitor.writable? @socket.write_nonblock(data) else @data << data end end def close_connection begin EventLoop.unregister @socket @socket.close rescue => e puts e end end def close_connection_after_writing @close_flag = true end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
em-midori-0.1.10 | lib/midori/connection.rb |
em-midori-0.1.9 | lib/midori/connection.rb |