Ejemplo n.º 1
0
        public BackgroundMulticastServer(SocketActivityInformation socketInformation, IBackgroundTaskInstance taskInstance)
        {
            socket      = socketInformation.DatagramSocket;
            information = ServerInformation.Deserialize(socketInformation.Context.Data);
            deferral    = taskInstance.GetDeferral();

            socket.MessageReceived += OnMessageReceived;
        }
Ejemplo n.º 2
0
        //--------------------------------------------------------Set-, Get- Methods:---------------------------------------------------------\\
        #region --Set-, Get- Methods--


        #endregion
        //--------------------------------------------------------Misc Methods:---------------------------------------------------------------\\
        #region --Misc Methods (Public)--
        public async void Run(IBackgroundTaskInstance taskInstance)
        {
            Logger.Debug("BackgroundSocketHandler Run():" + (++count));
            deferral = taskInstance.GetDeferral();
            if (taskInstance.TriggerDetails is SocketActivityTriggerDetails)
            {
                SocketActivityTriggerDetails socketActivityDetails = taskInstance.TriggerDetails as SocketActivityTriggerDetails;
                SocketActivityInformation    socketInfo            = socketActivityDetails.SocketInformation;
                StreamSocket socket;
                try
                {
                    showToast(socketInfo.Id + " " + socketInfo.ToString());
                }
                catch (Exception e)
                {
                    showToast(e.Message);
                }

                switch (socketActivityDetails.Reason)
                {
                case SocketActivityTriggerReason.None:
                    break;

                // Somebody send something:
                case SocketActivityTriggerReason.SocketActivity:
                    socket = socketInfo.StreamSocket;
                    await readFromSocket(socket);

                    socket.TransferOwnership(socketActivityDetails.SocketInformation.Id);
                    break;

                case SocketActivityTriggerReason.ConnectionAccepted:
                    break;

                case SocketActivityTriggerReason.KeepAliveTimerExpired:
                    socket = socketInfo.StreamSocket;
                    await sendKeepAliveAsync(socket);

                    socket.TransferOwnership(socketActivityDetails.SocketInformation.Id);
                    break;

                case SocketActivityTriggerReason.SocketClosed:
                    break;

                default:
                    break;
                }
            }
            deferral.Complete();
        }