/*-*- mode: C; tab-width:4 -*-*/ #ifndef PHP_JAVA_H #define PHP_JAVA_H #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "php_wrapper.h" #include "php_config.h" #include "zend_compile.h" #include "php_ini.h" #include "php_globals.h" #include "protocol.h" #ifdef ZTS #include "TSRM.h" #endif /* socket */ #ifdef __MINGW32__ # include # define close closesocket #else #include #include #include #include #include #ifndef CFG_JAVA_SOCKET_INET # include # ifdef HAVE_CONFIG_H # if !HAVE_DECL_AF_LOCAL # define AF_LOCAL AF_UNIX # endif # if !HAVE_DECL_PF_LOCAL # define PF_LOCAL PF_UNIX # endif # endif #endif #endif #ifdef ZEND_ENGINE_2 /* for try/catch emulation */ #include #endif extern zend_module_entry EXT_GLOBAL(module_entry); extern zend_class_entry *EXT_GLOBAL(class_entry); extern zend_class_entry *EXT_GLOBAL(class_class_entry); extern zend_class_entry *EXT_GLOBAL(class_class_entry_jsr); extern zend_class_entry *EXT_GLOBAL(exception_class_entry); extern function_entry EXT_GLOBAL(class_functions[]); #ifdef ZEND_ENGINE_2 extern zend_object_handlers EXT_GLOBAL(handlers); #endif extern const char * const EXT_GLOBAL(bridge_version); extern int EXT_GLOBAL(ini_updated), EXT_GLOBAL (ini_user), EXT_GLOBAL (ini_set); #define U_LOGFILE (1<<1) #define U_LOGLEVEL (1<<2) #define U_JAVA_HOME (1<<3) #define U_JAVA (1<<4) #define U_LIBRARY_PATH (1<<5) #define U_CLASSPATH (1<<6) #define U_SOCKNAME (1<<7) #define U_HOSTS (1<<8) #define U_SERVLET (1<<9) #if EXTENSION == JAVA #define phpext_java_ptr &EXT_GLOBAL(module_entry) #elif EXTENSION == MONO #define phpext_mono_ptr &EXT_GLOBAL(module_entry) #else # error EXT must be mono or java. #endif PHP_MINIT_FUNCTION(EXT); PHP_MSHUTDOWN_FUNCTION(EXT); PHP_MINFO_FUNCTION(EXT); /** * The following structure contains shared variables. */ struct cfg { #ifdef CFG_JAVA_SOCKET_INET struct sockaddr_in saddr; #else struct sockaddr_un saddr; #endif int cid; // server's process id int err; // file descriptor: server's return code char*sockname, *default_sockname; char*hosts; char*classpath; char*ld_library_path; char*vm; char*vm_home; char*logLevel; unsigned short logLevel_val; char*logFile; short can_fork; /* 0 if user has hard-coded the socketname */ char* servlet; /* On or servlet context */ short is_cgi_servlet; /* 1: cgi env available */ }; extern struct cfg *EXT_GLOBAL(cfg); /** * The following structure contains per-request variables. */ EXT_BEGIN_MODULE_GLOBALS(EXT) proxyenv *jenv; short is_closed; /* PR1176522: GC must not re-open the connection */ /* local copy of the shared variables above. Needed for channel re-directs */ char *hosts, *servlet; int ini_user; /* for user CB's */ zval*exception; zval **object; zval *func; zval **retval_ptr; zval *func_params; EXT_END_MODULE_GLOBALS(EXT) #ifdef ZTS # define JG(v) EXT_TSRMG(EXT_GLOBAL(globals_id), EXT_GLOBAL_EX(zend_,, _globals) *, v) #else # define JG(v) EXT_GLOBAL(globals).v #endif extern char* EXT_GLOBAL(get_server_string)(TSRMLS_D); extern proxyenv *EXT_GLOBAL(try_connect_to_server)(TSRMLS_D); extern proxyenv *EXT_GLOBAL(connect_to_server)(TSRMLS_D); extern void EXT_GLOBAL(start_server)(TSRMLS_D); extern char* EXT_GLOBAL(test_server)(int *socket, short *is_local, struct sockaddr*saddr TSRMLS_DC); /* returns the servlet context or null */ extern char *EXT_GLOBAL(get_servlet_context)(TSRMLS_D); /* returns the local socketname or the default local socketname*/ extern char *EXT_GLOBAL(get_sockname)(TSRMLS_D); #endif