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.
23 #include <unique_ptr.h>
25 #include <FBaseSysLog.h>
26 #include <FBaseRtIEventArg.h>
27 #include <FBase_NativeError.h>
28 #include <FIoIMmcStorageMountListener.h>
29 #include <FIoIMmcStorageFormatListener.h>
31 #include "FIo_MmcStorageManagerImpl.h"
32 #include "FIo_MmcStorageManagerProxy.h"
36 using namespace Tizen::Base;
37 using namespace Tizen::Base::Collection;
38 using namespace Tizen::Base::Runtime;
40 namespace Tizen { namespace Io
43 static const int MOUNT_TYPE = 0;
44 static const int UNMOUNT_TYPE = 1;
50 _MountEventArg(int type, result r)
63 _FormatEventArg(result r)
74 virtual void FireImpl(IEventListener& listener, const IEventArg& arg)
76 const _MountEventArg* pArg = dynamic_cast<const _MountEventArg*>(&arg);
79 IMmcStorageMountListener* pListener = dynamic_cast<IMmcStorageMountListener*> (&listener);
80 if (pListener != null)
82 if (pArg->__type == MOUNT_TYPE) // Mount
84 pListener->OnMmcStorageMounted(pArg->__r);
88 pListener->OnMmcStorageUnmounted(pArg->__r);
100 virtual void FireImpl(IEventListener& listener, const IEventArg& arg)
102 IMmcStorageFormatListener* pListener = dynamic_cast<IMmcStorageFormatListener*> (&listener);
103 if (pListener != null)
105 const _FormatEventArg* pArg = dynamic_cast<const _FormatEventArg*>(&arg);
108 pListener->OnMmcStorageFormatted(pArg->__r);
116 _MmcStorageManagerImpl::_MmcStorageManagerImpl(void)
117 : __pMmcStorageManagerProxy(null)
118 , __pMountEvent(null)
119 , __pFormatEvent(null)
123 _MmcStorageManagerImpl::~_MmcStorageManagerImpl(void)
125 delete __pMmcStorageManagerProxy;
126 delete __pMountEvent;
127 delete __pFormatEvent;
131 _MmcStorageManagerImpl::Construct(void)
133 result r = E_SUCCESS;
135 unique_ptr<_MmcStorageManagerProxy> pMmcStorageManagerProxy(new (std::nothrow) _MmcStorageManagerProxy);
136 SysTryReturnResult(NID_IO, pMmcStorageManagerProxy != null, E_OUT_OF_MEMORY, "The memory is insufficient");
138 r = pMmcStorageManagerProxy->Construct(this);
139 SysTryReturnResult(NID_IO, r == E_SUCCESS, r, "__pMmcStorageManagerProxy->Construct() failed.");
141 unique_ptr<_MountEvent> pMountEvent(new (std::nothrow) _MountEvent);
142 SysTryReturnResult(NID_IO, pMountEvent != null, E_OUT_OF_MEMORY, "The memory is insufficient.");
144 unique_ptr<_FormatEvent> pFormatEvent(new (std::nothrow) _FormatEvent);
145 SysTryReturnResult(NID_IO, pFormatEvent != null, E_OUT_OF_MEMORY, "The memory is insufficient.");
147 __pMmcStorageManagerProxy = pMmcStorageManagerProxy.release();
149 __pMountEvent = pMountEvent.release();
150 __pFormatEvent = pFormatEvent.release();
155 _MmcStorageManagerImpl*
156 _MmcStorageManagerImpl::GetInstance(void)
158 static _MmcStorageManagerImpl* pImpl = null;
161 unique_ptr<_MmcStorageManagerImpl> p(new (std::nothrow) _MmcStorageManagerImpl);
162 SysTryReturn(NID_IO, p != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
164 result r = p->Construct();
165 SysTryReturn(NID_IO, r == E_SUCCESS, null, E_SYSTEM, "[E_SYSTEM] Failed to initialize channel.");
175 _MmcStorageManagerImpl::Mount(void)
177 return __pMmcStorageManagerProxy->Mount();
181 _MmcStorageManagerImpl::Unmount(void)
183 return __pMmcStorageManagerProxy->Unmount();
187 _MmcStorageManagerImpl::Format(void)
189 return __pMmcStorageManagerProxy->Format();
193 _MmcStorageManagerImpl::AddMmcStorageMountListener(IMmcStorageMountListener& listener)
195 return __pMountEvent->AddListener(listener);
199 _MmcStorageManagerImpl::RemoveMmcStorageMountListener(IMmcStorageMountListener& listener)
201 return __pMountEvent->RemoveListener(listener);
205 _MmcStorageManagerImpl::AddMmcStorageFormatListener(IMmcStorageFormatListener& listener)
207 return __pFormatEvent->AddListener(listener);
211 _MmcStorageManagerImpl::RemoveMmcStorageFormatListener(IMmcStorageFormatListener& listener)
213 return __pFormatEvent->RemoveListener(listener);
217 _MmcStorageManagerImpl::OnMmcMountResponseReceived(result r)
219 _MountEventArg* pEventArg= new (std::nothrow) _MountEventArg(MOUNT_TYPE, r);
220 if(pEventArg != null)
222 __pMountEvent->Fire(*pEventArg);
227 _MmcStorageManagerImpl::OnMmcUnmountResponseReceived(result r)
229 _MountEventArg* pEventArg= new (std::nothrow) _MountEventArg(UNMOUNT_TYPE, r);
230 if(pEventArg != null)
232 __pMountEvent->Fire(*pEventArg);
237 _MmcStorageManagerImpl::OnMmcFormatResponseReceived(result r)
239 _FormatEventArg* pEventArg= new (std::nothrow) _FormatEventArg(r);
240 if(pEventArg != null)
242 __pFormatEvent->Fire(*pEventArg);