You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

45 lines
1.1 KiB
C++

/*
* cacheDataAccess implementation
*
* Copyright (C) Thomas Escher, Kai Lingemann
*
* Released under the GPL version 3.
*
*/
#include "scanserver/cache/cacheDataAccess.h"
using namespace boost::interprocess;
CacheDataAccess::Lock::Lock(ip::interprocess_upgradable_mutex& mutex) :
m_lock(mutex)
{
}
CacheDataAccess::CacheDataAccess(ip::interprocess_upgradable_mutex& mutex, unsigned int& size, unsigned char* data) :
DataPointer(data, size, new Lock(mutex))
{
}
/*
CacheDataAccess::CacheDataAccess(unsigned int& size, unsigned char* data) :
m_size(size), m_data(data)
{
}
CacheDataAccess::CacheDataAccess(const CacheDataAccess& other) :
m_lock(),
m_size(other.m_size), m_data(other.m_data)
{
if(other.m_lock.mutex() != 0) {
ip::sharable_lock<ip::interprocess_upgradable_mutex> lock(*other.m_lock.mutex());
m_lock.swap(lock);
}
}
CacheDataAccess::operator bool() const
{
// if size is non-zero we should have a valid pointer to cache shared memory, don't know what happens to a zero-handle after you put it into a segment manager get address function
return m_size != 0;
}
*/