int connection::redis_raw_cmd(redisCallbackFn* fn, void* priv_data, const char* fmt, va_list ap) {
     if (NULL == context) {
         return error_code::REDIS_HAPP_CREATE;
     }
            
     return redisvAsyncCommand(context, fn, priv_data, fmt, ap);
 }
Exemple #2
0
int redisAsyncCommand(redisAsyncContext *ac, redisCallbackFn *fn, void *privdata, const char *format, ...) {
    va_list ap;
    int status;
    va_start(ap,format);
    status = redisvAsyncCommand(ac,fn,privdata,format,ap);
    va_end(ap);
    return status;
}
 int connection::redis_raw_cmd(redisCallbackFn* fn, void* priv_data, const char* fmt, ...) {
     if (NULL == context) {
         return error_code::REDIS_HAPP_CREATE;
     }
     
     va_list ap;
     va_start(ap, fmt);
     int res = redisvAsyncCommand(context, fn, priv_data, fmt, ap);
     va_end(ap);
     
     return res;
 }
Exemple #4
0
static int swoole_redis_send_command(zval *object, zval *callback, char *format, ...)
{
#if PHP_MAJOR_VERSION < 7
    TSRMLS_FETCH_FROM_CTX(sw_thread_ctx ? sw_thread_ctx : NULL);
#endif
    swRedisClient *redis = swoole_get_object(object);
    switch (redis->state)
    {
    case SWOOLE_REDIS_STATE_CONNECT:
        swoole_php_error(E_WARNING, "redis client is not connected.");
        return SW_ERR;
    case SWOOLE_REDIS_STATE_WAIT:
        swoole_php_error(E_WARNING, "redis client is waiting for response.");
        return SW_ERR;
    case SWOOLE_REDIS_STATE_CLOSED:
        swoole_php_error(E_WARNING, "redis client connection is closed.");
        return SW_ERR;
    default:
        break;
    }

#if PHP_MAJOR_VERSION < 7
    redis->result_callback = callback;
#else
    redis->result_callback = &redis->_result_callback;
    memcpy(redis->result_callback, callback, sizeof(zval));
#endif

    sw_zval_add_ref(&redis->result_callback);

    va_list ap;
    va_start(ap, format);
    int ret = redisvAsyncCommand(redis->context, swoole_redis_onResult, NULL, format, ap);
    va_end(ap);

    if (ret < 0)
    {
        swoole_php_error(E_WARNING, "redisAsyncCommandArgv() failed.");
        return SW_ERR;
    }
    redis->state = SWOOLE_REDIS_STATE_WAIT;
    return SW_OK;
}