*/
#include <FBaseSysLog.h>
+#include <FBaseRtMutexGuard.h>
#include <FIoFile.h>
#include <FIoFileAttributes.h>
#include <FIoRegistry.h>
__mutex.Create();
- SysLog(NID_APP, "Exit.");
return r;
}
result
_AppRegistryImpl::Add(const String& key, const String& value)
{
- Registry* pReg = LoadN();
+ MutexGuard lock(__mutex);
+
+ Registry* pReg = LoadN(READ_WRITE);
SysTryReturnResult(NID_APP, pReg != null, GetLastResult(), "Propagating to caller...");
- __mutex.Acquire();
result r = pReg->AddValue(__sectionName, key, value);
SysTryLog(NID_APP, !IsFailed(r), "[%s] Adding value to the registry has failed.", GetErrorMessage(r));
+
delete pReg;
- __mutex.Release();
return r;
}
result
_AppRegistryImpl::Add(const String& key, int value)
{
- Registry* pReg = LoadN();
+ MutexGuard lock(__mutex);
+
+ Registry* pReg = LoadN(READ_WRITE);
SysTryReturnResult(NID_APP, pReg != null, GetLastResult(), "Propagating to caller...");
- __mutex.Acquire();
result r = pReg->AddValue(__sectionName, key, value);
SysTryLog(NID_APP, !IsFailed(r), "[%s] Adding value to the registry has failed.", GetErrorMessage(r));
+
delete pReg;
- __mutex.Release();
return r;
}
result
_AppRegistryImpl::Add(const String& key, double value)
{
- Registry* pReg = LoadN();
+ MutexGuard lock(__mutex);
+
+ Registry* pReg = LoadN(READ_WRITE);
SysTryReturnResult(NID_APP, pReg != null, GetLastResult(), "Propagating to caller...");
- __mutex.Acquire();
result r = pReg->AddValue(__sectionName, key, value);
SysTryLog(NID_APP, !IsFailed(r), "[%s] Adding value to the registry has failed.", GetErrorMessage(r));
+
delete pReg;
- __mutex.Release();
return r;
}
result
_AppRegistryImpl::Set(const String& key, const String& value)
{
- Registry* pReg = LoadN();
+ MutexGuard lock(__mutex);
+
+ Registry* pReg = LoadN(READ_WRITE);
SysTryReturnResult(NID_APP, pReg != null, GetLastResult(), "Propagating to caller...");
- __mutex.Acquire();
result r = pReg->SetValue(__sectionName, key, value);
SysTryLog(NID_APP, !IsFailed(r), "[%s] Setting value to the registry has failed.", GetErrorMessage(r));
+
delete pReg;
- __mutex.Release();
return r;
}
result
_AppRegistryImpl::Set(const String& key, int value)
{
- Registry* pReg = LoadN();
+ MutexGuard lock(__mutex);
+
+ Registry* pReg = LoadN(READ_WRITE);
SysTryReturnResult(NID_APP, pReg != null, GetLastResult(), "Propagating to caller...");
- __mutex.Acquire();
result r = pReg->SetValue(__sectionName, key, value);
SysTryLog(NID_APP, !IsFailed(r), "[%s] Setting value to the registry has failed.", GetErrorMessage(r));
+
delete pReg;
- __mutex.Release();
return r;
}
result
_AppRegistryImpl::Set(const String& key, double value)
{
- Registry* pReg = LoadN();
+ MutexGuard lock(__mutex);
+
+ Registry* pReg = LoadN(READ_WRITE);
SysTryReturnResult(NID_APP, pReg != null, GetLastResult(), "Propagating to caller...");
- __mutex.Acquire();
result r = pReg->SetValue(__sectionName, key, value);
SysTryLog(NID_APP, !IsFailed(r), "[%s] Setting value to the registry has failed.", GetErrorMessage(r));
+
delete pReg;
- __mutex.Release();
return r;
}
result
_AppRegistryImpl::Remove(const String& key)
{
- Registry* pReg = LoadN();
+ MutexGuard lock(__mutex);
+
+ Registry* pReg = LoadN(READ_WRITE);
SysTryReturnResult(NID_APP, pReg != null, GetLastResult(), "Propagating to caller...");
- __mutex.Acquire();
result r = pReg->RemoveValue(__sectionName, key);
SysTryLog(NID_APP, !IsFailed(r), "[%s] Removing value to the registry has failed.", GetErrorMessage(r));
+
delete pReg;
- __mutex.Release();
return r;
}
result
_AppRegistryImpl::Get(const String& key, String& value) const
{
- Registry* pReg = LoadN();
+ MutexGuard lock(__mutex);
+
+ Registry* pReg = LoadN(READ_ONLY);
SysTryReturnResult(NID_APP, pReg != null, GetLastResult(), "Propagating to caller...");
- __mutex.Acquire();
result r = pReg->GetValue(__sectionName, key, value);
SysTryLog(NID_APP, !IsFailed(r), "[%s] Getting value to the registry has failed.", GetErrorMessage(r));
+
delete pReg;
- __mutex.Release();
return r;
}
result
_AppRegistryImpl::Get(const String& key, int& value) const
{
- Registry* pReg = LoadN();
+ MutexGuard lock(__mutex);
+
+ Registry* pReg = LoadN(READ_ONLY);
SysTryReturnResult(NID_APP, pReg != null, GetLastResult(), "Propagating to caller...");
- __mutex.Acquire();
result r = pReg->GetValue(__sectionName, key, value);
SysTryLog(NID_APP, !IsFailed(r), "[%s] Getting value to the registry has failed.", GetErrorMessage(r));
+
delete pReg;
- __mutex.Release();
return r;
}
result
_AppRegistryImpl::Get(const String& key, double& value) const
{
- Registry* pReg = LoadN();
+ MutexGuard lock(__mutex);
+
+ Registry* pReg = LoadN(READ_ONLY);
SysTryReturnResult(NID_APP, pReg != null, GetLastResult(), "Propagating to caller...");
- __mutex.Acquire();
result r = pReg->GetValue(__sectionName, key, value);
SysTryLog(NID_APP, !IsFailed(r), "[%s] Getting value to the registry has failed.", GetErrorMessage(r));
+
delete pReg;
- __mutex.Release();
return r;
}
Registry*
-_AppRegistryImpl::LoadN(void) const
+_AppRegistryImpl::LoadN(LoadType type) const
{
+ result r = E_SUCCESS;
+
Registry* pReg = new (std::nothrow) Registry();
SysTryReturn(NID_APP, pReg != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
- __mutex.Acquire();
- result r = pReg->Construct(__regPath, "a+");
+ if (type == READ_ONLY)
+ {
+ r = pReg->Construct(__regPath, "r");
+ }
+ else
+ {
+ r = pReg->Construct(__regPath, "a+");
+ }
+
SysAssertf(!IsFailed(r), "Constructing the registry file (%ls) has failed. %s occurred.",
__regPath.GetPointer(), GetErrorMessage(r));
{
r = E_SUCCESS;
}
- __mutex.Release();
+
SysAssertf(!IsFailed(r), "Adding section to registry has failed. %s occurred.", GetErrorMessage(r));
SetLastResult(r);