Sha256: e5c03e89bd20ce9845a9623d62573829c2ac675bf1f11fa0c1809391ba48e2b1
Contents?: true
Size: 1.28 KB
Versions: 1
Compression:
Stored size: 1.28 KB
Contents
# encoding: utf-8 module Hatetepe module Connection class EventMachine < EM::Connection include Promise::Attribute promise :closed def initialize(callback = proc {}) @parser = HTTP::Parser.new(self) callback.call(self) end def parse(block) @parse = block end def serialize(message) serializer = Serializer.new(message, method(:send_data)) serializer.setup_body serializer.serialize end def receive_data(data) # p [__id__, :receive, data] # p data @parser << data # rescue => error # $stderr.puts(error.to_s) # @message.reject_close(error) if @message # close_connection end # def send_data(data) # # p [__id__, :send, data] # p data # super # end def close @reason ||= :self close_connection_after_writing end def unbind(reason) closed.fulfill(@reason || reason) end def on_headers_complete(_) @message = Support::Message.build(@parser) @parse.call(@message) end def on_body(chunk) @message.body.closed.progress(chunk) end def on_message_complete @message.close end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
hatetepe-0.6.0.pre.2 | lib/hatetepe/connection/eventmachine.rb |