Пример #1
0
 public void OnError(object _, Exception e)
 {
     State = WorkState.Errored;
     receiver?.Stop().Wait();
     sender?.Stop().Wait();
     Errored?.Invoke(this, e);
 }
Пример #2
0
        private static async void Invoke()
        {
            void invoke(InvokationMethodTarget target)
            {
                target.MoveNext();

                try
                {
                    target.MethodInfo.Invoke(target.Instanse, null);
                }
                catch (Exception ex)
                {
                    Errored?.Invoke(new InvokeError("Error invokation", target, ex));
                }
            }

            Task getTask(InvokationMethodTarget target)
            {
                return(Task.Run(() => invoke(target)));
            }

            var tasks = targets.Where(t => t.IsElapsed())
                        .Select(getTask);

            await Task.WhenAll(tasks);
        }
Пример #3
0
        public void Lookup()
        {
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(m_Url.Replace("ssdp", "environment"));
                request.Accept = "application/json";

                using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                {
                    var serializer = new JsonSerializer();
                    using (var sr = new StreamReader(response.GetResponseStream()))
                        using (var jsonTextReader = new JsonTextReader(sr))
                        {
                            EnvironmentModel Model = (EnvironmentModel)serializer.Deserialize(jsonTextReader, typeof(EnvironmentModel));

                            string IPWithPort = m_IpAddress.Address + ((m_IpAddress.Port != 80) ? ":" + m_IpAddress.Port : "");

                            Resolved?.Invoke(this, new DataGridRow()
                            {
                                Name = Model.machineName, Url = "http://" + IPWithPort + "/", IpAddress = IPWithPort, Location = Model.location
                            });
                        }
                }
            }
            catch (WebException)
            {
                LookupLegacy();
            }
            catch (Exception)
            {
                Errored?.Invoke(this, m_Url);
            }
        }
Пример #4
0
        public override void OnAuthenticationError(int errorCode, ICharSequence errString)
        {
            base.OnAuthenticationError(errorCode, errString);
            var args = new ErrorEventArgs((BiometricErrorCode)errorCode, errString.ToString());

            Errored?.Invoke(this, args);
        }
        public async void GetConsumableBalanceRemainingAsync(string storeId)
        {
            var result = await storeContext.GetConsumableBalanceRemainingAsync(storeId);

            if (result.ExtendedError != null)
            {
                Errored?.Invoke(this, result.ExtendedError);
                return;
            }
        }
Пример #6
0
 private void Timer_Elapsed(object sender, ElapsedEventArgs e)
 {
     if (lastPingReceived == false)
     {
         Errored?.Invoke(this, new AdminPortException("Server did not respond in predefined time"));
         Stop();
     }
     else
     {
         SendPingMessage();
     }
 }
        public async Task GetProducts(object sender, RoutedEventArgs e)
        {
            var products = await storeContext.GetAssociatedStoreProductsAsync(GetProductKinds());

            if (products.ExtendedError != null)
            {
                Errored?.Invoke(this, products.ExtendedError);
                return;
            }

            Products.Clear();

            int count = products.Products.Count;

            foreach (var item in products.Products)
            {
                Products.Add(new StoreProductDataWrapper(item.Key, item.Value));
            }
        }
Пример #8
0
        public void LookupLegacy()
        {
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(m_Url);
                request.Accept = "application/xml";

                using (WebResponse response = request.GetResponse())
                {
                    Stream       dataStream = response.GetResponseStream();
                    StreamReader reader     = new StreamReader(dataStream);

                    XmlSerializer serializer = new XmlSerializer(typeof(DiscoveryDeviceDescriptionModel));

                    DiscoveryDeviceDescriptionModel deserialized = null;
                    try
                    {
                        deserialized = (DiscoveryDeviceDescriptionModel)serializer.Deserialize(reader);
                    }
                    catch (InvalidOperationException)
                    {
                    }

                    if (deserialized == null)
                    {
                        return;
                    }

                    Resolved?.Invoke(this, new DataGridRow()
                    {
                        Name = deserialized.Device.FriendlyName, Url = deserialized.Device.PresentationURL, IpAddress = m_IpAddress.Address.ToString(), Location = "Unknown"
                    });
                }
            }
            catch (Exception)
            {
                Errored?.Invoke(this, m_Url);
            }
        }
        public async void PurchaseProduct(object sender, RoutedEventArgs e)
        {
            var first = Products.FirstOrDefault();

            GetConsumableBalanceRemainingAsync(first.Product.StoreId);

            if (first != null && first.Product != null)
            {
                // 購買產品
                var product = first.Product;
                if (product.IsInUserCollection == false)
                {
                    var result = await product.RequestPurchaseAsync();

                    if (result.ExtendedError != null)
                    {
                        Errored?.Invoke(this, result.ExtendedError);
                        return;
                    }

                    switch (result.Status)
                    {
                    case StorePurchaseStatus.Succeeded:
                        // purchase successed
                        break;

                    case StorePurchaseStatus.AlreadyPurchased:
                        break;

                    case StorePurchaseStatus.NetworkError:
                    case StorePurchaseStatus.NotPurchased:
                    case StorePurchaseStatus.ServerError:
                        break;
                    }
                }
            }
        }
        public async Task GetPurchasedProducts(object sender, RoutedEventArgs e)
        {
            // 抓取已經購買的項目
            var purchased = await storeContext.GetUserCollectionAsync(GetProductKinds());

            if (purchased.ExtendedError != null)
            {
                Errored?.Invoke(this, purchased.ExtendedError);
                return;
            }

            if (purchased.Products == null || purchased.Products.Count == 0)
            {
                Message = "Not purchased any product";
                return;
            }

            PurchasedProducts.Clear();

            foreach (var item in purchased.Products)
            {
                PurchasedProducts.Add(new StoreProductDataWrapper(item.Key, item.Value));
            }
        }
Пример #11
0
 private void OnErrored(Exception data)
 {
     Errored?.Invoke(this, data);
 }
Пример #12
0
 public void OnErrored(object sender, Exception data)
 {
     Errored?.Invoke(sender, data);
 }
Пример #13
0
 private void OnErrored(int errorCode, string message) => Errored?.Invoke(errorCode, message);
        protected internal override void OnMessageReceived(ConversationMessage message)
        {
            if (message is CancelItemMessage)
            {
                CancelItemMessage msg = message as CancelItemMessage;
                msg.Items.ForEach((o) =>
                {
                    var cutItem = Items.FirstOrDefault(d => d.ID == o.ID);
                    if (cutItem != null)
                    {
                        cutItem.TransferState = TransferState.Canceled;
                    }
                });

                holder.Remove(msg.Items);
            }
            else if (message is ConfirmItemMessage)
            {
                Debug.WriteLine("ConfirmedItem msg count=" + (confirmMsgCount++));
                var cm = message as ConfirmItemMessage;
                //若不复制,Confirmed中的移除动作报错。测试确认一下。
                var tmpProcessingList = new List <Item>(ProcessingItems);
                //Console.WriteLine("Received a confirm message itemid=" + cm.ItemID);
                var item = tmpProcessingList.Find(i => i.ID == cm.ItemID);
                if (item != null)
                {
                    //这个状态改变,会导致item从ProcessingItems中移除。
                    item.ForceComplete(TransferState.Confirmed);
                    //移除动作是在同一线程中,移除完毕会进入这里。
                    if (ProcessingItems.Count() == 0)
                    {
                        //应该还需要做这个检查,有可能存在没有正在处理的文件,但其他也没法送,或者状态不对的情况。
                        if (Items.All(o => o.TransferState == TransferState.Confirmed))
                        {
                            //所有文件成功发送完毕
                            Completed?.Invoke(this);
                        }
                        else
                        {
                            //该做什么?没有正在处理的Item,但也不是所有的Item状态都是Confirmed。出错了..., 如果给对方发了列表,对方马上就回复Confirm,也是0
                        }
                    }
                    else
                    {
                        if (tmpProcessingList.All(o => o.TransferState == TransferState.WaitConfirmTimeouted || o.TransferState == TransferState.Error))
                        {
                            //处理列表中的东西,都是出错 / 等待确认超时的,没办法再处理了。报告错误。上层如果要重新发送,可以到ProcessingItem里面去取。
                            //TODO 只需检查ProcessingItems即可。需要确认一个文件出错,或者等待确认超时,传递到父目录没有?
                            Errored?.Invoke(this);
                        }
                    }
                }
            }
            else if (message is ReceiveItemErrorMessage)
            {
                var rie  = message as ReceiveItemErrorMessage;
                var item = ProcessingItems.FirstOrDefault(i => i.ID == rie.ItemID);
                if (item == null)
                {
                    item = Items.Find(i => i.ID == rie.ID);
                }
                if (item != null)
                {
                    item.ErrorCode     = rie.ErrorCode;
                    item.TransferState = TransferState.Error;
                }
            }
        }
Пример #15
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="exception"></param>
 private void Client_Errored(Exception exception)
 {
     Errored?.Invoke(new ETCarsConnectionFailedArgs(exception));
 }
Пример #16
0
 private void OnError(int errorCode, string message)
 {
     IsReady = false;
     Errored?.Invoke(errorCode, message);
 }
Пример #17
0
 protected virtual void OnErrored(Exception e) => Errored?.Invoke(e);
 protected void ReportError(Exception e)
 {
     Errored?.Invoke(this, new ErrorEventArgs(e));
 }
Пример #19
0
 /// <summary>
 /// Called when the error() function is used or an exception was thrown
 /// </summary>
 /// <param name="e"></param>
 protected virtual void OnError(String e)
 {
     Errored?.Invoke(this, e);
 }