/*
* Copyright (C) 2011-2017 Redis Labs Ltd.
*
* This file is part of memtier_benchmark.
*
* memtier_benchmark is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 2.
*
* memtier_benchmark is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with memtier_benchmark. If not, see .
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include
#include
#include "item.h"
memcache_item::memcache_item(unsigned int dumpflags, time_t time,
time_t exptime,
unsigned short flags,
unsigned int nsuffix,
unsigned int clsid) :
m_dumpflags(dumpflags), m_time(time), m_exptime(exptime),
m_flags(flags), m_nsuffix(nsuffix), m_clsid(clsid),
m_version(0)
{
m_key = NULL;
m_data = NULL;
}
memcache_item::~memcache_item()
{
if (m_key != NULL)
free(m_key);
if (m_data != NULL)
free(m_data);
}
/** \brief set a memcache_item's key.
* \param key pointer to malloc() allocated key data.
* \param nkey length of key.
*/
void memcache_item::set_key(char *key, unsigned int nkey)
{
if (m_key != NULL)
free(m_key);
m_nkey = nkey;
m_key = key;
}
/** \brief set a memcache_item's data.
* \param data pointer to malloc() allocated data.
* \param nbytes length of data.
*/
void memcache_item::set_data(char *data, unsigned int nbytes)
{
if (m_data != NULL)
free(m_data);
m_nbytes = nbytes;
m_data = data;
}
char* memcache_item::get_key(void)
{
return m_key;
}
unsigned int memcache_item::get_nkey(void)
{
return m_nkey;
}
char* memcache_item::get_data(void)
{
return m_data;
}
unsigned int memcache_item::get_nbytes(void)
{
return m_nbytes;
}
void memcache_item::set_version(unsigned long int version)
{
m_version = version;
}
unsigned long int memcache_item::get_version(void)
{
return m_version;
}
time_t memcache_item::get_time(void)
{
return m_time;
}
time_t memcache_item::get_exptime(void)
{
return m_exptime;
}
unsigned int memcache_item::get_dumpflags(void)
{
return m_dumpflags;
}
unsigned short memcache_item::get_flags(void)
{
return m_flags;
}
unsigned int memcache_item::get_nsuffix(void)
{
return m_nsuffix;
}
unsigned int memcache_item::get_clsid(void)
{
return m_clsid;
}
bool memcache_item::is_expired(void)
{
return ((m_dumpflags & ITEM_DUMPFLAGS_EXPIRED) == ITEM_DUMPFLAGS_EXPIRED);
}
int memcache_item::operator<(const memcache_item& a)
{
if (this->m_time < a.m_time)
return 1;
else
return 0;
}
int memcache_item_ptr_cmp(memcache_item *a, memcache_item *b)
{
return (*a < *b);
}