storage accessor mutex lock removed
This commit is contained in:
@ -1,154 +1,130 @@
|
||||
//#include <framework/storagemanager/StorageAccessor.h>
|
||||
//
|
||||
//ConstStorageAccessor::ConstStorageAccessor(store_address_t storeId): storeId(storeId) {}
|
||||
//
|
||||
//ConstStorageAccessor::~ConstStorageAccessor() {
|
||||
// if(deleteData and store != nullptr) {
|
||||
// sif::debug << "deleting store data" << std::endl;
|
||||
// store->deleteDataNonLocking(storeId);
|
||||
// }
|
||||
// if(mutexLock != nullptr) {
|
||||
// sif::debug << "unlocking mutex lock" << std::endl;
|
||||
// mutexLock.reset();
|
||||
// }
|
||||
//}
|
||||
//
|
||||
//ConstStorageAccessor& ConstStorageAccessor::operator=(
|
||||
// ConstStorageAccessor&& other) {
|
||||
// constDataPointer = other.constDataPointer;
|
||||
// storeId = other.storeId;
|
||||
// store = other.store;
|
||||
// size_ = other.size_;
|
||||
// deleteData = other.deleteData;
|
||||
// this->store = other.store;
|
||||
// // Transfer ownership of the lock.
|
||||
// mutexLock = std::move(other.mutexLock);
|
||||
// // This prevents double deletion of the resource
|
||||
// other.mutexLock = nullptr;
|
||||
// // This prevent premature deletion
|
||||
// other.store = nullptr;
|
||||
// return *this;
|
||||
//}
|
||||
//
|
||||
//StorageAccessor::StorageAccessor(store_address_t storeId):
|
||||
// ConstStorageAccessor(storeId) {
|
||||
//}
|
||||
//
|
||||
//StorageAccessor& StorageAccessor::operator =(
|
||||
// StorageAccessor&& other) {
|
||||
// // Call the parent move assignment and also assign own member.
|
||||
// dataPointer = other.dataPointer;
|
||||
// StorageAccessor::operator=(std::move(other));
|
||||
// return * this;
|
||||
//}
|
||||
//
|
||||
//// Call the parent move ctor and also transfer own member.
|
||||
//StorageAccessor::StorageAccessor(StorageAccessor&& other):
|
||||
// ConstStorageAccessor(std::move(other)), dataPointer(other.dataPointer) {
|
||||
//}
|
||||
//
|
||||
//ConstStorageAccessor::ConstStorageAccessor(ConstStorageAccessor&& other):
|
||||
// constDataPointer(other.constDataPointer), storeId(other.storeId),
|
||||
// size_(other.size_), store(other.store), deleteData(other.deleteData),
|
||||
// internalState(other.internalState) {
|
||||
// // Transfer ownership of the lock.
|
||||
// mutexLock = std::move(other.mutexLock);
|
||||
// // This prevents double deletion of the resource. Not strictly necessary,
|
||||
// // from the testing I have conducted so far but I am not familiar enough
|
||||
// // with move semantics so I will just set the other lock to nullptr for now.
|
||||
// other.mutexLock = nullptr;
|
||||
// // This prevent premature deletion
|
||||
// other.store = nullptr;
|
||||
//}
|
||||
//
|
||||
//const uint8_t* ConstStorageAccessor::data() const {
|
||||
// return constDataPointer;
|
||||
//}
|
||||
//
|
||||
//size_t ConstStorageAccessor::size() const {
|
||||
// if(internalState == AccessState::UNINIT) {
|
||||
// sif::warning << "StorageAccessor: Not initialized!" << std::endl;
|
||||
// }
|
||||
// return size_;
|
||||
//}
|
||||
//
|
||||
//void ConstStorageAccessor::getDataCopy(uint8_t *pointer) {
|
||||
// if(internalState == AccessState::UNINIT) {
|
||||
// sif::warning << "StorageAccessor: Not initialized!" << std::endl;
|
||||
// return;
|
||||
// }
|
||||
// std::copy(constDataPointer, constDataPointer + size_, pointer);
|
||||
//}
|
||||
//
|
||||
//void ConstStorageAccessor::release() {
|
||||
// deleteData = false;
|
||||
//}
|
||||
//
|
||||
//ReturnValue_t ConstStorageAccessor::lock(MutexIF* mutex, uint32_t mutexTimeout) {
|
||||
// if(mutexLock == nullptr) {
|
||||
// mutexLock = std::unique_ptr<MutexHelper>(new MutexHelper(mutex, mutexTimeout));
|
||||
// return mutexLock.get()->getResult();
|
||||
// }
|
||||
// else {
|
||||
// sif::warning << "StorageAccessor: Attempted to lock twice. Check code!" << std::endl;
|
||||
// return HasReturnvaluesIF::RETURN_FAILED;
|
||||
// }
|
||||
//}
|
||||
//
|
||||
//void ConstStorageAccessor::unlock() {
|
||||
// if(mutexLock != nullptr) {
|
||||
// mutexLock.reset();
|
||||
// }
|
||||
//}
|
||||
//
|
||||
//store_address_t ConstStorageAccessor::getId() const {
|
||||
// return storeId;
|
||||
//}
|
||||
//
|
||||
//void ConstStorageAccessor::print() const {
|
||||
// if(internalState == AccessState::UNINIT) {
|
||||
// sif::warning << "StorageAccessor: Not initialized!" << std::endl;
|
||||
// return;
|
||||
// }
|
||||
// sif::info << "StorageAccessor: Printing data: [";
|
||||
// for(uint16_t iPool = 0; iPool < size_; iPool++) {
|
||||
// sif::info << std::hex << (int)constDataPointer[iPool];
|
||||
// if(iPool < size_ - 1){
|
||||
// sif::info << " , ";
|
||||
// }
|
||||
// }
|
||||
// sif::info << " ] " << std::endl;
|
||||
//}
|
||||
//
|
||||
//void ConstStorageAccessor::assignStore(StorageManagerIF* store) {
|
||||
// internalState = AccessState::READ;
|
||||
// this->store = store;
|
||||
//}
|
||||
//
|
||||
//
|
||||
//uint8_t* StorageAccessor::data() {
|
||||
// if(internalState == AccessState::UNINIT) {
|
||||
// sif::warning << "StorageAccessor: Not initialized!" << std::endl;
|
||||
// }
|
||||
// return dataPointer;
|
||||
//}
|
||||
//
|
||||
//ReturnValue_t StorageAccessor::write(uint8_t *data, size_t size,
|
||||
// uint16_t offset) {
|
||||
// if(internalState == AccessState::UNINIT) {
|
||||
// sif::warning << "StorageAccessor: Not initialized!" << std::endl;
|
||||
// return HasReturnvaluesIF::RETURN_FAILED;
|
||||
// }
|
||||
// if(offset + size > size_) {
|
||||
// sif::error << "StorageAccessor: Data too large for pool entry!" << std::endl;
|
||||
// return HasReturnvaluesIF::RETURN_FAILED;
|
||||
// }
|
||||
// std::copy(data, data + size, dataPointer);
|
||||
// return HasReturnvaluesIF::RETURN_OK;
|
||||
//}
|
||||
//
|
||||
//void StorageAccessor::assignConstPointer() {
|
||||
// constDataPointer = dataPointer;
|
||||
//}
|
||||
//
|
||||
//
|
||||
#include <framework/storagemanager/StorageAccessor.h>
|
||||
|
||||
ConstStorageAccessor::ConstStorageAccessor(store_address_t storeId):
|
||||
storeId(storeId) {}
|
||||
|
||||
ConstStorageAccessor::~ConstStorageAccessor() {
|
||||
if(deleteData and store != nullptr) {
|
||||
sif::debug << "deleting store data" << std::endl;
|
||||
store->deleteData(storeId);
|
||||
}
|
||||
}
|
||||
|
||||
ConstStorageAccessor& ConstStorageAccessor::operator=(
|
||||
ConstStorageAccessor&& other) {
|
||||
constDataPointer = other.constDataPointer;
|
||||
storeId = other.storeId;
|
||||
store = other.store;
|
||||
size_ = other.size_;
|
||||
deleteData = other.deleteData;
|
||||
this->store = other.store;
|
||||
// This prevents premature deletion
|
||||
other.store = nullptr;
|
||||
return *this;
|
||||
}
|
||||
|
||||
StorageAccessor::StorageAccessor(store_address_t storeId):
|
||||
ConstStorageAccessor(storeId) {
|
||||
}
|
||||
|
||||
StorageAccessor& StorageAccessor::operator =(
|
||||
StorageAccessor&& other) {
|
||||
// Call the parent move assignment and also assign own member.
|
||||
dataPointer = other.dataPointer;
|
||||
StorageAccessor::operator=(std::move(other));
|
||||
return * this;
|
||||
}
|
||||
|
||||
// Call the parent move ctor and also transfer own member.
|
||||
StorageAccessor::StorageAccessor(StorageAccessor&& other):
|
||||
ConstStorageAccessor(std::move(other)), dataPointer(other.dataPointer) {
|
||||
}
|
||||
|
||||
ConstStorageAccessor::ConstStorageAccessor(ConstStorageAccessor&& other):
|
||||
constDataPointer(other.constDataPointer), storeId(other.storeId),
|
||||
size_(other.size_), store(other.store), deleteData(other.deleteData),
|
||||
internalState(other.internalState) {
|
||||
// This prevent premature deletion
|
||||
other.store = nullptr;
|
||||
}
|
||||
|
||||
const uint8_t* ConstStorageAccessor::data() const {
|
||||
return constDataPointer;
|
||||
}
|
||||
|
||||
size_t ConstStorageAccessor::size() const {
|
||||
if(internalState == AccessState::UNINIT) {
|
||||
sif::warning << "StorageAccessor: Not initialized!" << std::endl;
|
||||
}
|
||||
return size_;
|
||||
}
|
||||
|
||||
ReturnValue_t ConstStorageAccessor::getDataCopy(uint8_t *pointer,
|
||||
size_t maxSize) {
|
||||
if(internalState == AccessState::UNINIT) {
|
||||
sif::warning << "StorageAccessor: Not initialized!" << std::endl;
|
||||
return HasReturnvaluesIF::RETURN_FAILED;
|
||||
}
|
||||
if(size_ > maxSize) {
|
||||
sif::error << "StorageAccessor: Supplied buffer not large enough" << std::endl;
|
||||
return HasReturnvaluesIF::RETURN_FAILED;
|
||||
}
|
||||
std::copy(constDataPointer, constDataPointer + size_, pointer);
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
|
||||
void ConstStorageAccessor::release() {
|
||||
deleteData = false;
|
||||
}
|
||||
|
||||
store_address_t ConstStorageAccessor::getId() const {
|
||||
return storeId;
|
||||
}
|
||||
|
||||
void ConstStorageAccessor::print() const {
|
||||
if(internalState == AccessState::UNINIT) {
|
||||
sif::warning << "StorageAccessor: Not initialized!" << std::endl;
|
||||
return;
|
||||
}
|
||||
sif::info << "StorageAccessor: Printing data: [";
|
||||
for(uint16_t iPool = 0; iPool < size_; iPool++) {
|
||||
sif::info << std::hex << (int)constDataPointer[iPool];
|
||||
if(iPool < size_ - 1){
|
||||
sif::info << " , ";
|
||||
}
|
||||
}
|
||||
sif::info << " ] " << std::endl;
|
||||
}
|
||||
|
||||
void ConstStorageAccessor::assignStore(StorageManagerIF* store) {
|
||||
internalState = AccessState::READ;
|
||||
this->store = store;
|
||||
}
|
||||
|
||||
|
||||
uint8_t* StorageAccessor::data() {
|
||||
if(internalState == AccessState::UNINIT) {
|
||||
sif::warning << "StorageAccessor: Not initialized!" << std::endl;
|
||||
}
|
||||
return dataPointer;
|
||||
}
|
||||
|
||||
ReturnValue_t StorageAccessor::write(uint8_t *data, size_t size,
|
||||
uint16_t offset) {
|
||||
if(internalState == AccessState::UNINIT) {
|
||||
sif::warning << "StorageAccessor: Not initialized!" << std::endl;
|
||||
return HasReturnvaluesIF::RETURN_FAILED;
|
||||
}
|
||||
if(offset + size > size_) {
|
||||
sif::error << "StorageAccessor: Data too large for pool entry!" << std::endl;
|
||||
return HasReturnvaluesIF::RETURN_FAILED;
|
||||
}
|
||||
std::copy(data, data + size, dataPointer);
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
|
||||
void StorageAccessor::assignConstPointer() {
|
||||
constDataPointer = dataPointer;
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user