I am making a constant network connection that is feeding me
information, i want to take that information and place into nested /
two-dimensional array for 1 minute, below is the code that's not
working.
I am making a constant network connection that is feeding me
information, i want to take that information and place into nested /
two-dimensional array for 1 minute, below is the code that's not
working.
[snip]
So after I sleep for 1 minute you would think the @junk two dimensional
array has filled up but it hasn't, what's the best way to solve this
problem?
Well, *I* wouldn't think that would be the case... Sleep suspends the execution of your program until the timer expires, so nothing else is happening during that time.
There are lots of ways that you could do what you want... Perhaps the "simplest" way would be to capture the time in a variable before you start, and check it after every row. If a minute has gone by, stop. However, that won't be terribly accurate and you won't guarantee exactly one minute.
Another option would be to start another thread to manage the timing, but I'm not sure right off the top of my head what that would look like.
A third option might be to use the Timeout class, but that is sort of a hack. You should read up on these options and pick one that works for you.
Your program doesn't have any threads, so it will execute in lock-step.
That is, when you enter pass, you will sleep for 60 seconds there,
before returning.
Try adding some puts statements to see what's going on, e.g.
while @lines = @opensocket.gets
FasterCSV.parse(@lines) do |@row|
puts "Read line #{@row.inspect}, going to pass"
pass
puts "pass has returned"
end
end
puts "done read"
end
def pass
puts "starting pass"
@junk << @row
puts "sleeping for 60..."
sleep(60)
p @junk
end
end
enable = Test.new
You could alternatively try to use a debugger to single-step the
program, but generally I find the hassle of learning to drive the
debugger to be higher than putting the debug statements in.