summaryrefslogtreecommitdiff
path: root/pjsip-apps/src/pjsua/winrt/gui/uwp/VoipTasks/CallRtcTask.cs
diff options
context:
space:
mode:
Diffstat (limited to 'pjsip-apps/src/pjsua/winrt/gui/uwp/VoipTasks/CallRtcTask.cs')
-rw-r--r--pjsip-apps/src/pjsua/winrt/gui/uwp/VoipTasks/CallRtcTask.cs39
1 files changed, 39 insertions, 0 deletions
diff --git a/pjsip-apps/src/pjsua/winrt/gui/uwp/VoipTasks/CallRtcTask.cs b/pjsip-apps/src/pjsua/winrt/gui/uwp/VoipTasks/CallRtcTask.cs
new file mode 100644
index 00000000..79f15b31
--- /dev/null
+++ b/pjsip-apps/src/pjsua/winrt/gui/uwp/VoipTasks/CallRtcTask.cs
@@ -0,0 +1,39 @@
+//*********************************************************
+//
+// Copyright (c) Microsoft. All rights reserved.
+// This code is licensed under the MIT License (MIT).
+// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF
+// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY
+// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR
+// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.
+//
+//*********************************************************
+using VoipTasks.Helpers;
+using Windows.ApplicationModel.Background;
+
+namespace VoipTasks
+{
+ public sealed class CallRtcTask : IBackgroundTask
+ {
+ BackgroundTaskDeferral _deferral;
+
+ public void Run(IBackgroundTaskInstance taskInstance)
+ {
+ _deferral = taskInstance.GetDeferral();
+
+ Current.RTCTaskDeferral = _deferral;
+ // Register for Task Cancel callback
+ taskInstance.Canceled += TaskInstance_Canceled;
+ }
+
+ private void TaskInstance_Canceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason)
+ {
+ if (_deferral != null)
+ {
+ _deferral.Complete();
+ }
+
+ Current.RTCTaskDeferral = null;
+ }
+ }
+}