From: Karl-Heinz Wild Date: 2005-10-04T14:46:18+09:00 Subject: Re: access variables inside a block ... On 04.10.2005, at 00:28, Joel VanderWerf wrote: > Karl-Heinz Wild wrote: > >> I'm playing with the class TcpServer from the >> package ldap-server. >> >> There is an interesting way for me of running a tcp server. >> >> ----------------------------- >> >> t = GAME::Server.tcpserver(:port=>1110, :nodelay=>true) do >> print "+OK I am a fake POP3 server\r\n" >> while line = gets >> case line >> when /^quit/i >> break >> else >> print "-ERR I don't understand #{line}" >> end >> end >> print "+OK bye\r\n" >> end >> t.join >> end >> >> ---------------------------- >> >> inside the GAME:Server.tcpserver it looks like >> >> ---------------------------- >> >> def self.tcpserver(opt, &blk) >> server = TCPServer.new(opt[:bindaddr] || "0.0.0.0", opt[:port]) >> server.listen(opt[:listen]) if opt[:listen] >> >> Thread.new do >> while true >> begin >> session = server.accept >> Thread.new(session) do |s| >> s.instance_eval(&blk) >> end >> rescue Interrupt >> server.close if server and not server.closed? >> break >> end >> end >> end >> end >> >> ------------------------------ >> >> Now, how can I get access to the "session" variables. >> I need some information from TCP inside the block. >> But I couldn't find out how. > > t = GAME::Server.tcpserver(:port=>1110, :nodelay=>true) do > session = self > session.... Great. It works. Thanks.