sas Tue Apr 1 03:00:42 2003 EDT
Modified files:
/php4/ext/ircg ircg.c
Log:
Intermediate commit of relocation map integration
Index: php4/ext/ircg/ircg.c
diff -u php4/ext/ircg/ircg.c:1.166 php4/ext/ircg/ircg.c:1.167
--- php4/ext/ircg/ircg.c:1.166 Mon Mar 17 08:02:50 2003
+++ php4/ext/ircg/ircg.c Tue Apr 1 03:00:42 2003
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: ircg.c,v 1.166 2003/03/17 13:02:50 hholzgra Exp $ */
+/* $Id: ircg.c,v 1.167 2003/04/01 08:00:42 sas Exp $ */
/* {{{ includes */
@@ -78,6 +78,9 @@
struct php_ircg_global *php_ircg;
+static void *php_ircg_cb_msg_handle;
+static void *php_ircg_cb_wbuf_handle;
+
/* initialized in the IRCG control process, so that we can avoid locking */
struct cache_entry *php_ircg_cache_entries;
@@ -215,7 +218,7 @@
PHP_INI_BEGIN()
STD_PHP_INI_ENTRY("ircg.work_dir", "/tmp/ircg", PHP_INI_ALL, OnUpdateString,
work_dir, zend_ircg_globals, ircg_globals)
- STD_PHP_INI_ENTRY("ircg.shared_mem_size", "10000000", PHP_INI_ALL,
OnUpdateLong, shared_mem_size, zend_ircg_globals, ircg_globals)
+ STD_PHP_INI_ENTRY("ircg.shared_mem_size", "10000000", PHP_INI_ALL,
OnUpdateInt, shared_mem_size, zend_ircg_globals, ircg_globals)
STD_PHP_INI_ENTRY("ircg.control_user", "nobody", PHP_INI_ALL, OnUpdateString,
control_user, zend_ircg_globals, ircg_globals)
PHP_INI_END()
@@ -1022,8 +1025,14 @@
put_irconn(data);
}
+IRCG_CB_MAP_START(php_ircg_cb_wbuf)
+ IRCG_CB_MAP_ENTRY(wbuf_closed_conn)
+ IRCG_CB_MAP_ENTRY(wbuf_add_complete)
+IRCG_CB_MAP_END()
+
static void wbuf_hooks(irc_write_buf *p, void *data)
{
+ irc_write_buf_reg(p, WB_MAP_HANDLE, (irc_hook) php_ircg_cb_wbuf_handle);
irc_write_buf_reg(p, WB_CLOSED_CONN, wbuf_closed_conn);
irc_write_buf_reg(p, WB_ADD_COMPLETE, wbuf_add_complete);
}
@@ -1548,7 +1557,6 @@
php_ircg_token_compiler("", &fmt_msgs.fmt_msgs[i]);
}
- IRCG_LOCK_GET(php_ircg->fmt_msgs_lock);
ircg_hash_update(&php_ircg->h_fmt_msgs, Z_STRVAL_PP(p1), Z_STRLEN_PP(p1),
&fmt_msgs, sizeof(fmt_msgs), NULL);
@@ -1558,6 +1566,37 @@
}
/* }}} */
+IRCG_CB_MAP_START(php_ircg_cb_msg)
+ IRCG_CB_MAP_ENTRY(msg_handler)
+ IRCG_CB_MAP_ENTRY(quit_handler)
+ IRCG_CB_MAP_ENTRY(error_handler)
+ IRCG_CB_MAP_ENTRY(nick_handler)
+ IRCG_CB_MAP_ENTRY(part_handler)
+ IRCG_CB_MAP_ENTRY(user_leave)
+ IRCG_CB_MAP_ENTRY(user_kick)
+ IRCG_CB_MAP_ENTRY(user_quit)
+ IRCG_CB_MAP_ENTRY(new_topic)
+ IRCG_CB_MAP_ENTRY(whois_user_handler)
+ IRCG_CB_MAP_ENTRY(whois_server_handler)
+ IRCG_CB_MAP_ENTRY(whois_idle_handler)
+ IRCG_CB_MAP_ENTRY(whois_channels_handler)
+ IRCG_CB_MAP_ENTRY(end_of_whois_handler)
+ IRCG_CB_MAP_ENTRY(mode_channel_handler)
+ IRCG_CB_MAP_ENTRY(idle_recv_queue)
+ IRCG_CB_MAP_ENTRY(banlist_handler)
+ IRCG_CB_MAP_ENTRY(end_of_banlist_handler)
+ IRCG_CB_MAP_ENTRY(list_handler)
+ IRCG_CB_MAP_ENTRY(listend_handler)
+#if IRCG_API_VERSION >= 20021109
+ IRCG_CB_MAP_ENTRY(user_add_ex)
+#else
+ IRCG_CB_MAP_ENTRY(user_add)
+#endif
+ IRCG_CB_MAP_ENTRY(whoreply_handler)
+ IRCG_CB_MAP_ENTRY(endofwho_handler)
+ IRCG_CB_MAP_ENTRY(invite_handler)
+IRCG_CB_MAP_END()
+
/* {{{ register_hooks */
static void register_hooks(irconn_t *conn, void *dummy)
{
@@ -1644,6 +1683,8 @@
#if IRCG_API_VERSION >= 20021117
IFMSG(FMT_MSG_INVITE, IRCG_INVITE, invite_handler);
#endif
+
+ irc_set_map_handle(conn, php_ircg_cb_msg_handle);
}
/* }}} */
@@ -2104,20 +2145,8 @@
}
return 0;
}
-
-static void setup(int stage)
-{
- if (stage == 0) {
- ircg_fetch_area("php-ircg-main", &php_ircg, sizeof *php_ircg, init);
- } else if (stage == 1) {
- php_ircg_cache_entries = malloc(sizeof(struct cache_entry) *
NR_CACHE_ENTRIES);
- memset(php_ircg_cache_entries, 0, sizeof(struct cache_entry) *
NR_CACHE_ENTRIES);
- } else if (stage == -1) {
- memset(php_ircg, 0x78, sizeof *php_ircg);
- IRCG_SHARED_FREE(php_ircg);
- php_ircg = NULL;
- }
-}
+
+static void setup(int stage);
static int initialized;
@@ -2230,6 +2259,25 @@
DISPLAY_INI_ENTRIES();
}
/* }}} */
+
+
+static void setup(int stage)
+{
+ if (stage == 0) {
+ ircg_fetch_area("php-ircg-main", &php_ircg, sizeof *php_ircg, init);
+
+ ircg_register_relocation_map("php_ircg_msg_handler", php_ircg_cb_msg);
+ ircg_register_relocation_map("php_ircg_wbuf_handler",
php_ircg_cb_wbuf);
+
+ } else if (stage == 1) {
+ php_ircg_cache_entries = malloc(sizeof(struct cache_entry) *
NR_CACHE_ENTRIES);
+ memset(php_ircg_cache_entries, 0, sizeof(struct cache_entry) *
NR_CACHE_ENTRIES);
+ } else if (stage == -1) {
+ memset(php_ircg, 0x78, sizeof *php_ircg);
+ IRCG_SHARED_FREE(php_ircg);
+ php_ircg = NULL;
+ }
+}
/*
* Local variables:
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php