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 FIo_MmcStorageManagerImpl.cpp
20 * @brief This is the implementation file for _MmcStorageManagerImpl class.
24 #include <unique_ptr.h>
27 #include <FBaseSysLog.h>
28 #include <FBase_NativeError.h>
29 #include <FIo_MmcStorageManagerImpl.h>
31 #include "FIo_MmcStorageManagerProxy.h"
33 using namespace Tizen::Base;
34 using namespace Tizen::Base::Collection;
36 namespace Tizen { namespace Io
39 _MmcStorageManagerImpl::_MmcStorageManagerImpl(void)
40 : __pMmcStorageManagerProxy(null)
44 _MmcStorageManagerImpl::~_MmcStorageManagerImpl(void)
49 _MmcStorageManagerImpl::Construct(void)
53 std::unique_ptr<_MmcStorageManagerProxy> pMmcStorageManagerProxy(new (std::nothrow) _MmcStorageManagerProxy);
54 SysTryReturnResult(NID_IO, pMmcStorageManagerProxy != null, E_OUT_OF_MEMORY, "The memory is insufficient");
56 r = pMmcStorageManagerProxy->Construct(this);
57 SysTryReturn(NID_IO, !IsFailed(r), r, r, "[%s] __pMmcStorageManagerProxy->Construct() failed.", GetErrorMessage(r));
59 __pMmcStorageManagerProxy = pMmcStorageManagerProxy.release();
64 _MmcStorageManagerImpl*
65 _MmcStorageManagerImpl::GetInstance(void)
67 static _MmcStorageManagerImpl* pImpl = null;
70 std::unique_ptr<_MmcStorageManagerImpl> p(new (std::nothrow) _MmcStorageManagerImpl);
71 SysTryReturn(NID_IO, p != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
73 result r = p->Construct();
74 SysTryReturn(NID_IO, r == E_SUCCESS, null, E_SYSTEM, "[E_SYSTEM] Failed to initialize channel.");
84 _MmcStorageManagerImpl::Mount(void)
86 return __pMmcStorageManagerProxy->Mount();
90 _MmcStorageManagerImpl::Unmount(void)
92 return __pMmcStorageManagerProxy->Unmount();
96 _MmcStorageManagerImpl::Format(void)
98 return __pMmcStorageManagerProxy->Format();
102 _MmcStorageManagerImpl::AddMmcStorageMountListener(IMmcStorageMountListener& listener)
104 result r = __pMmcMountListener.Add(&listener);
105 SysTryReturn(NID_IO, !IsFailed(r), r, r, "[%s] Propagating.", GetErrorMessage(r));
111 _MmcStorageManagerImpl::RemoveMmcStorageMountListener(IMmcStorageMountListener& listener)
113 result r = __pMmcMountListener.Remove(&listener);
114 SysTryReturn(NID_IO, !IsFailed(r), r, r, "[%s] Propagating.", GetErrorMessage(r));
120 _MmcStorageManagerImpl::AddMmcStorageFormatListener(IMmcStorageFormatListener& listener)
122 result r = __pMmcFormatListener.Add(&listener);
123 SysTryReturn(NID_IO, !IsFailed(r), r, r, "[%s] Propagating.", GetErrorMessage(r));
129 _MmcStorageManagerImpl::RemoveMmcStorageFormatListener(IMmcStorageFormatListener& listener)
131 result r = E_SUCCESS;
133 r = __pMmcFormatListener.Remove(&listener);
134 SysTryReturn(NID_IO, !IsFailed(r), r, r, "[%s] Propagating.", GetErrorMessage(r));
140 _MmcStorageManagerImpl::OnMmcMountResponseReceived(result r)
142 std::unique_ptr< IEnumeratorT< IMmcStorageMountListener* > >
143 pEnum(__pMmcMountListener.GetEnumeratorN());
146 while (pEnum->MoveNext() == E_SUCCESS)
148 IMmcStorageMountListener* pListener = null;
149 pEnum->GetCurrent(pListener);
150 if (pListener != null)
152 SysLog(NID_IO, "Final Mount() response sent to Application : [%s]", GetErrorMessage(r));
153 pListener->OnMmcStorageMounted(r);
162 _MmcStorageManagerImpl::OnMmcUnmountResponseReceived(result r)
164 std::unique_ptr< IEnumeratorT< IMmcStorageMountListener* > >
165 pEnum(__pMmcMountListener.GetEnumeratorN());
168 while (pEnum->MoveNext() == E_SUCCESS)
170 IMmcStorageMountListener* pListener = null;
171 pEnum->GetCurrent(pListener);
172 if (pListener != null)
174 SysLog(NID_IO, "Final Unmount() response sent to Application : [%s]", GetErrorMessage(r));
175 pListener->OnMmcStorageUnmounted(r);
184 _MmcStorageManagerImpl::OnMmcFormatResponseReceived(result r)
186 std::unique_ptr<IEnumeratorT< IMmcStorageFormatListener* > >
187 pEnum(__pMmcFormatListener.GetEnumeratorN());
190 while (pEnum->MoveNext() == E_SUCCESS)
192 IMmcStorageFormatListener* pListener = null;
193 pEnum->GetCurrent(pListener);
194 if (pListener != null)
196 SysLog(NID_IO, "Final Format() response sent to Application : [%s]", GetErrorMessage(r));
197 pListener->OnMmcStorageFormatted(r);