Пример #1
0
        internal async Task <ServerResponse> PushServerUnregister()
        {
            var task = new TaskCompletionSource <ServerResponse>();

            unregisterResult = (Interop.PushClient.Result regResult, IntPtr msgPtr, IntPtr userData) =>
            {
                Log.Info(Interop.PushClient.LogTag, "Unregister Callback Called");
                string msg = "";
                if (msgPtr != IntPtr.Zero)
                {
                    msg = Marshal.PtrToStringAnsi(msgPtr);
                }
                ServerResponse response = new ServerResponse();
                response.ServerResult  = (ServerResponse.Result)regResult;
                response.ServerMessage = msg;
                if (task.TrySetResult(response) == false)
                {
                    Log.Error(Interop.PushClient.LogTag, "Unable to set the Result for Unregister");
                }
            };
            Interop.PushClient.ServiceError result = Interop.PushClient.ServiceDeregister(_connection, unregisterResult, IntPtr.Zero);
            if (result != Interop.PushClient.ServiceError.None)
            {
                task.SetException(PushExceptionFactory.CreateResponseException(result));
            }
            return(await task.Task);
        }
Пример #2
0
        internal async Task <ServerResponse> PushServerRegister()
        {
            Log.Info(Interop.PushClient.LogTag, "Register Called");
            var task = new TaskCompletionSource <ServerResponse>();

            if (registerResult != null)
            {
                Log.Error(Interop.PushClient.LogTag, "Register callback was already registered with same callback");
                task.SetException(PushExceptionFactory.CreateResponseException(Interop.PushClient.ServiceError.OpearationFailed));
                return(await task.Task);
            }

            registerResult = (Interop.PushClient.Result regResult, IntPtr msgPtr, IntPtr userData) =>
            {
                Log.Info(Interop.PushClient.LogTag, "Register Callback Called with " + regResult);

                if (regResult < Interop.PushClient.Result.Success || regResult > Interop.PushClient.Result.SystemError)
                {
                    Log.Error(Interop.PushClient.LogTag, "registerResult is called but has wrong resResult value");
                    task.SetException(PushExceptionFactory.CreateResponseException(Interop.PushClient.ServiceError.OpearationFailed));
                }
                else
                {
                    string msg = "";
                    if (msgPtr != IntPtr.Zero)
                    {
                        msg = Marshal.PtrToStringAnsi(msgPtr);
                    }
                    ServerResponse response = new ServerResponse();
                    response.ServerResult  = (ServerResponse.Result)regResult;
                    response.ServerMessage = msg;
                    if (task.TrySetResult(response) == false)
                    {
                        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");
            if (result != Interop.PushClient.ServiceError.None)
            {
                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);
        }
Пример #3
0
        internal static Task <ServerResponse> PushServerUnregister()
        {
            var task = new TaskCompletionSource <ServerResponse>();

            unregisterResult = (Interop.PushClient.Result regResult, IntPtr msgPtr, IntPtr userData) =>
            {
                Log.Info(Interop.PushClient.LogTag, "Unregister Callback Called with " + regResult);

                if (regResult < Interop.PushClient.Result.Success || regResult > Interop.PushClient.Result.SystemError)
                {
                    Log.Error(Interop.PushClient.LogTag, "unregisterResult is called but has wrong resResult value");
                    task.SetException(PushExceptionFactory.CreateResponseException(Interop.PushClient.ServiceError.OpearationFailed));
                }
                else
                {
                    string msg = "";
                    if (msgPtr != IntPtr.Zero)
                    {
                        msg = Marshal.PtrToStringAnsi(msgPtr);
                    }
                    ServerResponse response = new ServerResponse();
                    response.ServerResult  = (ServerResponse.Result)regResult;
                    response.ServerMessage = msg;
                    if (task.TrySetResult(response) == false)
                    {
                        Log.Error(Interop.PushClient.LogTag, "Unable to set the Result for Unregister");
                    }
                }
            };
            Interop.PushClient.ServiceError result = Interop.PushClient.ServiceDeregister(_connection, unregisterResult, IntPtr.Zero);
            if (result != Interop.PushClient.ServiceError.None)
            {
                task.SetException(PushExceptionFactory.CreateResponseException(result));
            }
            return(task.Task);
        }