From bb9bc9051629c3319c56785c2f4ae0e605d76329 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Sat, 21 Nov 2015 14:51:17 +0100 Subject: Initial import of bitz-server version 0.1.6-1 --- src/bitz/manager.h | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 src/bitz/manager.h (limited to 'src/bitz/manager.h') diff --git a/src/bitz/manager.h b/src/bitz/manager.h new file mode 100644 index 0000000..cc15f9c --- /dev/null +++ b/src/bitz/manager.h @@ -0,0 +1,87 @@ +/* + * bitz-server, An ICAP server implementation in C++ + * Copyright (C) 2012 Uditha Atukorala + * + * 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 3 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef BITZ_MANAGER_H +#define BITZ_MANAGER_H + +#include // pid_t, fork() etc. +#include // socket-library + +#include "manager_exception.h" +#include "worker.h" + +#ifndef BITZ_MAX_WORKERS +#define BITZ_MAX_WORKERS 2 +#endif + +#ifndef BITZ_MAX_WORKER_REQUESTS +#define BITZ_MAX_WORKER_REQUESTS 100 +#endif + + +namespace bitz { + + class Manager { + public: + + struct worker_pool_t { + pid_t worker_pid; + unsigned int worker_id; + Worker * worker; + }; + + struct manager_t { + bool worker; + unsigned int max_workers; + unsigned int max_worker_requests; + unsigned int workers_count; + unsigned int worker_id; + + socketlibrary::TCPServerSocket * socket; + worker_pool_t * worker_pool; + }; + + + /** + * Note: backlog = SOMAXCONN (from sys/socket.h) + */ + Manager( unsigned short port, const std::string &address = "", int backlog = 128 ) throw( ManagerException ); + + /** + * deconstructor + */ + virtual ~Manager(); + + virtual void spawn( unsigned int max_workers = BITZ_MAX_WORKERS, unsigned int max_worker_requests = BITZ_MAX_WORKER_REQUESTS ) throw( ManagerException ); + virtual void shutdown( bool graceful = true ) throw(); + virtual void reap_worker( pid_t worker_pid ) throw(); + virtual void manager_workers() throw(); + + + private: + manager_t _manager; + + virtual void spawn_worker( unsigned int worker_id ) throw( ManagerException ); + + }; + +} /* end of namespace bitz */ + +#endif /* !BITZ_MANAGER_H */ + -- cgit v1.2.3