Beispiel #1
0
data_t* sstdata_get(sst_data_t* sstdata,const char* key)
{
	unsigned long hash_value;

	if (sstdata->key_num == 0)
	{
		return NULL;
	}

	hash_value = PMurHash32(0,key,strlen(key));
	if (hash_value <= sstdata->smallest_key->hash_value && hash_value >= sstdata->bigest_key->hash_value)
	{
		return NULL;
	}
    
	return _sstdata_binarysearch(sstdata,hash_value,key);
}
Beispiel #2
0
void* create_data(const char* key, int key_len, const char* value, int value_len, char type)
{
	data_t* data = (data_t*)xmalloc(sizeof(data_t) + key_len + value_len + 2);
	memset(data,0,sizeof(*data));
	data->type = type;
	data->key_len = key_len;
	data->value_len = value_len;

	data->key = data->addr + 1;
	data->value = data->addr + 2 + data->key_len;
	memcpy(data->key,key,data->key_len);
	memcpy(data->value,value,data->value_len);
	data->addr[data->key_len + 1] = 0;
	data->addr[data->key_len + data->value_len + 2] = 0;
	data->version = _time64(NULL);

	data->hash_value = PMurHash32(0,data->key,data->key_len);

	return data;   
}
Beispiel #3
0
struct data_item* buffer_getdata( struct buffer *b )
{
	int len;
	struct data_item* data;

	len = buffer_getint(b);
	data = xmalloc(sizeof(struct data_item) + len + 2);
	data->key_len = buffer_getint(b);
	data->value_len = buffer_getint(b);
	data->type = buffer_getchar(b);
	data->version = buffer_getlong(b);

	data->key = data->addr + 1;
	data->value = data->addr + 2 + data->key_len;
	memcpy(data->key,buffer_getnstr(b,data->key_len),data->key_len);
	memcpy(data->value,buffer_getnstr(b,data->value_len),data->value_len);
	data->addr[data->key_len + 1] = 0;
	data->addr[data->key_len + data->value_len + 2] = 0;

	data->hash_value = PMurHash32(0,data->key,data->key_len);

	return data;
}
void hashMurmurx86 ( const void * key, const int len, const unsigned int seed, void * out )
{
    *(unsigned int*)out = PMurHash32 (seed, key, len);
}
Beispiel #5
0
// local wrappers
uint32_t murmur4(const uint8_t *data, uint32_t len)
{
  return PMurHash32(0, data, len);
}