using common::PlatformResult;
using common::ErrorCode;
+#define CHECK_CONNECTION() \
+ if (!m_handle) { \
+ int ret = push_service_connect(m_pkgId.c_str(), onPushState, onPushNotify, this, \
+ &m_handle);\
+ if (ret != PUSH_SERVICE_ERROR_NONE) { \
+ LoggerE("Failed to connect to push (%d)", ret);\
+ }\
+ m_state = PUSH_SERVICE_STATE_UNREGISTERED;\
+ m_ignoreNotificationEvents = true;\
+ }
+
+
PushManagerOld::PushManagerOld(EventListener* listener) :
IPushManager(listener),
m_state(PUSH_SERVICE_STATE_UNREGISTERED),
PlatformResult PushManagerOld::connectService() {
LoggerD("Enter");
+ CHECK_CONNECTION();
m_ignoreNotificationEvents = false;
return common::PlatformResult(ErrorCode::NO_ERROR);
}
PlatformResult PushManagerOld::disconnectService() {
LoggerD("Enter");
- m_ignoreNotificationEvents = true;
+ // disconnecting from push server
+ if (m_handle) {
+ push_service_disconnect(m_handle);
+ m_handle = nullptr;
+ m_state = PUSH_SERVICE_STATE_UNREGISTERED;
+ m_ignoreNotificationEvents = true;
+ }
return common::PlatformResult(ErrorCode::NO_ERROR);
}
PlatformResult PushManagerOld::registerApplication(double callbackId) {
LoggerD("Enter");
+ CHECK_CONNECTION();
PushManagerHolder* holder = new PushManagerHolder{this, callbackId};
return common::PlatformResult(ErrorCode::NO_ERROR);
}
+bool PushManagerOld::checkRegistered() {
+ LoggerD("Enter");
+ bool result = false;
+ char* temp = NULL;
+ int ret = push_service_get_registration_id(m_handle, &temp);
+ if (ret != PUSH_SERVICE_ERROR_NONE) {
+ return result;
+ }
+ result = (NULL != temp ? true : false);
+ free(temp);
+ return result;
+}
+
+
common::PlatformResult PushManagerOld::unregisterApplication(double callbackId) {
LoggerD("Enter");
+ CHECK_CONNECTION();
PushManagerHolder* holder = new PushManagerHolder{this, callbackId};
- if (m_state == PUSH_SERVICE_STATE_UNREGISTERED) {
- LoggerD("Already unregister, call unregister callback");
+ if (!checkRegistered()) {
+ LoggerD("Already unregistered, call unregister callback");
if (!g_idle_add(onFakeDeregister, holder)) {
delete holder;
return LogAndCreateResult(ErrorCode::UNKNOWN_ERR,
common::PlatformResult PushManagerOld::getRegistrationId(std::string& id) {
LoggerD("Enter");
+ CHECK_CONNECTION();
char* temp = NULL;
int ret = push_service_get_registration_id(m_handle, &temp);
if (ret != PUSH_SERVICE_ERROR_NONE) {
common::PlatformResult PushManagerOld::getUnreadNotifications() {
LoggerD("Enter");
+ CHECK_CONNECTION();
int ret = push_service_request_unread_notification(m_handle);
if (ret != PUSH_SERVICE_ERROR_NONE) {
return LogAndCreateResult(ErrorCode::UNKNOWN_ERR,
PlatformResult PushManagerOld::getPushMessage(picojson::value* out) {
LoggerD("Enter");
+ CHECK_CONNECTION();
push_service_notification_h handle = nullptr;
int ret = push_service_app_control_to_notification(app_control_, operation_,