Sha256: 9dca32d441ca4385c5b3a1597d64eb7445cdb2ae1b4d8c7ac4f1a7d73eb0b6ba

Contents?: true

Size: 918 Bytes

Versions: 3

Compression:

Stored size: 918 Bytes

Contents

require 'socket'

module Journeta
  
  class PeerListener < Journeta::Asynchronous
    
    def go
      begin
        port = @engine.peer_port
        socket = TCPServer.new(port) 
        putsd "Listening on port #{port}"
        
        begin
          loop do             
            session = socket.accept
            Thread.new do 
              data = ''
              # Read every last bit from the socket before passing off to the handler.
              while more = session.gets
                data += more
              end
#              pp data
              msg     = YAML::load(data)
              h = @engine.peer_handler
              h.handle msg              
            end
          end
        rescue
          putsd "Session closed."
        end 
      ensure 
        putsd "Closing event listener socket."
        # session.close
        # socket.close
      end
    end
    
  end
  
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
journeta-0.0.3 lib/journeta/peer_listener.rb
journeta-0.0.4 lib/journeta/peer_listener.rb
journeta-0.0.5 lib/journeta/peer_listener.rb