From: Ickhee Woo Date: Thu, 21 Dec 2017 12:16:29 +0000 (+0900) Subject: fixed code for the case of calling register many times X-Git-Tag: 5.0.0-preview1-00421^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F98%2F164898%2F1;p=platform%2Fcore%2Fcsapi%2Ftizenfx.git fixed code for the case of calling register many times Change-Id: I58a20f5531c56702acbcae247969213420d248bd Signed-off-by: Ickhee Woo --- diff --git a/src/Tizen.Messaging.Push/Tizen.Messaging.Push/PushImpl.cs b/src/Tizen.Messaging.Push/Tizen.Messaging.Push/PushImpl.cs index 35a5b37..8342b7a 100644 --- a/src/Tizen.Messaging.Push/Tizen.Messaging.Push/PushImpl.cs +++ b/src/Tizen.Messaging.Push/Tizen.Messaging.Push/PushImpl.cs @@ -26,8 +26,8 @@ namespace Tizen.Messaging.Push { private static readonly object _lock = new object(); private static PushImpl _instance; - private Interop.PushClient.VoidResultCallback registerResult; - private Interop.PushClient.VoidResultCallback unregisterResult; + private static Interop.PushClient.VoidResultCallback registerResult = null; + private static Interop.PushClient.VoidResultCallback unregisterResult = null; internal static PushImpl Instance { @@ -157,6 +157,12 @@ namespace Tizen.Messaging.Push { Log.Info(Interop.PushClient.LogTag, "Register Called"); var task = new TaskCompletionSource(); + if (registerResult != null) + { + Log.Error(Interop.PushClient.LogTag, "Register callback was already registered with same callback"); + return await task.Task; + } + registerResult = (Interop.PushClient.Result regResult, IntPtr msgPtr, IntPtr userData) => { Log.Info(Interop.PushClient.LogTag, "Register Callback Called with " + regResult); @@ -172,6 +178,11 @@ namespace Tizen.Messaging.Push { Log.Error(Interop.PushClient.LogTag, "Unable to set the Result for register"); } + lock (_lock) + { + Log.Error(Interop.PushClient.LogTag, "resigterResult is unset"); + registerResult = null; + } }; Interop.PushClient.ServiceError result = Interop.PushClient.ServiceRegister(_connection, registerResult, IntPtr.Zero); Log.Info(Interop.PushClient.LogTag, "Interop.PushClient.ServiceRegister Completed"); @@ -179,6 +190,11 @@ namespace Tizen.Messaging.Push { Log.Error(Interop.PushClient.LogTag, "Register failed with " + result); task.SetException(PushExceptionFactory.CreateResponseException(result)); + lock (_lock) + { + Log.Error(Interop.PushClient.LogTag, "resigterResult is unset (failed)"); + registerResult = null; + } } return await task.Task; }