cvs: /php4/ext/session session.c

From: Date: Sat, 04 Sep 1999 11:25:43 +0000
Subject: cvs: /php4/ext/session session.c
Groups: php.version4 
Request: Send a blank email to php-version4+get-4072@lists.php.net to get a copy of this message
sas Sat Sep 4 07:25:43 1999 EDT Modified files: /php4/ext/session session.c Log: First try at WDDX serializer (not active currently) Index: php4/ext/session/session.c diff -u php4/ext/session/session.c:1.39 php4/ext/session/session.c:1.40 --- php4/ext/session/session.c:1.39 Fri Sep 3 13:46:39 1999 +++ php4/ext/session/session.c Sat Sep 4 07:25:43 1999 @@ -113,6 +113,16 @@ #define STD_FMT "%s|" #define NOTFOUND_FMT "!%s|" +#define PS_ADD_VARL(name,namelen) \ + zend_hash_update(&PS(vars), name, namelen + 1, 0, 0, NULL) + +#define PS_ADD_VAR(name) PS_ADD_VARL(name, strlen(name)) + +#define PS_DEL_VARL(name,namelen) \ + zend_hash_del(&PS(vars), name, namelen + 1); + +#define PS_DEL_VAR(name) PS_DEL_VARL(name, strlen(name)) + PS_SERIALIZER_ENCODE_FUNC(php) { pval *buf; @@ -147,16 +157,6 @@ return SUCCESS; } -#define PS_ADD_VARL(name,namelen) \ - zend_hash_update(&PS(vars), name, namelen + 1, 0, 0, NULL) - -#define PS_ADD_VAR(name) PS_ADD_VARL(name, strlen(name)) - -#define PS_DEL_VARL(name,namelen) \ - zend_hash_del(&PS(vars), name, namelen + 1); - -#define PS_DEL_VAR(name) PS_DEL_VARL(name, strlen(name)) - PS_SERIALIZER_DECODE_FUNC(php) { const char *p, *q; @@ -194,6 +194,77 @@ return SUCCESS; } + +#if 0 + +PS_SERIALIZER_ENCODE_FUNC(wddx) +{ + wddx_packet *packet; + char *key; + ELS_FETCH(); + zval **struc; + char *buf; + + packet = _php_wddx_constructor(); + + _php_wddx_packet_start(packet, NULL); + _php_wddx_add_chunk(packet, WDDX_STRUCT_S); + + for(zend_hash_internal_pointer_reset(&PS(vars)); + zend_hash_get_current_key(&PS(vars), &key, NULL) == HASH_KEY_IS_STRING; + zend_hash_move_forward(&PS(vars))) { + if(zend_hash_find(&EG(symbol_table), key, strlen(key) + 1, (void **) &struc) == SUCCESS) { + _php_wddx_serialize_var(packet, *struc, key); + } + } + + _php_wddx_add_chunk(packet, WDDX_STRUCT_E); + _php_wddx_packet_end(packet); + *newstr = _php_wddx_gather(packet); + _php_wddx_destructor(packet); + + if(newlen) *newlen = strlen(*newstr); + + return SUCCESS; +} + +PS_SERIALIZER_DECODE_FUNC(wddx) +{ + zval *retval; + zval **ent; + zval *current; + char *key; + char tmp[128]; + ulong idx; + int hash_type; + ELS_FETCH(); + + retval = (zval *) ecalloc(sizeof(zval), 1); + + _php_wddx_deserialize(val, retval); + + for(zend_hash_internal_pointer_reset(retval->value.ht); + zend_hash_get_current_data(retval->value.ht, (void **) &ent) == SUCCESS; + zend_hash_move_forward(retval->value.ht)) { + hash_type = zend_hash_get_current_key(retval->value.ht, &key, &idx); + + switch(hash_type) { + case HASH_KEY_IS_LONG: + sprintf(tmp, "%ld", idx); + key = tmp; + case HASH_KEY_IS_STRING: + zval_add_ref(ent); + zend_hash_update(&EG(symbol_table), key, strlen(key) + 1, + ent, sizeof(ent), NULL); + } + } + + zval_dtor(retval); + efree(retval); + + return SUCCESS; +} +#endif static char *_php_session_encode(int *newlen PSLS_DC) {

« previous php.version4 (#4072) next »