summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Baumann <abaumann@yahoo.com>2012-08-07 08:28:12 +0200
committerAndreas Baumann <abaumann@yahoo.com>2012-08-07 08:28:12 +0200
commit6c8d62160c3a5d744f797f06d8c505c5bb8f2622 (patch)
tree74c56f8c33f76837fd83452e5c4c60cf8ec0c3e8
parent2db310d15eb46247e7221107dc2b82826a296d6b (diff)
downloadcrawler-6c8d62160c3a5d744f797f06d8c505c5bb8f2622.tar.gz
crawler-6c8d62160c3a5d744f797f06d8c505c5bb8f2622.tar.bz2
reduced some code duplication when registering modules
-rw-r--r--.gitignore4
-rw-r--r--src/ModuleRegistry.hpp13
-rw-r--r--src/crawlingwolf.cpp10
-rw-r--r--src/modules/urlnormalizer/googleurl/GoogleURLNormalizer.cpp12
-rw-r--r--src/modules/urlnormalizer/simpleurl/SimpleURLNormalizer.cpp12
5 files changed, 23 insertions, 28 deletions
diff --git a/.gitignore b/.gitignore
index 2ba8d22..b28a811 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,12 +2,14 @@
*.RES
*.d
*.o
+*.sho++
*.db
*.a
+*.so
*~
tests/*/test1
tests/*/test2
tests/*/test3
-crawlingwolf
+src/crawlingwolf
makefiles/gmake/platform.mk.vars
makefiles/gmake/platform.vars
diff --git a/src/ModuleRegistry.hpp b/src/ModuleRegistry.hpp
index fbbdd40..e1c8a08 100644
--- a/src/ModuleRegistry.hpp
+++ b/src/ModuleRegistry.hpp
@@ -18,4 +18,17 @@ struct ModuleRegistry {
}
};
+#define REGISTER_MODULE( name, baseClass, subClass ) \
+static baseClass *create( ) \
+{ \
+ return new subClass( ); \
+} \
+ \
+static void destroy( baseClass *obj ) \
+{ \
+ delete obj; \
+} \
+ \
+ModuleRegistry<baseClass> registry( name, &create, &destroy );
+
#endif
diff --git a/src/crawlingwolf.cpp b/src/crawlingwolf.cpp
index b322994..328cc80 100644
--- a/src/crawlingwolf.cpp
+++ b/src/crawlingwolf.cpp
@@ -17,6 +17,11 @@ using namespace std;
int main( void )
{
FILELog::reportingLevel( ) = logINFO;
+
+ vector<string> modules;
+ modules.push_back( "./modules/urlnormalizer/simpleurl/mod_urlnormalizer_simple.so" );
+ modules.push_back( "./modules/urlnormalizer/googleurl/mod_urlnormalizer_googleurl.so" );
+ ModuleLoader<URLNormalizer> urlNormalizers( modules );
Frontier *frontier = new MemoryFrontier( );
Fetcher *fetcher = new LibFetchFetcher( );
@@ -34,11 +39,6 @@ int main( void )
ChainURLFilter filters( &protocolFilter, &hostFilter );
- vector<string> modules;
- modules.push_back( "./modules/urlnormalizer/simpleurl/mod_urlnormalizer_simple.so" );
- modules.push_back( "./modules/urlnormalizer/googleurl/mod_urlnormalizer_googleurl.so" );
- ModuleLoader<URLNormalizer> urlNormalizers( modules );
- //URLNormalizer *normalizer = urlNormalizers.create( "simple" );
URLNormalizer *normalizer = urlNormalizers.create( "google" );
Processor *processor = new HTMLLinkExtractProcessor( normalizer, frontier, &filters, urlSeen );
diff --git a/src/modules/urlnormalizer/googleurl/GoogleURLNormalizer.cpp b/src/modules/urlnormalizer/googleurl/GoogleURLNormalizer.cpp
index e5810d6..4399a01 100644
--- a/src/modules/urlnormalizer/googleurl/GoogleURLNormalizer.cpp
+++ b/src/modules/urlnormalizer/googleurl/GoogleURLNormalizer.cpp
@@ -104,14 +104,4 @@ URL GoogleURLNormalizer::normalize( const URL url, const string s )
"", "" );
}
-static URLNormalizer *create( )
-{
- return new GoogleURLNormalizer( );
-}
-
-static void destroy( URLNormalizer *obj )
-{
- delete obj;
-}
-
-ModuleRegistry<URLNormalizer> registry( "google", &create, &destroy );
+REGISTER_MODULE( "google", URLNormalizer, GoogleURLNormalizer )
diff --git a/src/modules/urlnormalizer/simpleurl/SimpleURLNormalizer.cpp b/src/modules/urlnormalizer/simpleurl/SimpleURLNormalizer.cpp
index e2f0ed7..414adf1 100644
--- a/src/modules/urlnormalizer/simpleurl/SimpleURLNormalizer.cpp
+++ b/src/modules/urlnormalizer/simpleurl/SimpleURLNormalizer.cpp
@@ -150,14 +150,4 @@ void SimpleURLNormalizer::normalizePath( string &path )
}
}
-static URLNormalizer *create( )
-{
- return new SimpleURLNormalizer( );
-}
-
-static void destroy( URLNormalizer *obj )
-{
- delete obj;
-}
-
-ModuleRegistry<URLNormalizer> registry( "simple", &create, &destroy );
+REGISTER_MODULE( "simple", URLNormalizer, SimpleURLNormalizer )