Changed smtp for new worker classes
[fmail.git] / src / posix-thread.cpp
blobeb52d2b41d0eeb5bb4fb4980806025ac463672f7
1 /*
2 libfmail: Thread class
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.
20 #include <stdio.h>
21 #include <malloc.h>
22 #include <pthread.h>
24 #include <libfmail/thread.h>
26 struct _osthread {
27 pthread_t thread;
30 extern "C" {
31 typedef void * (*func_t)(void *);
32 void Thread_pthread_handler(void * th){
33 Thread * t;
35 t = (Thread *)th;
36 t->Run();
41 Thread::Thread(){
42 os_thread = (OSThread *)malloc(sizeof(OSThread));
45 Thread::~Thread(){
46 free(os_thread);
49 int Thread::Start(){
50 return pthread_create(&(os_thread->thread), NULL, (func_t)Thread_pthread_handler, this);
53 int Thread::Stop(){
54 return pthread_cancel(os_thread->thread);
57 int Thread::Join(){
58 return pthread_join(os_thread->thread, NULL);
61 int Thread::isAlive(){
62 return 0;