00001 #ifndef __si_sha_lase_h__2bf6de29_af3b_4a35_803b_7262e61900f3 00002 #define __si_sha_lase_h__2bf6de29_af3b_4a35_803b_7262e61900f3 00003 00023 #include <si_std/queuet.h> 00024 #include <si_sha/sreqpool.h> 00025 #include <si_sha/adevmgr.h> 00026 #include <pthread.h> 00027 #include <jsapi.h> 00028 00031 typedef enum se_laseState { 00032 se_laseStateStopping, 00033 se_laseStateStopped, 00034 se_laseStateStarting, 00035 se_laseStateStarted 00036 } se_laseState; 00037 00041 sm_queueDecl(sc_scriptRequestPtrh); 00042 00060 struct sc_lase { 00061 sc_automationDeviceMgr dmgr; 00062 sc_string basePath; 00064 JSRuntime* jsrt; 00065 JSContext* jscx; 00066 JSObject * glob; 00068 sc_scriptRequestPool pool; 00070 sc_scriptRequestPtrhQueue reqs; 00072 pthread_t svcThread; 00074 int ctlFdC; 00075 int ctlFdS; 00076 se_laseState state; 00077 pthread_mutex_t mux; 00078 }; 00079 00080 sc_status sc_lase_construct(sc_lase* pl, s_uint32 envSize, 00081 const TCHAR* basePath); 00097 sc_status sc_lase_destruct(sc_lase* pl); 00101 sc_status sc_lase_start(sc_lase* pl); 00105 sc_status sc_lase_stop(sc_lase* pl); 00110 sc_status sc_lase_allocRequest(sc_lase* pl, sc_scriptRequestPtrh* ptrh); 00119 sc_status sc_lase_submitRequest(sc_lase* pl, sc_scriptRequestPtrh* ptrh); 00136 sc_status sc_lase_executeRequest(sc_lase* pl, sc_scriptRequestPtrh* ptrh); 00153 #endif /* __si_sha_lase_h__2bf6de29_af3b_4a35_803b_7262e61900f3 */