Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members   Examples  

indexer.C

Go to the documentation of this file.
00001 // $Id: indexer.C,v 1.1.1.1 2002/03/24 12:37:01 dvermeir Exp $
00002 #include <fstream>
00003 #include <stdexcept>
00004 #include <dvnet/serversocket.h>
00005 #include <dvutil/makedaemon.h>
00006 
00007 #include "server.h"
00008 
00009 int
00010 main( int argc , char* argv[] ) {
00011 static const string usage("usage: indexer config-file-name");
00012 
00013 try {
00014   // Get configuration parameters.
00015   if (argc!=2)
00016     throw runtime_error(usage);
00017   const string  config_fn(argv[1]);
00018 
00019   Server        server(config_fn);
00020 
00021   // Start server, throws an exception upon failure.
00022   Dv::Net::ServerSocket ssocket(server.port());
00023 
00024   Dv::Util::make_daemon();
00025 
00026   bool more(true);
00027 
00028   // This is a single threaded server.
00029   while (more) {
00030     Dv::Util::ref<Dv::Net::Socket>
00031     // A delay of 5 sec on the client should prevent some dos attacks.
00032     client(ssocket.accept(5000));
00033   
00034     server.log() << "accept from " 
00035                  << client->port() << '@' << client->host() << endl;
00036   
00037     more = server.serve(*client);
00038     }
00039   return 0;
00040   }
00041 catch (exception& e) {
00042   cerr << e.what() << endl;
00043   return 2;
00044   }
00045 return 0;
00046 }

textindexer-0.2 [27 March, 2002]