1 /* vim:expandtab:shiftwidth=2:tabstop=2:smarttab: 2 * 3 * Gearmand client and server library. 4 * 5 * Copyright (C) 2011-2012 Data Differential, http://datadifferential.com/ 6 * Copyright (C) 2008 Brian Aker, Eric Day 7 * All rights reserved. 8 * 9 * Redistribution and use in source and binary forms, with or without 10 * modification, are permitted provided that the following conditions are 11 * met: 12 * 13 * * Redistributions of source code must retain the above copyright 14 * notice, this list of conditions and the following disclaimer. 15 * 16 * * Redistributions in binary form must reproduce the above 17 * copyright notice, this list of conditions and the following disclaimer 18 * in the documentation and/or other materials provided with the 19 * distribution. 20 * 21 * * The names of its contributors may not be used to endorse or 22 * promote products derived from this software without specific prior 23 * written permission. 24 * 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 26 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 27 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 28 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 29 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 30 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 31 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 32 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 33 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 34 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 35 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 36 * 37 */ 38 39 /** 40 * @file 41 * @brief Thread Declarations 42 */ 43 44 #pragma once 45 46 #include <pthread.h> 47 48 #include <libgearman-server/struct/gearmand_thread.h> 49 50 #ifdef __cplusplus 51 extern "C" { 52 #endif 53 54 /** 55 * @addtogroup gearmand_thread Thread Declarations 56 * @ingroup gearmand 57 * 58 * Thread handling for gearmand. 59 * 60 * @{ 61 */ 62 63 /** 64 * Create a new gearmand thread. 65 * @param gearmand Server instance structure previously initialized with 66 * gearmand_create. 67 * @return Standard gearman return value. 68 */ 69 GEARMAN_API 70 gearmand_error_t gearmand_thread_create(struct gearmand_st *gearmand); 71 72 /** 73 * Free resources used by a thread. 74 * @param thread Thread previously initialized with gearmand_thread_create. 75 */ 76 GEARMAN_API 77 void gearmand_thread_free(gearmand_thread_st *thread); 78 79 /** 80 * Interrupt a running gearmand thread. 81 * @param thread Thread structure previously initialized with 82 * gearmand_thread_create. 83 * @param wakeup Wakeup event to send to running thread. 84 */ 85 GEARMAN_API 86 void gearmand_thread_wakeup(gearmand_thread_st *thread, 87 gearmand_wakeup_t wakeup); 88 89 /** 90 * Run the thread when there are events ready. 91 * @param thread Thread structure previously initialized with 92 * gearmand_thread_create. 93 */ 94 GEARMAN_API 95 void gearmand_thread_run(gearmand_thread_st *thread); 96 97 /** @} */ 98 99 #ifdef __cplusplus 100 } 101 #endif 102