Added queue subscribe IPC documentation
[fmail.git] / src / baseserver.cpp
blob3f8eea69455bba9ce7a300d19bb2d9f846e4b28b
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 sock = Socket::CreateSocket(SOCKET_INET, 0);
35 sock->setPort(p);
36 lh = NULL;
37 proto = ph;
40 int BaseServer::SetLoadhandler(LoadHandler *l){
41 lh = l;
42 return 0;
45 int BaseServer::Listen(){
46 printf("Setting up server listener\n");
47 printf(" * Binding to port\n");
48 sock->Bind();
49 printf(" * Listening Queue\n");
50 sock->Listen(10);
51 return 1;
54 int BaseServer::Accept(){
55 Socket *client;
57 printf(" * Got client\n");
59 printf(" * Accepting\n");
60 client = sock->Accept();
61 printf("Got client, dispatching!\n");
62 if (lh)
63 lh->Dispatch(client, proto);
64 printf("Client Served listening for more\n");
65 return 1;