# File lib/phusion_passenger/app_process.rb, line 114
        def self.read_from_channel(channel)
                app_root, pid, n_server_sockets = channel.read
                if app_root.nil?
                        raise IOError, "Connection closed"
                end
                
                server_sockets = {}
                n_server_sockets.to_i.times do
                        message = channel.read
                        if message.nil?
                                raise IOError, "Connection closed"
                        end
                        name = message.shift
                        server_sockets[name.to_sym] = message
                end
                
                owner_pipe = channel.recv_io
                
                return new(app_root, pid.to_i, owner_pipe, server_sockets)
        end