__pBody = null;
}
- if (__pTransaction != null)
- {
- delete __pTransaction;
- __pTransaction = null;
- }
-
if (__pSession != null)
{
delete __pSession;
}
result
-_PushManagerImpl::GetUrlFromRegistrationId(const String& registrationId, const _PushRequest* pRequest, const PushMessage& pushMessage, const IList& registrationIdList, String& url)
+_PushManagerImpl::GetUrlFromRegistrationId(const String& registrationId, _PushRequest* pRequest, const PushMessage& pushMessage, const IList& registrationIdList, String& url)
{
SysLog(NID_MSG, "The GetUrlFromRegistrationId is entering.");
SysLog(NID_MSG, "Region : China");
url = "https://apchina.push.samsungosp.com.cn:8088/spp/pns/api/push";
}
+
else if (prefix.Equals("7c", false))
{
SysLog(NID_MSG, "Region : Staging");
}
result
-_PushManagerImpl::QueryServerUrl(const String& prefix, const _PushRequest* pRequest, const PushMessage& pushMessage, const IList& registrationIdList)
+_PushManagerImpl::QueryServerUrl(const String& prefix, _PushRequest* pRequest, const PushMessage& pushMessage, const IList& registrationIdList)
{
SysLog(NID_MSG, "The QueryServerUrl is entering.");
pRegistrationIdList->Add(*pTemStr);
}
- __pUrlListener->SetParams(pRequest);
-
r = __pTransaction->AddHttpTransactionListener(*__pUrlListener);
r = TransExceptionsExclusive(r, E_SYSTEM, E_OUT_OF_MEMORY);
SysTryCatch(NID_MSG, r == E_SUCCESS, , r, "[%s] Failed to add http transaction listener.", GetErrorMessage(r));
r = __pRequest->SetEntity(*pHttpUrlEncodedEntity);
SysTryCatch(NID_MSG, r == E_SUCCESS, r = E_SYSTEM, E_SYSTEM, "[%s] Failed to set entity into the http url encoded entity.", GetErrorMessage(r));
- pUserData = new (std::nothrow) _UserData(pHttpUrlEncodedEntity, pPushMessage, pRegistrationIdList);
+ pUserData = new (std::nothrow) _UserData(pHttpUrlEncodedEntity, pPushMessage, pRequest, pRegistrationIdList);
SysTryCatch(NID_MSG, pUserData != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
r = __pTransaction->SetUserObject(pUserData);
}
result
-_PushManagerImpl::SendHttpRequest(const String& url, const _PushRequest* pRequest, const PushMessage& pushMessage, const IList& registrationIdList)
+_PushManagerImpl::SendHttpRequest(const String& url, _PushRequest* pRequest, const PushMessage& pushMessage, const IList& registrationIdList)
{
SysLog(NID_MSG, "The SendHttpRequest is entering.");
String lengthAsString(L"");
PackageId packageId(L"");
String appSecret(L"");
+ _SendUserData* pUserData = null;
r = uri.SetUri(url);
r = TransExceptionsExclusive(r, E_SYSTEM, E_OUT_OF_MEMORY);
r = __pTransaction->SetTimeout(timeout);
SysTryCatch(NID_MSG, r == E_SUCCESS, r = E_SYSTEM, E_SYSTEM, "[%s] Failed to set timeout.", GetErrorMessage(r));
- __pListener->SetParams(pRequest);
-
r = __pTransaction->AddHttpTransactionListener(*__pListener);
r = TransExceptionsExclusive(r, E_SYSTEM, E_OUT_OF_MEMORY);
SysTryCatch(NID_MSG, r == E_SUCCESS, , r, "[%s] Failed to add http transaction listener.", GetErrorMessage(r));
r = __pRequest->WriteBody(*__pBody);
SysTryCatch(NID_MSG, r == E_SUCCESS, r = E_SYSTEM, E_SYSTEM, "[%s] Failed to write body into the http request.", GetErrorMessage(r));
+ pUserData = new (std::nothrow) _SendUserData(pRequest);
+ SysTryCatch(NID_MSG, pUserData != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
+
+ r = __pTransaction->SetUserObject(pUserData);
+ SysTryCatch(NID_MSG, r == E_SUCCESS, r = E_SYSTEM, E_SYSTEM, "[%s] Failed to set user object the http transaction.", GetErrorMessage(r));
+
r = __pTransaction->Submit();
r = TransExceptionsExclusive(r, E_SYSTEM, E_OUT_OF_MEMORY);
SysTryCatch(NID_MSG, r == E_SUCCESS, , r, "[%s] Failed to submit for http transaction.", GetErrorMessage(r));
return r;
CATCH:
+ if(pUserData)
+ {
+ delete pUserData;
+ pUserData = null;
+ }
if (__pBody)
{
delete __pBody;
}
result
-_PushManagerImpl::RequestPushSendMessageSingle(const _PushRequest* pRequest, const PushMessage& pushMessage, const String& registrationId)
+_PushManagerImpl::RequestPushSendMessageSingle(_PushRequest* pRequest, const PushMessage& pushMessage, const String& registrationId)
{
SysLog(NID_MSG, "The RequestPushSendMessageSingle is entering.");
}
result
-_PushManagerImpl::RequestPushSendMessageMultiple(const _PushRequest* pRequest, const PushMessage& pushMessage, const IList& registrationIdList)
+_PushManagerImpl::RequestPushSendMessageMultiple(_PushRequest* pRequest, const PushMessage& pushMessage, const IList& registrationIdList)
{
SysLog(NID_MSG, "The RequestPushSendMessageMultiple is entering.");
r = reg.Flush();
}
}
-
} } // Osp::Messaging
void CheckNextRequest(void);
Tizen::Base::String GetAppSecret(void) const;
- result GetUrlFromRegistrationId(const Tizen::Base::String& registrationId, const _PushRequest* pRequest, const PushMessage& pushMessage, const Tizen::Base::Collection::IList& registrationIdList, Tizen::Base::String& url);
- result QueryServerUrl(const Tizen::Base::String& prefix, const _PushRequest* pRequest, const PushMessage& pushMessage, const Tizen::Base::Collection::IList& registrationIdList);
- result SendHttpRequest(const Tizen::Base::String& url, const _PushRequest* pRequest, const PushMessage& pushMessage, const Tizen::Base::Collection::IList& registrationIdList);
+ result GetUrlFromRegistrationId(const Tizen::Base::String& registrationId, _PushRequest* pRequest, const PushMessage& pushMessage, const Tizen::Base::Collection::IList& registrationIdList, Tizen::Base::String& url);
+ result QueryServerUrl(const Tizen::Base::String& prefix, _PushRequest* pRequest, const PushMessage& pushMessage, const Tizen::Base::Collection::IList& registrationIdList);
+ result SendHttpRequest(const Tizen::Base::String& url, _PushRequest* pRequest, const PushMessage& pushMessage, const Tizen::Base::Collection::IList& registrationIdList);
result ComposeJsonObject(const _PushRequest* pRequest, const PushMessage& pushMessage, const Tizen::Base::Collection::IList& registrationIdList, Tizen::Base::ByteBuffer& buffer) const;
private:
private:
result RequestPushRegistration(const _PushRequest* pRequest);
result RequestPushUnregistration(const _PushRequest* pRequest);
- result RequestPushSendMessageSingle(const _PushRequest* pRequest, const PushMessage& message, const Tizen::Base::String& registrationId);
- result RequestPushSendMessageMultiple(const _PushRequest* pRequest, const PushMessage& message, const Tizen::Base::Collection::IList& registrationIdList);
+ result RequestPushSendMessageSingle(_PushRequest* pRequest, const PushMessage& message, const Tizen::Base::String& registrationId);
+ result RequestPushSendMessageMultiple(_PushRequest* pRequest, const PushMessage& message, const Tizen::Base::Collection::IList& registrationIdList);
bool GetLastPushStatus(void) const;
void UpdateLastPushStatus(bool value);
*
* This file contains implementation of _PushRequest class.
*/
-
+#include <FBaseSysLog.h>
#include "FMsg_PushManagerImpl.h"
#include "FMsg_PushRequest.h"
: __pPushManager(pPushManager)
, __reqId(reqId)
, __type(type)
+ , __refCount(0)
{
}
return __type;
}
+void
+_PushRequest::AddRef(void)
+{
+ __refCount++;
+ SysLog(NID_MSG, "The reference count is %d", __refCount);
+}
+
+void
+_PushRequest::Release(void)
+{
+ __refCount--;
+ SysLog(NID_MSG, "The reference count is %d", __refCount);
+
+ if(__refCount == 0)
+ {
+ SysLog(NID_MSG,"The reference count is 0, so delete _PushRequest");
+ delete this;
+ }
+}
+
} } // Tizen::Messaging
_PushManagerImpl* GetPushManager(void) const;
RequestId GetRequestId(void) const;
_PushRequestType GetType(void) const;
+ void AddRef(void);
+ void Release(void);
private:
_PushRequest(void);
_PushManagerImpl* __pPushManager;
RequestId __reqId;
_PushRequestType __type;
+ int __refCount;
}; // _PushRequest
} } // Tizen::Messaging
{
_PushSendListener::_PushSendListener(void)
- : __pPushRequest(null)
{
}
_PushSendListener::~_PushSendListener(void)
{
- __pPushRequest = null;
+
}
void
String errorCode(L"");
String errorMsg(L"");
- pManager = __pPushRequest->GetPushManager();
+ _SendUserData* pUserData = dynamic_cast<_SendUserData*> (httpTransaction.GetUserObject());
+ SysTryReturnVoidResult(NID_MSG, pUserData != null, E_SYSTEM, "[E_SYSTEM] Failed to cast user data.");
+
+ pManager = (pUserData->GetPushRequest())->GetPushManager();
SysTryReturnVoidResult(NID_MSG, pManager != null, E_SYSTEM, "[E_SYSTEM] A _PushManagerImpl is NULL.");
- if (__pPushRequest->GetType() == _PUSH_REQUEST_SEND)
+ if ((pUserData->GetPushRequest())->GetType() == _PUSH_REQUEST_SEND)
{
// Push Send Message Request
- pManager->HandlePushSendMessageResponse(__pPushRequest->GetRequestId(), pManager->GetRegistrationId(), res, errorCode, errorMsg);
+ pManager->HandlePushSendMessageResponse((pUserData->GetPushRequest())->GetRequestId(), pManager->GetRegistrationId(), res, errorCode, errorMsg);
}
+ delete pUserData;
delete &httpTransaction;
}
HttpResponse* pResponse = httpTransaction.GetResponse();
SysTryReturnVoidResult(NID_MSG, pResponse != null, E_SYSTEM, "[E_SYSTEM] HttpResponse is invalid.");
+ _SendUserData* pUserData = dynamic_cast<_SendUserData*> (httpTransaction.GetUserObject());
+ SysTryReturnVoidResult(NID_MSG, pUserData != null, E_SYSTEM, "[E_SYSTEM] Failed to cast user data.");
+
result r = E_SUCCESS;
_PushManagerImpl* pManager = null;
String registrationId(L"");
SysLog(NID_MSG, "The current value of errorCode is %ls.", errorCode.GetPointer());
SysLog(NID_MSG, "The current value of errorMsg is %ls.", errorMsg.GetPointer());
- pManager = __pPushRequest->GetPushManager();
+ pManager = (pUserData->GetPushRequest())->GetPushManager();
SysTryCatch(NID_MSG, pManager != null, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A _PushManagerImpl is NULL.");
if (pResponse->GetHttpStatusCode() != HTTP_STATUS_OK)
}
}
- if (__pPushRequest->GetType() == _PUSH_REQUEST_SEND)
+ if ((pUserData->GetPushRequest())->GetType() == _PUSH_REQUEST_SEND)
{
// Push Send Message Request
- pManager->HandlePushSendMessageResponse(__pPushRequest->GetRequestId(), registrationId, r, errorCode, errorMsg);
+ pManager->HandlePushSendMessageResponse((pUserData->GetPushRequest())->GetRequestId(), registrationId, r, errorCode, errorMsg);
+
}
}
delete pBody;
delete pJsonVal;
+ delete pUserData;
+ delete &httpTransaction;
return;
pJsonVal = null;
}
+ if (pUserData)
+ {
+ delete pUserData;
+ pUserData = null;
+ }
+
return;
}
return;
}
-void
-_PushSendListener::SetParams(const _PushRequest* pPushRequestSet)
+_SendUserData::_SendUserData(_PushRequest* pPushRequest)
+ : __pPushRequest(pPushRequest)
+{
+ __pPushRequest->AddRef();
+}
+
+_SendUserData::~_SendUserData(void)
+{
+ __pPushRequest->Release();
+}
+
+_PushRequest*
+_SendUserData::GetPushRequest(void)
{
- __pPushRequest = pPushRequestSet;
+ return __pPushRequest;
}
} } // Tizen::Messaging
void OnTransactionCertVerificationRequiredN(Tizen::Net::Http::HttpSession& httpSession, Tizen::Net::Http::HttpTransaction& httpTransaction, Tizen::Base::String* pCert);
- void SetParams(const _PushRequest* pPushRequestSet);
-
private:
_PushSendListener(const _PushSendListener& rhs);
_PushSendListener& operator =(const _PushSendListener& rhs);
+};
+
+// _PushSendListener
+class _SendUserData
+ : public Tizen::Base::Object
+{
+public:
+ _SendUserData(_PushRequest *pPushRequest);
+ virtual ~_SendUserData(void);
+
+public:
+ _PushRequest* GetPushRequest(void);
+
private:
- const _PushRequest* __pPushRequest;
+ _SendUserData(const _SendUserData& rhs);
+ _SendUserData& operator =(const _SendUserData& rhs);
-}; // _PushSendListener
+private:
+ _PushRequest* __pPushRequest;
+ }; // _UserData
} } // Tizen::Messaging
{
_PushUrlRequestListener::_PushUrlRequestListener(void)
- : __pPushRequest(null)
{
}
_PushUrlRequestListener::~_PushUrlRequestListener(void)
{
- __pPushRequest = null;
}
void
void
_PushUrlRequestListener::OnTransactionCompleted(HttpSession& httpSession, HttpTransaction& httpTransaction)
{
- SysLog(NID_MSG, "####### OnTransactionCompleted! #######");
+ SysLog(NID_MSG, "####### OnTransactionCompleted!#######");
HttpResponse* pResponse = httpTransaction.GetResponse();
SysTryReturnVoidResult(NID_MSG, pResponse != null, E_SYSTEM, "[E_SYSTEM] HttpResponse is invalid.");
urlValue.Append(L"/spp/pns/api/push");
SysSecureLog(NID_MSG, "The read body url is %ls.", urlValue.GetPointer());
- pManager = __pPushRequest->GetPushManager();
+ pManager = (pUserData->GetPushRequest())->GetPushManager();
+ SysTryReturnVoidResult(NID_MSG, pManager != null, E_SYSTEM, "A _PushManagerImpl is NULL.");
pManager->UpdatePushServerUrl(urlValue);
-
- r = pManager->SendHttpRequest(urlValue, __pPushRequest, *(pUserData->GetPushMessage()), *(pUserData->GetRegistrationIdList()));
+ r = pManager->SendHttpRequest(urlValue, pUserData->GetPushRequest(), *(pUserData->GetPushMessage()), *(pUserData->GetRegistrationIdList()));
SysTryReturnVoidResult(NID_MSG, r == E_SUCCESS, r, "[%s] Failed to submit http request.", GetErrorMessage(r));
}
else
}
delete pUserData;
-
delete &httpTransaction;
+
}
void
return;
}
-void
-_PushUrlRequestListener::SetParams(const _PushRequest* pPushRequestSet)
-{
- __pPushRequest = pPushRequestSet;
-}
-
-_UserData::_UserData(HttpUrlEncodedEntity* pHttpUrlEncodedEntity, PushMessage* pPushMessage, IList* pRegistrationIdList)
+_UserData::_UserData(HttpUrlEncodedEntity* pHttpUrlEncodedEntity, PushMessage* pPushMessage, _PushRequest* pPushRequest, IList* pRegistrationIdList)
: __pHttpUrlEncodedEntity(pHttpUrlEncodedEntity),
__pPushMessage(pPushMessage),
+ __pPushRequest(pPushRequest),
__pRegistrationIdList(pRegistrationIdList)
{
+ __pPushRequest->AddRef();
}
_UserData::~_UserData(void)
{
+ __pPushRequest->Release();
+
if (__pHttpUrlEncodedEntity != null)
{
delete __pHttpUrlEncodedEntity;
return __pPushMessage;
}
+_PushRequest*
+_UserData::GetPushRequest(void)
+{
+ return __pPushRequest;
+}
+
IList*
_UserData::GetRegistrationIdList(void)
{
void OnTransactionCertVerificationRequiredN(Tizen::Net::Http::HttpSession& httpSession, Tizen::Net::Http::HttpTransaction& httpTransaction, Tizen::Base::String* pCert);
- void SetParams(const _PushRequest* pPushRequestSet);
-
private:
_PushUrlRequestListener(const _PushUrlRequestListener& rhs);
_PushUrlRequestListener& operator =(const _PushUrlRequestListener& rhs);
-
-private:
- const _PushRequest* __pPushRequest;
}; // _PushUrlRequestListener
class _UserData
: public Tizen::Base::Object
{
public:
- _UserData(Tizen::Net::Http::HttpUrlEncodedEntity* pHttpUrlEncodedEntity, PushMessage* pPushMessage, Tizen::Base::Collection::IList* pRegistrationIdList);
+ _UserData(Tizen::Net::Http::HttpUrlEncodedEntity* pHttpUrlEncodedEntity, PushMessage* pPushMessage, _PushRequest* pPushRequest, Tizen::Base::Collection::IList* pRegistrationIdList);
virtual ~_UserData(void);
public:
PushMessage* GetPushMessage(void);
+ _PushRequest* GetPushRequest(void);
Tizen::Base::Collection::IList* GetRegistrationIdList(void);
private:
private:
Tizen::Net::Http::HttpUrlEncodedEntity* __pHttpUrlEncodedEntity;
PushMessage* __pPushMessage;
+ _PushRequest* __pPushRequest;
Tizen::Base::Collection::IList* __pRegistrationIdList;
}; // _UserData