Skip to content

Commit

Permalink
fuck info return & add function info
Browse files Browse the repository at this point in the history
  • Loading branch information
ixqbar committed Nov 5, 2015
1 parent 4e69f0a commit 3f53c86
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 4 deletions.
31 changes: 30 additions & 1 deletion ssdb_class.c
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,8 @@ PHP_SSDB_API int ssdb_sock_get(zval *id, SSDBSock **ssdb_sock TSRMLS_DC, int no_
return -1;
}

(*ssdb_sock)->twin = 1;

if ((*ssdb_sock)->lazy_connect) {
(*ssdb_sock)->lazy_connect = 0;
if (ssdb_open_socket(*ssdb_sock, 1) < 0) {
Expand Down Expand Up @@ -377,6 +379,33 @@ PHP_METHOD(SSDB, dbsize) {
ssdb_long_number_response(INTERNAL_FUNCTION_PARAM_PASSTHRU, ssdb_sock);
}

PHP_METHOD(SSDB, info) {
zval *object;
SSDBSock *ssdb_sock;
char *cmd = NULL;
int cmd_len = 0;

if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O",
&object, ssdb_ce) == FAILURE) {
RETURN_NULL();
}

if (ssdb_sock_get(object, &ssdb_sock TSRMLS_CC, 0) < 0) {
RETURN_NULL();
}

cmd_len = ssdb_cmd_format_by_str(ssdb_sock, &cmd, ZEND_STRL("info"), NULL);

if (0 == cmd_len) RETURN_NULL();

SSDB_SOCKET_WRITE_COMMAND(ssdb_sock, cmd, cmd_len);

//fuck!!!
ssdb_sock->twin = 0;

ssdb_map_response(INTERNAL_FUNCTION_PARAM_PASSTHRU, ssdb_sock, SSDB_FILTER_KEY_PREFIX_NONE, SSDB_UNSERIALIZE, SSDB_CONVERT_TO_STRING);
}

PHP_METHOD(SSDB, set) {
zval *object;
SSDBSock *ssdb_sock;
Expand Down Expand Up @@ -3501,6 +3530,7 @@ const zend_function_entry ssdb_class_methods[] = {
PHP_ME(SSDB, ping, NULL, ZEND_ACC_PUBLIC)
PHP_ME(SSDB, version, NULL, ZEND_ACC_PUBLIC)
PHP_ME(SSDB, dbsize, NULL, ZEND_ACC_PUBLIC)
PHP_ME(SSDB, info, NULL, ZEND_ACC_PUBLIC)
//command
PHP_ME(SSDB, request, NULL, ZEND_ACC_PUBLIC)
//string
Expand Down Expand Up @@ -3633,5 +3663,4 @@ void register_ssdb_class(int module_number TSRMLS_DC) {
zend_declare_class_constant_long(ssdb_ce, ZEND_STRL("SERIALIZER_PHP"), SSDB_SERIALIZER_PHP TSRMLS_CC);
zend_declare_class_constant_long(ssdb_ce, ZEND_STRL("SERIALIZER_IGBINARY"), SSDB_SERIALIZER_IGBINARY TSRMLS_CC);

zend_register_class_alias_ex(ZEND_STRL("SimpleSSDB"), ssdb_ce TSRMLS_CC);
}
1 change: 1 addition & 0 deletions ssdb_class.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ PHP_METHOD(SSDB, ping);
PHP_METHOD(SSDB, option);
PHP_METHOD(SSDB, version);
PHP_METHOD(SSDB, dbsize);
PHP_METHOD(SSDB, info);
//command
PHP_METHOD(SSDB, request);
//string
Expand Down
11 changes: 8 additions & 3 deletions ssdb_library.c
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ SSDBSock* ssdb_create_sock(
ssdb_sock->persistent = persistent;
ssdb_sock->lazy_connect = lazy_connect;
ssdb_sock->serializer = SSDB_SERIALIZER_NONE;
ssdb_sock->twin = 1;

if (persistent_id) {
size_t persistent_id_len = strlen(persistent_id);
Expand Down Expand Up @@ -863,16 +864,20 @@ void ssdb_map_response(INTERNAL_FUNCTION_PARAMETERS, SSDBSock *ssdb_sock, int fi
SSDBResponse *ssdb_response = ssdb_sock_read(ssdb_sock);
if (ssdb_response == NULL
|| ssdb_response->status != SSDB_IS_OK
|| ssdb_response->num % 2 != 0) {
|| (1 == ssdb_sock->twin && ssdb_response->num % 2 != 0)) {
ssdb_response_free(ssdb_response);
php_printf("error\n");
php_printf("error server response\n");
RETURN_NULL();
}

SSDBResponseBlock *ssdb_response_block = ssdb_response->block;
if (0 == ssdb_sock->twin) {
ssdb_response_block = ssdb_response_block->next;
}

int i = 1;
array_init(return_value);
SSDBResponseBlock *ssdb_response_block = ssdb_response->block;

while (ssdb_response_block != NULL) {
if (0 == i % 2) {
zval *z = NULL;
Expand Down
1 change: 1 addition & 0 deletions ssdb_library.h
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ typedef struct {
int persistent;
char *persistent_id;
int serializer;
int twin; //为支持info,可能ssdb-server某版本以后就移除了info的返回ssdb-server无用内容,fuck!!!
} SSDBSock;

typedef struct _SSDBResponseBlock {
Expand Down

0 comments on commit 3f53c86

Please sign in to comment.