From 82eaddb160727d4489bd45cf787d2d8a8031db96 Mon Sep 17 00:00:00 2001 From: Bernhard Amann Date: Tue, 9 Oct 2012 14:00:32 -0700 Subject: [PATCH] and another bug in the input framework: config table does not work (is not transmitted to the readers) because the initialization was done the wrong way round. Just re-ordered some lines, no other changes. --- src/input/Manager.cc | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/src/input/Manager.cc b/src/input/Manager.cc index 83e9dc9bc5..df06af7454 100644 --- a/src/input/Manager.cc +++ b/src/input/Manager.cc @@ -320,22 +320,12 @@ bool Manager::CreateStream(Stream* info, RecordVal* description) } Unref(mode); - + Val* config = description->LookupWithDefault(rtype->FieldOffset("config")); - - ReaderFrontend* reader_obj = new ReaderFrontend(*rinfo, reader); - assert(reader_obj); - - info->reader = reader_obj; - info->type = reader->AsEnumVal(); // ref'd by lookupwithdefault - info->name = name; info->config = config->AsTableVal(); // ref'd by LookupWithDefault - info->info = rinfo; - - Ref(description); - info->description = description; - + { + // create config mapping in ReaderInfo. Has to be done before the construction of reader_obj. HashKey* k; IterCookie* c = info->config->AsTable()->InitForIteration(); @@ -345,13 +335,27 @@ bool Manager::CreateStream(Stream* info, RecordVal* description) ListVal* index = info->config->RecoverIndex(k); string key = index->Index(0)->AsString()->CheckString(); string value = v->Value()->AsString()->CheckString(); - info->info->config.insert(std::make_pair(copy_string(key.c_str()), copy_string(value.c_str()))); + printf("Inserting %s:%s\n", key.c_str(), value.c_str()); + rinfo->config.insert(std::make_pair(copy_string(key.c_str()), copy_string(value.c_str()))); Unref(index); delete k; } } + + ReaderFrontend* reader_obj = new ReaderFrontend(*rinfo, reader); + assert(reader_obj); + + info->reader = reader_obj; + info->type = reader->AsEnumVal(); // ref'd by lookupwithdefault + info->name = name; + info->info = rinfo; + + Ref(description); + info->description = description; + + DBG_LOG(DBG_INPUT, "Successfully created new input stream %s", name.c_str());