Example #1
0
/* convert a hash dictionary encoding to a dictionary array encoding */
robj *cowHashCopy(robj *val) {
    robj *newval = createHashObject();
    if (val->encoding == REDIS_ENCODING_ZIPMAP) {
        size_t bytes;
        redisLog(REDIS_NOTICE, "cowHashCopy REDIS_ENCODING_ZIPMAP");
        /* do raw memory copy */
        bytes = zipmapBlobLen(val->ptr);
        newval->ptr = zrealloc(newval->ptr, bytes);
        memcpy(newval->ptr, val->ptr, bytes);
        return newval;
    } else if (val->encoding == REDIS_ENCODING_HT) {
        dict *olddict = (dict *)val->ptr;
        cowDictArray *dar;

        redisLog(REDIS_NOTICE, "cowHashCopy REDIS_ENCODING_HT");
        dar = cowConvertDictToArray(olddict);
        newval = createObject(REDIS_HASH, dar);
        newval->encoding = REDIS_ENCODING_HTARRAY;

        return newval;
    } else {
        /* error. unexpected encoding */
        return NULL;
    }
    return NULL;
}
Example #2
0
robj* hashTypeLookupWriteElseCreate(caller_t *c, robj *key)
{
    robj *o = lookupKeyWrite(c->db,key);
    if (o == NULL) {
        o = createHashObject();
        dbAdd(c->db,key,o);
    } else {
        if (o->type != REDIS_HASH) {
            caller_set_err(c, ERR_TYPE);
            return NULL;
        }
    }
    return o;
}
Example #3
0
robj *createCollectionObject(int type) {
    switch(type) {
    case OBJ_HASH:
        return createHashObject();
    case OBJ_HEAPQ:
        return createHeapqObject();
    case OBJ_FTS:
        return createFTSObject();
    default:
        rr_log(RR_LOG_ERROR, "Wrong type");
        return NULL;
        break;
    }
}
Example #4
0
FILE* uploadAndRunFile()
{
	FILE *fp;
	char * input = (char*)malloc(sizeof(char)*MAX_INPUT_LENGTH);
	char * line = (char*)malloc(sizeof(char)*MAX_INPUT_LENGTH);
	char * token;
	HashObjectPtr extraJob;
	char delims[] =  ",.;:\"&!? -_\n\t\r@()#$%^*+={}[]|<>/~`";

	printf("%s\n", "Please enter the path to the file\n\n");
	fgets(input, MAX_INPUT_LENGTH, stdin);

	int j = 0;
	for (; j < strlen(input); j++)
	{
		if (input[j] == '\n')
		{
			input[j] = '\0';
			break;
		}
	}
	fp = fopen(input, "r+");

	if (fp != NULL)
	{
		while(!feof(fp))
		{
			fgets(line, MAX_INPUT_LENGTH, fp);
			if (strtok(line, delims) != NULL) 
			{
				token = strtok(line, delims);
				extraJob = createHashObject(token);
				HashInsert(table, extraJob);
				while (token != NULL) 
				{
				token = strtok(NULL, delims);
					if (token != NULL) 
					{
						token = strtok(NULL, delims);
						if (table->maxChainReached)
						{
							HashTablePtr oldTable = table;
							table = resizeHashTable(table);
							FreeHashTable(oldTable);
						}

							HashObjectPtr job = createHashObject(token);
							HashInsert(table, job);
					}


				}
			}
		}
		fclose(fp);
		free(input);
		free(line);
		return fp;
	}
	else
	{
		printf("%s\n", "That path was invalid, please try again\n\n");
		printOptions();
		free(input);
		free(line);
		return NULL;
	}

}