summaryrefslogtreecommitdiff
path: root/zend
diff options
context:
space:
mode:
authorEmiel Bruijntjes <emiel.bruijntjes@copernica.com>2014-04-06 22:51:12 +0200
committerEmiel Bruijntjes <emiel.bruijntjes@copernica.com>2014-04-06 22:51:12 +0200
commit43cfaa8a4730ea1fa7d9c01f58ddcf6f42b4fb46 (patch)
tree19a42d30fb2d416f2c10fea158eef2f35203611e /zend
parent35fd3ccbeb4def71b4d8a59dfbb5c31201b099b9 (diff)
introduced common directory that will contain implementation files that are used for hhvm and zend, and introduced hhvm file for the implementation of hhvmcpp
Diffstat (limited to 'zend')
-rw-r--r--zend/extensionimpl.cpp56
-rw-r--r--zend/extensionimpl.h105
-rw-r--r--zend/includes.h7
3 files changed, 40 insertions, 128 deletions
diff --git a/zend/extensionimpl.cpp b/zend/extensionimpl.cpp
index 9562362..77b9985 100644
--- a/zend/extensionimpl.cpp
+++ b/zend/extensionimpl.cpp
@@ -106,7 +106,7 @@ static ExtensionImpl *find(int number TSRMLS_DC)
* @param tsrm_ls
* @return int 0 on success
*/
-int ExtensionImpl::onStartup(int type, int module_number TSRMLS_DC)
+int ExtensionImpl::processStartup(int type, int module_number TSRMLS_DC)
{
// initialize and allocate the "global" variables
ZEND_INIT_MODULE_GLOBALS(phpcpp, init_globals, NULL);
@@ -131,7 +131,7 @@ int ExtensionImpl::onStartup(int type, int module_number TSRMLS_DC)
* @param tsrm_ls
* @return int
*/
-int ExtensionImpl::onShutdown(int type, int module_number TSRMLS_DC)
+int ExtensionImpl::processShutdown(int type, int module_number TSRMLS_DC)
{
// get the extension
auto *extension = find(module_number TSRMLS_CC);
@@ -150,7 +150,7 @@ int ExtensionImpl::onShutdown(int type, int module_number TSRMLS_DC)
* @param tsrm_ls
* @return int 0 on success
*/
-int ExtensionImpl::onRequest(int type, int module_number TSRMLS_DC)
+int ExtensionImpl::processRequest(int type, int module_number TSRMLS_DC)
{
// get the extension
auto *extension = find(module_number TSRMLS_CC);
@@ -169,7 +169,7 @@ int ExtensionImpl::onRequest(int type, int module_number TSRMLS_DC)
* @param tsrm_ls
* @return int 0 on success
*/
-int ExtensionImpl::onIdle(int type, int module_number TSRMLS_DC)
+int ExtensionImpl::processIdle(int type, int module_number TSRMLS_DC)
{
// get the extension
auto *extension = find(module_number TSRMLS_CC);
@@ -187,35 +187,35 @@ int ExtensionImpl::onIdle(int type, int module_number TSRMLS_DC)
* @param name Name of the extension
* @param version Version number
*/
-ExtensionImpl::ExtensionImpl(Extension *data, const char *name, const char *version) : _data(data)
+ExtensionImpl::ExtensionImpl(Extension *data, const char *name, const char *version) : ExtensionBase(data)
{
// keep extension pointer based on the name
name2extension[name] = this;
// assign all members (apart from the globals)
- _entry.size = sizeof(zend_module_entry); // size of the data
- _entry.zend_api = ZEND_MODULE_API_NO; // api number
- _entry.zend_debug = ZEND_DEBUG; // debug mode enabled?
- _entry.zts = USING_ZTS; // is thread safety enabled?
- _entry.ini_entry = NULL; // the php.ini record
- _entry.deps = NULL; // dependencies on other modules
- _entry.name = name; // extension name
- _entry.functions = NULL; // functions supported by this module (none for now)
- _entry.module_startup_func = &ExtensionImpl::onStartup; // startup function for the whole extension
- _entry.module_shutdown_func = &ExtensionImpl::onShutdown; // shutdown function for the whole extension
- _entry.request_startup_func = &ExtensionImpl::onRequest; // startup function per request
- _entry.request_shutdown_func = &ExtensionImpl::onIdle; // shutdown function per request
- _entry.info_func = NULL; // information for retrieving info
- _entry.version = version; // version string
- _entry.globals_size = 0; // size of the global variables
- _entry.globals_ctor = NULL; // constructor for global variables
- _entry.globals_dtor = NULL; // destructor for global variables
- _entry.post_deactivate_func = NULL; // unknown function
- _entry.module_started = 0; // module is not yet started
- _entry.type = 0; // temporary or persistent module, will be filled by Zend engine
- _entry.handle = NULL; // dlopen() handle, will be filled by Zend engine
- _entry.module_number = 0; // module number will be filled in by Zend engine
- _entry.build_id = (char *)ZEND_MODULE_BUILD_ID; // check if extension and zend engine are compatible
+ _entry.size = sizeof(zend_module_entry); // size of the data
+ _entry.zend_api = ZEND_MODULE_API_NO; // api number
+ _entry.zend_debug = ZEND_DEBUG; // debug mode enabled?
+ _entry.zts = USING_ZTS; // is thread safety enabled?
+ _entry.ini_entry = NULL; // the php.ini record
+ _entry.deps = NULL; // dependencies on other modules
+ _entry.name = name; // extension name
+ _entry.functions = NULL; // functions supported by this module (none for now)
+ _entry.module_startup_func = &ExtensionImpl::processStartup; // startup function for the whole extension
+ _entry.module_shutdown_func = &ExtensionImpl::processShutdown; // shutdown function for the whole extension
+ _entry.request_startup_func = &ExtensionImpl::processRequest; // startup function per request
+ _entry.request_shutdown_func = &ExtensionImpl::processIdle; // shutdown function per request
+ _entry.info_func = NULL; // information for retrieving info
+ _entry.version = version; // version string
+ _entry.globals_size = 0; // size of the global variables
+ _entry.globals_ctor = NULL; // constructor for global variables
+ _entry.globals_dtor = NULL; // destructor for global variables
+ _entry.post_deactivate_func = NULL; // unknown function
+ _entry.module_started = 0; // module is not yet started
+ _entry.type = 0; // temporary or persistent module, will be filled by Zend engine
+ _entry.handle = NULL; // dlopen() handle, will be filled by Zend engine
+ _entry.module_number = 0; // module number will be filled in by Zend engine
+ _entry.build_id = (char *)ZEND_MODULE_BUILD_ID; // check if extension and zend engine are compatible
// things that only need to be initialized
#ifdef ZTS
diff --git a/zend/extensionimpl.h b/zend/extensionimpl.h
index cc37354..e58ce66 100644
--- a/zend/extensionimpl.h
+++ b/zend/extensionimpl.h
@@ -15,16 +15,10 @@ namespace Php {
/**
* Class definition
*/
-class ExtensionImpl
+class ExtensionImpl : public ExtensionBase
{
protected:
/**
- * Pointer to the extension object that is filled by the extension programmer
- * @var Extension
- */
- Extension *_data;
-
- /**
* The information that is passed to the Zend engine
*
* Although it would be slightly faster to not make this a pointer, this
@@ -34,32 +28,7 @@ protected:
* @var zend_module_entry
*/
zend_module_entry _entry;
-
- /**
- * Callback that is called after the engine is initialized and before the
- * pageviews are going to be handled
- * @var Callback
- */
- Callback _onStartup;
-
- /**
- * Callback that is called in front of each request
- * @var Callback
- */
- Callback _onRequest;
-
- /**
- * Callback that is called right after each request
- * @var Callback
- */
- Callback _onIdle;
-
- /**
- * Callback that is called right before the engine is closing down
- * @var Callback
- */
- Callback _onShutdown;
-
+
public:
/**
* Constructor
@@ -81,68 +50,6 @@ public:
virtual ~ExtensionImpl();
/**
- * Register a function to be called when the PHP engine is ready
- *
- * The callback will be called after all extensions are loaded, and all
- * functions and classes are available, but before the first pageview/request
- * is handled. You can register this callback if you want to be notified
- * when the engine is ready, for example to initialize certain things.
- *
- * @param callback
- */
- void onStartup(const Callback &callback)
- {
- // copy callback
- _onStartup = callback;
- }
-
- /**
- * Register a function to be called when the PHP engine is going to stop
- *
- * The callback will be called right before the process is going to stop.
- * You can register a function if you want to clean up certain things.
- *
- * @param callback
- */
- void onShutdown(const Callback &callback)
- {
- // copy callback
- _onShutdown = callback;
- }
-
- /**
- * Register a callback that is called at the beginning of each pageview/request
- *
- * You can register a callback if you want to initialize certain things
- * at the beginning of each request. Remember that the extension can handle
- * multiple requests after each other, and you may want to set back certain
- * global variables to their initial variables in front of each request
- *
- * @param callback
- */
- void onRequest(const Callback &callback)
- {
- // copy callback
- _onRequest = callback;
- }
-
- /**
- * Register a callback that is called to cleanup things after a pageview/request
- *
- * The callback will be called after _each_ request, so that you can clean up
- * certain things and make your extension ready to handle the next request.
- * This method is called onIdle because the extension is idle in between
- * requests.
- *
- * @param callback
- */
- void onIdle(const Callback &callback)
- {
- // copy callback
- _onIdle = callback;
- }
-
- /**
* Retrieve the module entry
*
* This is the memory address that should be exported by the get_module()
@@ -175,7 +82,7 @@ private:
* @param tsrm_ls
* @return int 0 on success
*/
- static int onStartup(int type, int module_number TSRMLS_DC);
+ static int processStartup(int type, int module_number TSRMLS_DC);
/**
* Function that is called when the extension is about to be stopped
@@ -184,7 +91,7 @@ private:
* @param tsrm_ls
* @return int
*/
- static int onShutdown(int type, int module_number TSRMLS_DC);
+ static int processShutdown(int type, int module_number TSRMLS_DC);
/**
* Function that is called when a request starts
@@ -193,7 +100,7 @@ private:
* @param tsrm_ls
* @return int 0 on success
*/
- static int onRequest(int type, int module_number TSRMLS_DC);
+ static int processRequest(int type, int module_number TSRMLS_DC);
/**
* Function that is called when a request is ended
@@ -202,7 +109,7 @@ private:
* @param tsrm_ls
* @return int 0 on success
*/
- static int onIdle(int type, int module_number TSRMLS_DC);
+ static int processIdle(int type, int module_number TSRMLS_DC);
};
/**
diff --git a/zend/includes.h b/zend/includes.h
index f547eb2..50eb4d5 100644
--- a/zend/includes.h
+++ b/zend/includes.h
@@ -76,7 +76,12 @@
#include "../include/call.h"
/**
- * Interface files for internal use only
+ * Common header files for internal use only
+ */
+#include "../common/extensionbase.h"
+
+/**
+ * Specific zend implementation files for internal use only
*/
#include "init.h"
#include "callable.h"