Skip to content

Instantly share code, notes, and snippets.

@posulliv
Created September 19, 2009 18:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save posulliv/189545 to your computer and use it in GitHub Desktop.
Save posulliv/189545 to your computer and use it in GitHub Desktop.
void setAllProducts(vector<Product> &products)
{
vector<char> raw_products(products.size() * sizeof(Product));
memcpy(&raw_products[0], &products[0], products.size() * sizeof(Product));
MyCache::singleton().set("AllProducts", raw_products);
}
vector<Product> getAllProducts()
{
vector<char> raw_products = MyCache::singleton().get("AllProducts");
if (! raw_products.empty())
{
vector<Product> products(raw_products.size() / sizeof(Product));
memcpy(&products[0], &raw_products[0], raw_products.size());
return products
}
/* obtain from persistent store */
vector<Product> products= getAllProductsFromStore();
if (! products.empty())
{
setAllProducts(products);
}
return products;
}
Product getProduct(const string &key)
{
vector<char> raw_product= MyCache::singleton().get(key);
Product ret;
if (! raw_product.empty())
{
memcpy(&ret, &raw_product[0], sizeof(Product));
}
else
{
/* retrieve it from the persistent store */
}
return ret;
}
void setProduct(const string &key, const Product &product)
{
vector<char> raw_product(sizeof(Product));
memcpy(&raw_product[0], &product, sizeof(Product));
MyCache::singleton().set(key, raw_product);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment