From 5df79c53745fde5d6c3340a2979b1429cd5892c1 Mon Sep 17 00:00:00 2001 From: Henrik Rydberg Date: Sat, 8 Oct 2011 20:30:28 +0200 Subject: Initial import of htcd system 1.0 Signed-off-by: Henrik Rydberg --- src/net/thrserv.h | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 src/net/thrserv.h (limited to 'src/net/thrserv.h') diff --git a/src/net/thrserv.h b/src/net/thrserv.h new file mode 100644 index 0000000..09307f6 --- /dev/null +++ b/src/net/thrserv.h @@ -0,0 +1,79 @@ +/************************************************************************* + * + * HTCd - Copyright (C) 1998-2006 Henrik Rydberg + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef THRSERVH +#define THRSERVH + +#include +#include +#include + +//////////////////////////////////////////////////////// +// +// MT - safe +// Note that mutexes aren't needed here, since control +// is flowing from main to child, with possible child +// override in local variables. + +struct thrServ { + pthread_t ptid; + mutex_t pmutex; + mtcond_t pcond; + volatile int tid,keepalive,running,termok; + time_t first,last; + htcServ* serv; + isocket* sock; + htcd_user user; + + thrServ(htcServ& server); + ~thrServ(); + + void Log(const sref& msg); + void reset(isocket* s,int keep); + + int vacant() const { return sock==0; } + int shutdown() { keepalive=0; return sock==0; } + void disconnect() { keepalive=0; running=0; } + void term() { + keepalive=0; + running=0; + termok=1; + MCONTINUE(pcond); + } + + void enter(); + void session(); + int handle(); +}; + +//////////////////////////////////////////////////////// + +struct thrCron { + pthread_t ptid; + volatile int tid,running; + htcServ* serv; + htcd_user user; + + thrCron(htcServ& server); + + void Log(const sref& msg); + void enter(); +}; + +#endif -- cgit v1.2.3