Added basic code for loading a protocol and start the server
[fmail.git] / src / baseserver.cpp
blob541ebeaab792eb64ac9acd95e11e78bb6bcbc3c7
1 /*
2 libfmail: Basic Socket Server
4 Copyright (C) 2007 Carlos Daniel Ruvalcaba Valenzuela <clsdaniel@gmail.com>
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License along
17 with this program; if not, write to the Free Software Foundation, Inc.,
18 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21 #include <stdio.h>
22 #include <stdlib.h>
23 #include <string.h>
24 #include <malloc.h>
25 #include <sys/types.h>
26 #include <sys/uio.h>
27 #include <unistd.h>
28 #include <netinet/in.h>
29 #include <arpa/inet.h>
31 #include <libfmail.h>
33 BaseServer::BaseServer(ProtocolHandler *ph, int p){
34 port = p;
35 lh = NULL;
36 proto = ph;
39 int BaseServer::SetLoadhandler(LoadHandler *l){
40 lh = l;
43 int BaseServer::Listen(){
44 Socket *client;
45 int onRun;
47 printf("Setting up server listener\n");
48 printf(" * Binding to port\n");
49 sock.Bind(port);
50 printf(" * Listening Queue\n");
51 sock.Listen(10);
53 onRun = 1;
55 while(onRun){
56 printf(" * Accepting\n");
57 client = sock.Accept();
58 printf("Got client, dispatching!\n");
59 if (lh)
60 lh->Dispatch(client, proto);
61 printf("Client Served listening for more\n");