blob: 4b7ad7db7de1b8244afaf77b04b89e3554456a44 [file] [log] [blame]
###############################################################################
# Copyright (c) 2005, 2007 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
###############################################################################
require 'thread'
module XoredDebugger
class Capturer
def initialize(stream, state)
@stream = stream
state ? enable : disable
@mutex = Mutex.new
@output = ''
end
def write(s)
#@mutex.synchronize do
@output += s
#end
end
def get
#@mutex.synchronize do
out = @output
@output = ''
out
#end
end
def saved_stream
@stream
end
protected :saved_stream
end # class Capturer
class StdoutCapturer < Capturer
def initialize(state = false)
super($stdout, state)
end
def enable
$stdout = self
end
def disable
$stdout = saved_stream
end
end # class StdoutCapturer
class StderrCapturer < Capturer
def initialize(state = false)
super($stderr, state)
end
def enable
$stderr = self
end
def disable
$stderr = saved_stream
end
end # class StderrCapturer
end # module XoredDebugger