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

indexer.C File Reference

#include <fstream>
#include <stdexcept>
#include <dvnet/serversocket.h>
#include <dvutil/makedaemon.h>
#include "server.h"

Go to the source code of this file.

Functions

int main (int argc, char *argv[])


Function Documentation

int main int    argc,
char *    argv[]
 

Definition at line 10 of file indexer.C.

References Dv::Net::ServerSocket::accept(), Server::log(), Dv::Util::make_daemon(), Server::port(), and Server::serve().

00010                                 {
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]