예제 #1
0
static void *createStringObject(const redisReadTask *task, char *str, size_t len) {
    volatile VALUE v, enc;
    v = rb_str_new(str,len);

    /* Force default external encoding if possible. */
    if (enc_default_external) {
        enc = rb_funcall(enc_klass,enc_default_external,0);
        v = rb_funcall(v,str_force_encoding,1,enc);
    }

    if (task->type == REDIS_REPLY_ERROR) {
        v = rb_funcall(rb_eRuntimeError,rb_intern("new"),1,v);
    }

    return tryParentize(task,v);
}
예제 #2
0
파일: reader.c 프로젝트: kuno/python-stdnet
static void *createStringObject(const redisReadTask *task, char *str, size_t len) {
	pythonReader *self = (pythonReader*)task->privdata;
    PyObject *obj;

    if (task->type == REDIS_REPLY_ERROR) {
        PyObject *args = Py_BuildValue("(s#)", str, len);
        assert(args != NULL); /* TODO: properly handle OOM etc */
        obj = PyObject_CallObject(self->replyErrorClass, args);
        assert(obj != NULL);
        Py_DECREF(args);
    } else {
        obj = createDecodedString(self, str, len);
    }

    return tryParentize(task, obj);
}
예제 #3
0
static void *createNilObject(const redisReadTask *task) {
    return tryParentize(task,Qnil);
}
예제 #4
0
static void *createIntegerObject(const redisReadTask *task, long long value) {
    volatile VALUE v = LL2NUM(value);
    return tryParentize(task,v);
}
예제 #5
0
static void *createArrayObject(const redisReadTask *task, int elements) {
    volatile VALUE v = rb_ary_new2(elements);
    return tryParentize(task,v);
}
예제 #6
0
파일: reader.c 프로젝트: kuno/python-stdnet
static void *createNilObject(const redisReadTask *task) {
    PyObject *obj = Py_None;
    Py_INCREF(obj);
    return tryParentize(task, obj);
}
예제 #7
0
파일: reader.c 프로젝트: kuno/python-stdnet
static void *createIntegerObject(const redisReadTask *task, long long value) {
    PyObject *obj;
    obj = PyLong_FromLongLong(value);
    return tryParentize(task, obj);
}
예제 #8
0
파일: reader.c 프로젝트: kuno/python-stdnet
static void *createArrayObject(const redisReadTask *task, int elements) {
    PyObject *obj;
    obj = PyList_New(elements);
    return tryParentize(task, obj);
}