def read_and_complete_config(httphandler, streamerhandler, converthandler)
if not config_exists? then
dump_default_config
end
r = YAML::load(File.open(@file))
if r == nil or (not r.kind_of?(Hash)) then raise FormatException.new("contents of #{@file} are invalid") end
needs_save = fill_out_missing(r)
httphandler.call(SOURCES[HTTP_KEY].from_hash(r[HTTP_KEY]))
streamerhandler.call(SOURCES[STREAMER_KEY].from_hash(r[STREAMER_KEY]))
converthandler.call(SOURCES[CONVERT_KEY].from_hash(r[CONVERT_KEY]))
if needs_save then
save_config(r)
end
end