Esempio n. 1
0
        /// <summary>
        /// Receives message from Extension (via Edge)
        /// </summary>
        private async void OnAppServiceRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
        {
            AppServiceDeferral messageDeferral = args.GetDeferral();

            try
            {
                if (this.centennialAppLaunched)
                {
                    this.currentConnectionIndex = Int32.Parse(sender.AppServiceName);
                    this.centennialConnection   = centennialConnections[this.currentConnectionIndex];

                    // Send message to the Centennial component and wait for response
                    AppServiceResponse centennialResponse = await this.centennialConnection.SendMessageAsync(args.Request.Message);

                    await args.Request.SendResponseAsync(centennialResponse.Message);
                }
                else
                {
                    throw new Exception("Failed to launch Centennial App!");
                }
            }
            finally
            {
                messageDeferral.Complete();
            }
        }
Esempio n. 2
0
        private async void OnRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
        {
            AppServiceDeferral deferral = args.GetDeferral();

            try
            {
                ValueSet message = args.Request.Message;
                ValueSet result  = null;

                switch (message["command"].ToString())
                {
                case "GET":
                    result = GetBooks();
                    break;

                case "POST":
                    result = AddBook(message["book"].ToString());
                    break;

                default:
                    break;
                }

                await args.Request.SendResponseAsync(result);
            }
            finally
            {
                deferral.Complete();
            }
        }
        private async void OnAppServiceRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
        {
            AppServiceDeferral messageDeferral = args.GetDeferral();

            try
            {
                Dictionary <string, object> Request  = new Dictionary <string, object>();
                Dictionary <string, object> Response = new Dictionary <string, object>();
                foreach (KeyValuePair <string, object> keyValuePair in args.Request.Message)
                {
                    Request.Add(keyValuePair.Key, keyValuePair.Value);
                }

                AppPwdService.Consume(Request, out Response);

                foreach (KeyValuePair <string, object> keyValuePair in Response)
                {
                    ValueSet message = new ValueSet
                    {
                        { keyValuePair.Key, keyValuePair.Value }
                    };
                    await args.Request.SendResponseAsync(message);
                }
            }
            finally
            {
                messageDeferral.Complete();
            }
        }
Esempio n. 4
0
 public ASRequest(AppServiceRequest internalRequest, AppServiceDeferral internalRequestDeferral,
                  ASConnection connection)
 {
     _connection              = connection;
     _internalRequest         = internalRequest;
     _internalRequestDeferral = internalRequestDeferral;
     Message = _connection._serializer.DeserializeFromValueSet(internalRequest.Message);
 }
        public async Task HandleDeferral(AppServiceDeferral deferral, AppServiceRequest request)
        {
            StartupTask.WriteTelemetryEvent("Action_AppService");

            ValueSet returnMessage = new ValueSet();
            await request.SendResponseAsync(returnMessage);

            deferral.Complete();
        }
        protected override async void OnRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
        {
            // Echo service. Send back what we received.
            AppServiceDeferral defferal = args.GetDeferral();

            await SendResponseMessageAsync(args.Request, args.Request.Message);

            defferal.Complete();
        }
Esempio n. 7
0
        private async void OnRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
        {
            AppServiceDeferral messageDeferral = args.GetDeferral();

            var message = await ConnectedService.Instance.HandleMessageReceivedAsync(args.Request.Message, null, _appServiceconnection);

            await args.Request.SendResponseAsync(message);

            messageDeferral.Complete();
        }
Esempio n. 8
0
        private async void OnAppServiceRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
        {
            AppServiceDeferral messageDeferral = args.GetDeferral();

            var result = new ValueSet();

            GazeSettings.ValueSetFromLocalSettings(result);

            await args.Request.SendResponseAsync(result);

            messageDeferral.Complete();
        }
Esempio n. 9
0
        /// <summary>
        /// Receives message from UWP app and sends a response back
        /// </summary>
        private static async void Connection_RequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
        {
            AppServiceDeferral messageDeferral = args.GetDeferral();

            try
            {
                var value          = args.Request.Message.First().Value.ToString();
                var jsonSerializer = new JavaScriptSerializer();
                var response       = new ValueSet();
                try
                {
                    var    valueList   = (IDictionary <string, object>)jsonSerializer.DeserializeObject(value);
                    string messageType = valueList["action"].ToString();

                    switch (messageType)
                    {
                    case "search_tsvn":
                        var tsvnPath = SearchTsvn();
                        if (tsvnPath != "")
                        {
                            response.Add("message", jsonSerializer.Serialize(new { result = true, data = tsvnPath }));
                        }
                        else
                        {
                            response.Add("message", jsonSerializer.Serialize(new { result = true, data = false }));
                        }
                        break;

                    case "tsvn":
                        var path      = valueList["path"].ToString();
                        var tsvn_args = ((object[])valueList["args"]).Select(o => (string)o).ToArray();
                        var ret       = RunTsvn(path, tsvn_args);
                        response.Add("message", jsonSerializer.Serialize(new { result = ret }));
                        break;

                    default:
                        response.Add("message", jsonSerializer.Serialize(new { result = false, error = "Unknown action" }));
                        break;
                    }
                }
                catch (System.Exception e)
                {
                    response = new ValueSet();
                    response.Add("message", jsonSerializer.Serialize(new { result = false, error = e.ToString() }));
                }
                await args.Request.SendResponseAsync(response);
            }
            finally
            {
                messageDeferral.Complete();
                Application.Exit();
            }
        }
Esempio n. 10
0
        private void Connection_RequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
        {
            AppServiceDeferral deferral = args.GetDeferral();

            if (args.Request.Message.ContainsKey("refresh"))
            {
                App_Refresh();
            }

            if (args.Request.Message.ContainsKey("redraw"))
            {
                DWM.Draw();
            }

            if (args.Request.Message.ContainsKey("padding_read"))
            {
                App_SendPadding();
            }

            if (args.Request.Message.ContainsKey("padding_set"))
            {
                args.Request.Message.TryGetValue("padding_set", out object message);
                int newPadding = int.Parse(message.ToString());
                DWM.Padding = newPadding;
                Properties.Settings.Default.Padding = newPadding;
                Properties.Settings.Default.Save();
            }

            if (args.Request.Message.ContainsKey("filters_set"))
            {
                args.Request.Message.TryGetValue("filters_set", out object message);
                List <List <string> >         receivedFilters = JsonConvert.DeserializeObject <List <List <string> > >(message.ToString());
                List <Pair <string, string> > parsedFilters   = new List <Pair <string, string> >();

                foreach (List <string> f in receivedFilters)
                {
                    parsedFilters.Add(new Pair <string, string>(
                                          f[0],
                                          f[1]
                                          ));
                }

                DWM.ConfigurableFilters             = parsedFilters;
                Properties.Settings.Default.Filters = JsonConvert.SerializeObject(parsedFilters);
                Properties.Settings.Default.Save();

                DWM.ClearWindows();
                DWM.GetWindows();
                DWM.Draw();
            }

            deferral.Complete();
        }
Esempio n. 11
0
        /// <summary>
        /// Receives message from Extension (via Edge)
        /// </summary>
        private async void OnAppServiceRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
        {
            AppServiceDeferral messageDeferral = args.GetDeferral();
            ValueSet           message         = args.Request.Message;

            string   value         = args.Request.Message.First().Value.ToString();
            ValueSet returnMessage = new ValueSet();

            returnMessage.Add("message", "type and value:" + value);
            await args.Request.SendResponseAsync(returnMessage);

            messageDeferral.Complete();
        }
Esempio n. 12
0
        /// <summary>
        /// Receives message from desktopBridge App
        /// </summary>
        private async void OndesktopBridgeAppServiceRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
        {
            AppServiceDeferral messageDeferral = args.GetDeferral();

            try
            {
                await connections[Int32.Parse(sender.AppServiceName)].SendMessageAsync(args.Request.Message);
            }
            finally
            {
                messageDeferral.Complete();
            }
        }
Esempio n. 13
0
        private async void OnAppServiceRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
        {
            AppServiceDeferral messageDeferral = args.GetDeferral();
            ValueSet           message         = args.Request.Message;

            if (message.ContainsKey("LIDAR"))
            {
                await args.Request.SendResponseAsync(_lidar.ReturnData());

                messageDeferral.Complete();
                return;
            }

            Device receivedFromAddress = (Device)message["ADDRESS"];

            switch (receivedFromAddress)
            {
            case Device.Wheel:
                _wheel.ExecuteWheelCommand(message);
                break;

            case Device.Ultrasonic:
                if (message.ContainsKey("REQUEST"))
                {
                    await args.Request.SendResponseAsync(_ultrasound.ReturnData());
                }
                break;

            case Device.EncoderLeft:
                if (message.ContainsKey("REQUEST"))
                {
                    await args.Request.SendResponseAsync(_encoderLeft.ReturnData());
                }
                break;

            case Device.EncoderRight:
                if (message.ContainsKey("REQUEST"))
                {
                    await args.Request.SendResponseAsync(_encoderRight.ReturnData());
                }
                break;

            case Device.GyroAccelerometer:
                break;

            default:
                throw new ArgumentOutOfRangeException($"Received request from invalid device address {receivedFromAddress}");
            }

            messageDeferral.Complete();
        }
Esempio n. 14
0
        private async void AppServiceConnection_RequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
        {
            AppServiceDeferral messageDeferral = args.GetDeferral();
            ValueSet           message         = args.Request.Message;
            string             text            = message["item"] as string;

            if (text == "cheeseburger")
            {
                ValueSet returnMessage = new ValueSet();
                returnMessage.Add("price", "3.99");
                await args.Request.SendResponseAsync(returnMessage);
            }
            messageDeferral.Complete();
        }
Esempio n. 15
0
        private async void OnAppServiceRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
        {
            AppServiceDeferral messageDeferral = args.GetDeferral();
            ValueSet           message         = args.Request.Message;
            string             text            = message["Request"] as string;

            if ("Value" == text)
            {
                ValueSet returnMessage = new ValueSet();
                returnMessage.Add("Response", "True");
                await args.Request.SendResponseAsync(returnMessage);
            }
            messageDeferral.Complete();
        }
Esempio n. 16
0
        private async void Connection_RequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
        {
            AppServiceDeferral Deferral = args.GetDeferral();

            try
            {
                AppServiceConnection ServerConnection = null;

                if (SpinWait.SpinUntil(() => PairedConnections.ContainsKey(sender), 5000))
                {
                    ServerConnection = PairedConnections[sender];
                }

                if (ServerConnection != null)
                {
                    AppServiceResponse ServerRespose = await ServerConnection.SendMessageAsync(args.Request.Message);

                    if (ServerRespose.Status == AppServiceResponseStatus.Success)
                    {
                        await args.Request.SendResponseAsync(ServerRespose.Message);
                    }
                    else
                    {
                        await args.Request.SendResponseAsync(new ValueSet { { "Error", "Can't not send message to server" } });
                    }
                }
                else
                {
                    ValueSet Value = new ValueSet
                    {
                        { "Error", "Failed to wait a server connection within the specified time" }
                    };

                    await args.Request.SendResponseAsync(Value);
                }
            }
            catch
            {
                ValueSet Value = new ValueSet
                {
                    { "Error", "Some exceptions were threw while transmitting the message" }
                };

                await args.Request.SendResponseAsync(Value);
            }
            finally
            {
                Deferral.Complete();
            }
        }
Esempio n. 17
0
        private async void OnAppServiceRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
        {
            AppServiceDeferral messageDeferral = args.GetDeferral();
            ValueSet           message         = args.Request.Message;
            string             text            = message["input"] as string;

            OnDataReceived(text);

            ValueSet returnMessage = new ValueSet();

            returnMessage.Add("ack", "OK");
            await args.Request.SendResponseAsync(returnMessage);

            messageDeferral.Complete();
        }
Esempio n. 18
0
        private async void OnAppServiceRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
        {
            AppServiceDeferral messageDeferral = args.GetDeferral();
            ValueSet           message         = args.Request.Message;
            string             request         = message["Request"] as string;
            string             val             = message["Value"] as string;

            if ("CAPITALIZE" == request)
            {
                ValueSet returnMessage = new ValueSet();
                returnMessage.Add("Response", val.ToUpper());
                await args.Request.SendResponseAsync(returnMessage);
            }
            messageDeferral.Complete();
        }
        /// <summary>
        /// Receives message from Centennial App
        /// </summary>
        private async void OnCentennialAppServiceRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
        {
            AppServiceDeferral messageDeferral = args.GetDeferral();

            try
            {
                this.currentConnectionIndex = Int32.Parse(sender.AppServiceName);
                this.connection             = connections[this.currentConnectionIndex];

                await this.connection.SendMessageAsync(args.Request.Message);
            }
            finally
            {
                messageDeferral.Complete();
            }
        }
        public static async Task <ASConnection> AcceptConnectionAsync(AppServiceTriggerDetails e,
                                                                      BackgroundTaskDeferral connectionDeferral, IObjectSerializer serializer)
        {
            // Receive connection request, send connection response
            AppServiceRequest  request  = null;
            AppServiceDeferral deferral = null;

            var gotRequest = new SemaphoreSlim(0);

            e.AppServiceConnection.RequestReceived += OnRequestReceived;
            await gotRequest.WaitAsync();

            e.AppServiceConnection.RequestReceived -= OnRequestReceived;

            var message = serializer.DeserializeFromValueSet(request.Message);

            if (message is ConnectionRequestMessage connectionRequest)
            {
                // Accept connection request
                var connectionId       = "AS_" + Guid.NewGuid();
                var connectionResponse = new ConnectionResponseMessage(connectionId);
                await request.SendResponseAsync(serializer.SerializeToValueSet(connectionResponse));

                deferral.Complete();
                return(new ASConnection(
                           connectionId, e.AppServiceConnection, connectionDeferral,
                           e.IsRemoteSystemConnection, serializer));
            }
            else
            {
                // Wrong message received => reject connection
                var connectionResponse = new ConnectionResponseMessage(null);
                await request.SendResponseAsync(serializer.SerializeToValueSet(connectionResponse));

                deferral.Complete();
                connectionDeferral.Complete();
                e.AppServiceConnection.Dispose();
                return(null);
            }

            void OnRequestReceived(AppServiceConnection _, AppServiceRequestReceivedEventArgs r)
            {
                request  = r.Request;
                deferral = r.GetDeferral();
                gotRequest.Release();
            }
        }
Esempio n. 21
0
        private async void OnAppServiceRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
        {
            AppServiceDeferral msgDeferral = args.GetDeferral();
            ValueSet           msg         = args.Request.Message;

            try
            {
                string request = msg["request"] as string;

                ValueSet response     = new();
                bool     validRequest = true;
                switch (request)
                {
                case "is_running":
                    response.Add("response", isRunning && UiUtils.IsWindowActivated ? "true" : "false");
                    break;

                case "is_connected":
                    string bareJid   = msg["bare_jid"] as string;
                    Client client    = ConnectionHandler.INSTANCE.GetClient(bareJid)?.client;
                    bool   connected = client is not null && client.xmppClient.isConnected();
                    response.Add("response", connected ? "true" : "false");
                    break;

                case "init_push":
                    PushManager.INSTANCE.Init();
                    response.Add("response", "true");
                    break;

                default:
                    Logger.Warn($"Unknown app service request '{request}' received!");
                    validRequest = false;
                    break;
                }

                if (validRequest)
                {
                    _ = await args.Request.SendResponseAsync(response);
                }
            }
            catch (Exception e)
            {
                Logger.Error("Processing the app service request failed.", e);
            }

            msgDeferral.Complete();
        }
        private async void AppServiceConnection_RequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
        {
            AppServiceDeferral messageDeferral = args.GetDeferral();
            int id = (int)args.Request.Message["id"];

            switch (id)
            {
            case 1001:
            case 1002:    //center active window position
                await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    //paw.CenterActiveWindowPosition(); // using default parameter settings when none provided
                });

                break;

            case 1003:
            case 1004:    //swap mouse buttons
                await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    //var currentSetting = smb.GetMouseButtonsSetting();
                    //if (currentSetting == MouseButtonsSetting.RightHanded) smb.SetMouseButtonsSetting(MouseButtonsSetting.LeftHanded);
                    //else /* (currentSetting == MouseButtonSettings.LeftHanded) */ smb.SetMouseButtonsSetting(MouseButtonsSetting.RightHanded);
                });

                break;

            //case 1005:
            //case 1006://lock and engage modern standby vs legacy [s3] suspend
            //    await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            //    {
            //        // TODO: implement lock and engage modern standby vs legacy [s3] suspend
            //    });
            //    break;
            default:
                break;
            }
            await args.Request.SendResponseAsync(new ValueSet());

            messageDeferral.Complete();

            // we no longer need the connection
            App.AppServiceDeferral.Complete();
            App.Connection = null;
        }
Esempio n. 23
0
        private async void OnAppServiceRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
        {
            AppServiceDeferral messageDeferral = args.GetDeferral();
            var controller = App.Services.GetService <AppServiceController>();

            if (controller is not null)
            {
                await controller.ProcessRequest(args.Request);
            }
            else
            {
                var message = new ValueSet();
                message.Add("result", "Fail. Launch Ambie in the foreground to use its app services.");
                await args.Request.SendResponseAsync(message);
            }

            messageDeferral.Complete();
        }
        /// <summary>
        /// Receives message from Extension (via Edge)
        /// </summary>
        private async Task OnAppServiceRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args, int index)
        {
            AppServiceDeferral messageDeferral = args.GetDeferral();

            try
            {
                TaskCompletionSource <bool> tcs = null;
                ConnectionDeferral          cd  = null;
                lock (thisLock)
                {
                    if (desktopConnectionMap.ContainsKey(index))
                    {
                        cd = desktopConnectionMap[index];
                    }
                    else
                    {
                        tcs = new TaskCompletionSource <bool>();
                        taskCompletionSourceMap.Add(index, tcs);
                    }
                }
                if (tcs != null)
                {
                    await tcs.Task;
                    lock (thisLock)
                    {
                        if (!desktopConnectionMap.ContainsKey(index))
                        {
                            return;
                        }
                        cd = desktopConnectionMap[index];
                    }
                }
                var desktopConnection = cd.connection;

                // Send message to the desktopBridge component and wait for response
                AppServiceResponse desktopResponse = await desktopConnection.SendMessageAsync(args.Request.Message);

                await args.Request.SendResponseAsync(desktopResponse.Message);
            }
            finally
            {
                messageDeferral.Complete();
            }
        }
Esempio n. 25
0
        private async void OnAppServiceRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
        {
            // Get a deferral because we use an awaitable API below (SendResponseAsync()) to respond to the message
            // and we don't want this call to get cancelled while we are waiting.
            AppServiceDeferral messageDeferral = args.GetDeferral();
            ValueSet           message         = args.Request.Message;
            ValueSet           returnMessage   = new ValueSet();

            string data = message["data"] as string;

            if (data != null)
            {
                returnMessage.Add("Result", new string(data.ToCharArray().Reverse().ToArray()));
            }

            await args.Request.SendResponseAsync(returnMessage);

            messageDeferral.Complete();
        }
        private async void OnAppServiceRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
        {
            AppServiceDeferral messageDeferral = args.GetDeferral();
            ValueSet           message         = args.Request.Message;
            string             cmd             = message["Command"] as string;

            try
            {
                // Return the data to the caller.
                if (cmd == "Start")
                {
                    var pageName = message["Page"] as string;

                    Log.Comment("Received request for Page: {0}", pageName);

                    ValueSet returnMessage = new ValueSet();

                    // We await the OpenPage method to ensure the navigation has finished.
                    if (await WeakReferenceMessenger.Default.Send(new RequestPageMessage(pageName)))
                    {
                        returnMessage.Add("Status", "OK");
                    }
                    else
                    {
                        returnMessage.Add("Status", "BAD");
                    }

                    await args.Request.SendResponseAsync(returnMessage);
                }
            }
            catch (Exception e)
            {
                // Your exception handling code here.
                Log.Error("Exception processing request: {0}", e.Message);
            }
            finally
            {
                // Complete the deferral so that the platform knows that we're done responding to the app service call.
                // Note: for error handling: this must be called even if SendResponseAsync() throws an exception.
                messageDeferral.Complete();
            }
        }
Esempio n. 27
0
        private async void AppServiceConnection_RequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
        {
            AppServiceDeferral messageDeferral = args.GetDeferral();
            bool isLock = (bool)args.Request.Message["Lock"];

            switch (isLock)
            {
            case true:    //stingray
                await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async() =>
                {
                    MessageDialog dlg = new MessageDialog("The Screen Locked");
                    await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async() =>
                    {
                        await dlg.ShowAsync();
                    });
                });

                break;

            case false:    //octopus
                await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async() =>
                {
                    MessageDialog dlg = new MessageDialog("The Screen UnLocked");
                    await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async() =>
                    {
                        await dlg.ShowAsync();
                    });
                });

                break;

            default:
                break;
            }
            await args.Request.SendResponseAsync(new ValueSet());

            messageDeferral.Complete();

            // we no longer need the connection
            App.AppServiceDeferral.Complete();
            App.Connection = null;
        }
        private void CommunicationService_RequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
        {
            AppServiceDeferral messageDeferral = args.GetDeferral();
            ValueSet           message         = args.Request.Message;
            string             cmd             = message["Command"] as string;

            try
            {
                // Return the data to the caller.
                if (cmd == "Log")
                {
                    string level = message["Level"] as string;
                    string msg   = message["Message"] as string;

                    switch (level)
                    {
                    case "Comment":
                        Log.Comment("[Host] {0}", msg);
                        break;

                    case "Warning":
                        Log.Warning("[Host] {0}", msg);
                        break;

                    case "Error":
                        Log.Error("[Host] {0}", msg);
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                Log.Error("Exception receiving message: {0}", e.Message);
            }
            finally
            {
                // Complete the deferral so that the platform knows that we're done responding to the app service call.
                // Note: for error handling: this must be called even if SendResponseAsync() throws an exception.
                messageDeferral.Complete();
            }
        }
Esempio n. 29
0
        private async void OnRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
        {
            AppServiceDeferral deferral = args.GetDeferral();
            ValueSet           message  = args.Request.Message;

            switch (message["type"])
            {
            case "connect":
            {
                VoiceServerUpdate data  = JsonConvert.DeserializeObject <VoiceServerUpdate>(message["config"] as string);
                VoiceState        state = JsonConvert.DeserializeObject <VoiceState>(message["state"] as string);
                webrtcManager.SetRecordingDevice(message["inputId"] as string);
                webrtcManager.SetPlaybackDevice(message["outputId"] as string);
                ConnectToVoiceChannel(data, state);
            }
            break;

            case "disconnect":
                webrtcManager.Destroy();
                voipCall?.NotifyCallEnded();
                voipCall        = null;
                voiceConnection = null;
                break;

            case "voiceStateUpdate":
            {
                // Todo: handle here
                VoiceState state = JsonConvert.DeserializeObject <VoiceState>(message["state"] as string);
            }
            break;

            case "inputDevice":
                webrtcManager.SetRecordingDevice(message["id"] as string);
                break;

            case "outputDevice":
                webrtcManager.SetPlaybackDevice(message["id"] as string);
                break;
            }
            deferral.Complete();
        }
        public void Run(IBackgroundTaskInstance taskInstance)
        {
            if (!(taskInstance.TriggerDetails is AppServiceTriggerDetails appServiceTriggerDetails))
            {
                return;
            }

            AppServiceConnection appServiceConnection = appServiceTriggerDetails.AppServiceConnection;

            appServiceConnection.RequestReceived += async(sender, args) =>
            {
                AppServiceDeferral appServiceDeferral = args.GetDeferral();

                AppServiceRequest appServiceRequest = args.Request;
                ValueSet          request           = appServiceRequest.Message;

                await appServiceRequest.SendResponseAsync(new ValueSet { { "count", request.Count } });

                appServiceDeferral.Complete();
            };
        }
Esempio n. 31
0
        private async void OnNotificationAppServiceRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
        {
            AppServiceDeferral messageDeferral = args.GetDeferral();

            try
            {
                ValueSet message = args.Request.Message;

                if (message["Type"].ToString() == "FileTransferProgress")
                {
                    await DispatcherEx.RunOnCoreDispatcherIfPossible(async() =>
                    {
                        await NotificationHandler.HandleAsync(JsonConvert.DeserializeObject <FileTransfer2ProgressEventArgs>(message["Data"] as string));
                    });
                }
                else if (message["Type"].ToString() == "TextReceive")
                {
                    await DispatcherEx.RunOnCoreDispatcherIfPossible(async() =>
                    {
                        await NotificationHandler.HandleAsync(JsonConvert.DeserializeObject <TextReceiveEventArgs>(message["Data"] as string));
                    });
                }

                ValueSet returnMessage = new ValueSet();
                returnMessage.Add("Status", "OK");
                await args.Request.SendResponseAsync(returnMessage);
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Unhandled exception in OnAppServiceRequestReceived():");
                Debug.WriteLine(ex.ToString());
                await(new MessageDialog(ex.ToString(), "Unhandled exception in OnAppServiceRequestReceived()")).ShowAsync();
            }
            finally
            {
                messageDeferral.Complete();
            }
        }
 public void Dispose()
 {
     _deferral.Complete();
     _deferral = null;
 }
 public AppServiceDeferralWrapper(AppServiceDeferral deferral)
 {
     _deferral = deferral;
 }