|
@@ -64,18 +64,14 @@ callbackWrapper(const RRsetPtr& rrset, MasterLoadCallback callback,
|
|
|
|
|
|
callback(rrset);
|
|
|
}
|
|
|
-}
|
|
|
|
|
|
+template <typename InputType>
|
|
|
void
|
|
|
-masterLoad(const char* const filename, const Name& origin,
|
|
|
+loadHelper(InputType input, const Name& origin,
|
|
|
const RRClass& zone_class, MasterLoadCallback callback)
|
|
|
{
|
|
|
- if ((filename == NULL) || (*filename == '\0')) {
|
|
|
- isc_throw(MasterLoadError, "Name of master file must not be null");
|
|
|
- }
|
|
|
-
|
|
|
RRCollator rr_collator(boost::bind(callbackWrapper, _1, callback, &origin));
|
|
|
- MasterLoader loader(filename, origin, zone_class,
|
|
|
+ MasterLoader loader(input, origin, zone_class,
|
|
|
MasterLoaderCallbacks::getNullCallbacks(),
|
|
|
rr_collator.getCallback());
|
|
|
try {
|
|
@@ -85,24 +81,24 @@ masterLoad(const char* const filename, const Name& origin,
|
|
|
}
|
|
|
rr_collator.flush();
|
|
|
}
|
|
|
+}
|
|
|
|
|
|
void
|
|
|
-masterLoad(istream& input, const Name& origin, const RRClass& zone_class,
|
|
|
- MasterLoadCallback callback, const char* source)
|
|
|
+masterLoad(const char* const filename, const Name& origin,
|
|
|
+ const RRClass& zone_class, MasterLoadCallback callback)
|
|
|
{
|
|
|
- RRCollator rr_collator(boost::bind(callbackWrapper, _1, callback, &origin));
|
|
|
- MasterLoader loader(input, origin, zone_class,
|
|
|
- MasterLoaderCallbacks::getNullCallbacks(),
|
|
|
- rr_collator.getCallback());
|
|
|
- if (source == NULL) {
|
|
|
- source = "<unknown>";
|
|
|
- }
|
|
|
- try {
|
|
|
- loader.load();
|
|
|
- } catch (const MasterLoaderError& ex) {
|
|
|
- isc_throw(MasterLoadError, ex.what());
|
|
|
+ if ((filename == NULL) || (*filename == '\0')) {
|
|
|
+ isc_throw(MasterLoadError, "Name of master file must not be null");
|
|
|
}
|
|
|
- rr_collator.flush();
|
|
|
+
|
|
|
+ loadHelper<const char*>(filename, origin, zone_class, callback);
|
|
|
+}
|
|
|
+
|
|
|
+void
|
|
|
+masterLoad(istream& input, const Name& origin, const RRClass& zone_class,
|
|
|
+ MasterLoadCallback callback, const char*)
|
|
|
+{
|
|
|
+ loadHelper<istream&>(input, origin, zone_class, callback);
|
|
|
}
|
|
|
|
|
|
} // namespace dns
|