2 // Open Service Platform
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
19 * @file FIoMmcStorageManager.cpp
20 * @brief This is the implementation file for MmcStorageManager class.
27 #include <FBaseSysLog.h>
28 #include <FIoMmcStorageManager.h>
30 #include <FSec_AccessController.h>
31 #include <FBase_NativeError.h>
32 #include <FIo_MmcStorageManagerImpl.h>
34 using namespace Tizen::Base;
35 using namespace Tizen::Security;
37 namespace Tizen { namespace Io
40 MmcStorageManager* MmcStorageManager::__pMmcStorageManagerInstance = null;
42 MmcStorageManager::MmcStorageManager(void)
43 : __pMmcStorageManagerImpl(null)
47 MmcStorageManager::~MmcStorageManager(void)
49 delete __pMmcStorageManagerImpl;
53 MmcStorageManager::InitSingleton(void)
55 MmcStorageManager* pInst = new (std::nothrow) MmcStorageManager();
56 SysTryReturnVoidResult(NID_IO, pInst != null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
58 pInst->__pMmcStorageManagerImpl = _MmcStorageManagerImpl::GetInstance();
59 SysTryCatch(NID_IO, pInst->__pMmcStorageManagerImpl != null, , GetLastResult(),
60 "[%s] Propagated.", GetErrorMessage(GetLastResult()));
62 __pMmcStorageManagerInstance = pInst;
64 std::atexit(DestroySingleton);
72 MmcStorageManager::DestroySingleton(void)
74 delete __pMmcStorageManagerInstance;
78 MmcStorageManager::GetInstance(void)
80 static pthread_once_t onceBlock = PTHREAD_ONCE_INIT;
82 if (__pMmcStorageManagerInstance == null)
85 pthread_once(&onceBlock, InitSingleton);
86 result r = GetLastResult();
89 onceBlock = PTHREAD_ONCE_INIT;
90 SysPropagate(NID_IO, r);
94 return __pMmcStorageManagerInstance;
98 MmcStorageManager::Mount(void)
100 SysAssertf(__pMmcStorageManagerImpl != null, "Not yet constructed. Construct() should be called before use.\n");
102 return __pMmcStorageManagerImpl->Mount();
106 MmcStorageManager::Unmount(void)
108 SysAssertf(__pMmcStorageManagerImpl != null, "Not yet constructed. Construct() should be called before use.\n");
110 return __pMmcStorageManagerImpl->Unmount();
114 MmcStorageManager::Format(void)
116 SysAssertf(__pMmcStorageManagerImpl != null, "Not yet constructed. Construct() should be called before use.\n");
118 return __pMmcStorageManagerImpl->Format();
122 MmcStorageManager::AddMmcStorageMountListener(IMmcStorageMountListener& listener)
124 SysAssertf(__pMmcStorageManagerImpl != null, "Not yet constructed. Construct() should be called before use.\n");
126 return __pMmcStorageManagerImpl->AddMmcStorageMountListener(listener);
130 MmcStorageManager::RemoveMmcStorageMountListener(IMmcStorageMountListener& listener)
132 SysAssertf(__pMmcStorageManagerImpl != null, "Not yet constructed. Construct() should be called before use.\n");
134 return __pMmcStorageManagerImpl->RemoveMmcStorageMountListener(listener);
138 MmcStorageManager::AddMmcStorageFormatListener(IMmcStorageFormatListener& listener)
140 SysAssertf(__pMmcStorageManagerImpl != null, "Not yet constructed. Construct() should be called before use.\n");
142 return __pMmcStorageManagerImpl->AddMmcStorageFormatListener(listener);
146 MmcStorageManager::RemoveMmcStorageFormatListener(IMmcStorageFormatListener& listener)
148 SysAssertf(__pMmcStorageManagerImpl != null, "Not yet constructed. Construct() should be called before use.\n");
150 return __pMmcStorageManagerImpl->RemoveMmcStorageFormatListener(listener);