Exemple #1
0
 /// <summary>
 /// 加入拼合
 /// </summary>
 /// <param name="array"></param>
 public void Add(params Album[] array)
 {
     for (var i = 0; i < array.Length; i++)
     {
         array[i] = array[i].Clone();
     }
     Queues.AddRange(array);
     OnMergeQueueChanged();
 }
Exemple #2
0
        public void SetQueues(params IQueue[] queues)
        {
            if (queues == null)
            {
                throw new ArgumentNullException(nameof(queues));
            }

            Queues.Clear();
            Queues.AddRange(queues);
        }
Exemple #3
0
 /// <summary>
 /// 加入拼合
 /// </summary>
 /// <param name="array"></param>
 public void Add(params Album[] array)
 {
     for (var i = 0; i < array.Length; i++)
     {
         array[i] = array[i].Clone();
     }
     Queues.AddRange(array);
     OnMergeQueueChanged(new MergeQueueEventArgs()
     {
         Mode = QueueChangeMode.Add,
         Tag  = array
     });
 }
        async Task <bool> ExecuteLoadQueuesAsync(bool force = false)
        {
            if (IsBusy)
            {
                return(false);
            }

            var realm = App.GetRealm();

            try
            {
                IsBusy        = true;
                NoQueuesFound = false;


                var queues = realm.All <RealmCloudQueue>();
                if (queues.Count() > 0 && force == false)
                {
                    //Load from local containers
                    var storageAccounts            = realm.All <StorageAccountExt>().Where(sa => sa.IsStorageAccountOn);
                    List <ASECloudQueue> aseQueues = new List <ASECloudQueue>();
                    if (storageAccounts.Count() > 0)
                    {
                        foreach (var queue in queues)
                        {
                            StorageAccountsExist = true;
                            var storageAccount = storageAccounts.Where((arg) => arg.Name == queue.StorageAccountName).FirstOrDefault();

                            if (storageAccount != null)
                            {
                                var te = new CloudQueue(new Uri(queue.QueueUri),
                                                        new Microsoft.WindowsAzure.Storage.Auth.StorageCredentials(storageAccount.Name, storageAccount.PrimaryKey));
                                aseQueues.Add(new ASECloudQueue(te, storageAccount.Name));
                            }
                        }
                        Queues.Clear();
                        Queues.AddRange(aseQueues);
                    }
                }
                else
                {
                    var storageAccounts = realm.All <StorageAccountExt>().Where(sa => sa.IsStorageAccountOn);
                    Queues.Clear();
                    foreach (var account in storageAccounts)
                    {
                        string connectionString = Constants.StorageConnectionString;
                        connectionString = connectionString.Replace("<ACCOUNTNAME>", account.Name);
                        connectionString = connectionString.Replace("<ACCOUNTKEY>", account.PrimaryKey);
                        Console.WriteLine("Connecting with: " + connectionString);
                        CloudStorageAccount sa = CloudStorageAccount.Parse(connectionString);
                        var queueClient        = sa.CreateCloudQueueClient();
                        var fetchedQueues      = await queueClient.ListQueuesAsync();

                        List <ASECloudQueue> aseQueues = new List <ASECloudQueue>();
                        for (int i = 0; i < fetchedQueues.Count; i++)
                        {
                            aseQueues.Add(new ASECloudQueue(fetchedQueues[i]));
                        }
                        aseQueues.All(c => { c.StorageAccountName = account.Name; return(true); });
                        Queues.AddRange(aseQueues);
                    }
                    if (storageAccounts.Count() > 0)
                    {
                        StorageAccountsExist = true;
                    }
                    else
                    {
                        StorageAccountsExist = false;
                    }


                    await realm.WriteAsync(temprealm =>
                    {
                        temprealm.RemoveAll <RealmCloudQueue>();
                        foreach (var que in Queues)
                        {
                            temprealm.Add(new RealmCloudQueue(que.QueueName, que.StorageAccountName, que.BaseQueue.Uri.ToString()));
                        }
                    });

                    realm.All <RealmCloudQueue>().SubscribeForNotifications((sender, changes, error) =>
                    {
                        Console.WriteLine("Change to RealmCloudQueues");
                    });
                }


                SortQueues();
                if (Queues.Count == 0)
                {
                    NoQueuesFound = true;
                }
                else
                {
                    NoQueuesFound = false;
                }
            }
            catch (Exception ex)
            {
                Logger.Report(ex, "Method", "ExecuteLoadQueuesAsync");
                MessagingService.Current.SendMessage(MessageKeys.Error, ex);
            }
            finally
            {
                IsBusy = false;
            }
            return(true);
        }