|
|
@ -1,71 +0,0 @@ |
|
|
/** |
|
|
|
|
|
* \file |
|
|
|
|
|
* |
|
|
|
|
|
* \author Georg Hopp |
|
|
|
|
|
* |
|
|
|
|
|
* \copyright |
|
|
|
|
|
* Copyright © 2014 Georg Hopp |
|
|
|
|
|
* |
|
|
|
|
|
* 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, see <http://www.gnu.org/licenses/>. |
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
#include <stdarg.h> |
|
|
|
|
|
|
|
|
|
|
|
#include <sys/types.h> |
|
|
|
|
|
|
|
|
|
|
|
#include "trbase.h" |
|
|
|
|
|
#include "trio.h" |
|
|
|
|
|
#include "trevent.h" |
|
|
|
|
|
|
|
|
|
|
|
#include "tr/threaded_server.h" |
|
|
|
|
|
|
|
|
|
|
|
static |
|
|
|
|
|
int |
|
|
|
|
|
threadedServerCtor(void * _this, va_list * params) |
|
|
|
|
|
{ |
|
|
|
|
|
TR_ThreadedServer this = _this; |
|
|
|
|
|
int i; |
|
|
|
|
|
|
|
|
|
|
|
TR_PARENTCALL(TR_ThreadedServer, _this, TR_Class, ctor, params); |
|
|
|
|
|
|
|
|
|
|
|
this->n_threads = va_arg(*params, size_t); |
|
|
|
|
|
this->threads = TR_malloc(sizeof(TR_EventThread) * this->n_threads); |
|
|
|
|
|
|
|
|
|
|
|
for (i=0; i<this->n_threads; i++) { |
|
|
|
|
|
this->threads[i] = TR_new( |
|
|
|
|
|
TR_EventThread, |
|
|
|
|
|
((TR_Server)this)->dispatcher); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return 0; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static |
|
|
|
|
|
void |
|
|
|
|
|
threadedServerDtor(void * _this) |
|
|
|
|
|
{ |
|
|
|
|
|
TR_ThreadedServer this = _this; |
|
|
|
|
|
int i; |
|
|
|
|
|
|
|
|
|
|
|
for (i=0; i<this->n_threads; i++) { |
|
|
|
|
|
TR_delete(this->threads[i]); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
TR_PARENTCALL(TR_ThreadedServer, _this, TR_Class, dtor); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
TR_INIT_IFACE(TR_Class, threadedServerCtor, threadedServerDtor, NULL); |
|
|
|
|
|
TR_CREATE_CLASS(TR_ThreadedServer, TR_Server, NULL, TR_IF(TR_Class)); |
|
|
|
|
|
|
|
|
|
|
|
// vim: set ts=4 sw=4: |
|
|
|