00001 #ifndef __si_sha_sreqpool_h__bef99ef7_3764_4c6e_bfdd_819e790fd643 00002 #define __si_sha_sreqpool_h__bef99ef7_3764_4c6e_bfdd_819e790fd643 00003 00012 #include <si_sys/pthrdsem.h> 00013 #include <si_sys/blkalloc.h> 00014 #include <si_std/string.h> 00015 #include <si_std/ptrh.h> 00016 #include <si_std/listt.h> 00017 #include <si_sha/autopkt.h> 00018 00024 typedef enum se_scriptRequestFlags { 00025 se_scriptRequest_ReturnJSON = 1, 00026 se_scriptRequest_RelayMessage = 2 00027 } se_scriptRequestFlags; 00028 00036 typedef struct sc_scriptRequest { 00037 sc_rep _rep; 00038 s_uint32 flags; 00040 /* for normal script requests */ 00041 sc_string scriptIn; 00042 sc_string scriptOut; 00044 /* for relaying packets to script */ 00045 sc_automationPacket* pkt; 00046 const TCHAR* obj; 00048 sc_sem complete; 00050 sc_status scriptStatus; 00051 } sc_scriptRequest; 00052 00053 sc_status sc_scriptRequest_clear(sc_scriptRequest* psr); 00062 sm_ptrhDecl(sc_scriptRequest); 00063 00067 sm_listDecl(sc_scriptRequestPtrh); 00068 00073 typedef struct sc_scriptRequestPool { 00074 pthread_mutex_t mux_; 00075 sc_scriptRequestPtrhList pool_; 00076 s_int32 currCapacity_; 00077 s_int32 maxCapacity_; 00078 sc_blockAllocator al_; 00081 } sc_scriptRequestPool; 00082 00083 00084 sc_status sc_scriptRequestPool_construct(sc_scriptRequestPool* ppool, 00085 s_int32 initialCapacity, 00086 s_int32 maxCapacity); 00097 sc_status sc_scriptRequestPool_destruct(sc_scriptRequestPool* ppool); 00104 sc_status sc_scriptRequestPool_allocate(sc_scriptRequestPool* ppool, 00105 sc_scriptRequestPtrh* pptrh); 00113 sc_status sc_scriptRequestPool_free(sc_scriptRequestPool* ppool, 00114 sc_scriptRequestPtrh* pptrh); 00122 #endif /* __si_sha_sreqpool_h__bef99ef7_3764_4c6e_bfdd_819e790fd643 */