Пример #1
0
        public Task TestFollowUser()
        {
            var    u    = Utils.RandomUsername();
            var    p    = Utils.RandomString(10);
            AVUser user = new AVUser()
            {
                Username = u,
                Password = p
            };

            return(user.SignUpAsync().ContinueWith(t =>
            {
                var query = new AVQuery <AVUser>();
                return query.FirstAsync();
            }).Unwrap().ContinueWith(s =>
            {
                var friend = s.Result;
                return user.FollowAsync(friend.ObjectId);
            }).Unwrap().ContinueWith(x =>
            {
                var rtn = x.Result;
                Assert.IsTrue(rtn);
                return Task.FromResult(0);
            }));
        }
Пример #2
0
        static async void Test()
        {
            //string appId = "Eohx7L4EMfe4xmairXeT7q1w-gzGzoHsz";
            //string appKey = "GSBSGpYH9FsRdCss8TGQed0F";

            string appId  = "FQr8l8LLvdxIwhMHN77sNluX-9Nh9j0Va";
            string appKey = "MJSm46Uu6LjF5eNmqfbuUmt6";

            AVRealtime.WebSocketLog(Console.WriteLine);
            AVClient.HttpLog(Console.WriteLine);

            AVClient.Initialize(appId, appKey);
            Websockets.Net.WebsocketConnection.Link();
            var realtime = new AVRealtime(new AVRealtime.Configuration {
                ApplicationId  = appId,
                ApplicationKey = appKey
            });

            AVLiveQuery.Channel = realtime;

            var query = new AVQuery <AVObject>("GameObject").WhereEqualTo("objectId", "5cedee8e58cf480008de9caa");

            //var query = new AVQuery<AVObject>("GameObject").WhereExists("objectId");
            liveQuery = await query.SubscribeAsync();

            liveQuery.OnLiveQueryReceived += OnLiveQueryReceived;

            Console.WriteLine("done");
        }
Пример #3
0
        public async Task Create()
        {
            Init();

            var f         = false;
            var query     = new AVQuery <AVObject>("GameObject").WhereExists("objectId");
            var liveQuery = await query.SubscribeAsync();

            liveQuery.OnLiveQueryReceived += (sender, e) => {
                Console.WriteLine(e.Scope);
                f = true;
            };

            var go = new AVObject("GameObject");
            await go.SaveAsync();

            Console.WriteLine(go.ObjectId);

            while (!f)
            {
                await Task.Delay(100);
            }

            Console.WriteLine("Test create done!");
        }
Пример #4
0
    IEnumerator QueryAll(System.Action <List <ToDoListItemData> > queryCallback)
    {
        AVQuery <AVObject> query = new AVQuery <AVObject> ("ToDoListItemData").WhereEqualTo("Deleted", false);

        var list = new List <ToDoListItemData>();

        bool querySucceed = false;

        query.FindAsync().ContinueWith(t => {
            foreach (var obj in t.Result)
            {
                var itemData      = new ToDoListItemData();
                itemData.Title    = obj["Title"] as string;
                itemData.Complete = bool.Parse(obj["Complete"].ToString());
                itemData.Content  = obj["Content"] as string;
                itemData.Deleted  = bool.Parse(obj["Deleted"].ToString());
                list.Add(itemData);
            }
            querySucceed = true;
        });

        while (!querySucceed)
        {
            yield return(new WaitForEndOfFrame());
        }
        queryCallback(list);
    }
Пример #5
0
        public async Task Update()
        {
            Init();

            var f         = false;
            var query     = new AVQuery <AVObject>("GameObject").WhereEqualTo("objectId", "5cdcd79bc8959c0068de3df2");
            var liveQuery = await query.SubscribeAsync();

            liveQuery.OnLiveQueryReceived += (sender, e) => {
                Console.WriteLine(e.Scope);
                Assert.AreEqual(e.Scope, "update");
                f = true;
            };

            var go = await query.FirstAsync();

            go["name"] = "bbb";
            await go.SaveAsync();

            Console.WriteLine(go.ObjectId);

            while (!f)
            {
                await Task.Delay(100);

                f = true;
            }

            go["name"] = "ccc";
            await go.SaveAsync();

            Console.WriteLine("Test update done!");
        }
Пример #6
0
    /// <summary>
    /// 显示排行榜面板
    /// </summary>
    void ShowRankPanel()
    {
        //获取GameScore数据对象,降序排列取前10个数据
        AVQuery <AVObject> query = new AVQuery <AVObject>("GameScore").OrderByDescending("score").Limit(10);

        query.FindAsync().ContinueWith(t =>
        {
            var results = t.Result;
            var scores  = new List <string>();

            //将数据转化为字符串
            foreach (var result in results)
            {
                var score = result["playerName"] + ":" + result["score"];
                scores.Add(score);
            }

            //由于当前是在子线程,对Unity中的物体操作需要在主线程操作,用以下方法转到主线程
            MainThreadDispatcher.Send(_ =>
            {
                foreach (var score in scores)
                {
                    var item = Instantiate(RankItem);
                    item.SetActive(true);
                    item.GetComponent <Text>().text = score;
                    item.transform.SetParent(RankItem.transform.parent);
                }
                RankPanel.SetActive(true);
            }, null);
        });
    }
Пример #7
0
        public static Task <AVLiveQuery <T> > CreateAsync <T>(this AVQuery <T> query, string sessionToken = "", CancellationToken cancellationToken = default(CancellationToken)) where T : AVObject
        {
            Dictionary <string, object> strs = new Dictionary <string, object>()
            {
                { "where", query.Condition },
                { "className", query.GetClassName <T>() },
                { "sessionToken", sessionToken }
            };

            var command = new AVCommand("LiveQuery/subscribe",
                                        "POST",
                                        sessionToken: sessionToken,
                                        data: strs);

            return(AVPlugins.Instance.CommandRunner.RunCommandAsync(command).OnSuccess(t =>
            {
                var subscriptionId = t.Result.Item2["id"] as string;
                var queryId = t.Result.Item2["query_id"] as string;
                var rtn = new AVLiveQuery <T>(subscriptionId)
                {
                    Query = query,
                    QueryId = queryId
                };
                return rtn;
            }));
        }
Пример #8
0
        private void RefrushUser()
        {
            if (mUser == null)
            {
                return;
            }
            AVQuery <AVObject> query = new AVQuery <AVObject>("UserAvatars").WhereEqualTo("userObjectId", mUser.ObjectId);

            query.FindAsync().ContinueWith(t => {
                AVObject[] objs = t.Result.Cast <AVObject>().ToArray();
                if (objs.Length != 0)
                {
                    string avatarUrl = objs[0]["avatar"].ToString();
                    if (avatarUrl != "")
                    {
                        //var img = BitmapFrame.Create(new Uri(avatarUrl, UriKind.RelativeOrAbsolute));
                        //img.DownloadCompleted += (sender, e) =>
                        //{
                        //    avatar.Source = (BitmapImage)sender;
                        //};
                        avatar.Dispatcher.Invoke(() => avatar.Source = WebInteraction.GetImage(avatarUrl));
                    }
                }
            });

            userName.Text = mUser.Username;
        }
Пример #9
0
	public static void DB_QueryPlayerVillageData()
	{
		AVQuery<AVObject> query=new AVQuery<AVObject>("Village").WhereEqualTo("UserID", AVUser.CurrentUser.ObjectId);
		query.FirstAsync().ContinueWith(t =>{
			AVObject villageObject = (t as Task<AVObject>).Result;
			VillageData villageData = new VillageData();
			villageData.UserID = villageObject.Get<string>("UserID");
			villageData.Defence = villageObject.Get<int>("Defence");
			villageData.Power = villageObject.Get<int>("Power");
			villageData.Trick = villageObject.Get<int>("Trick");
			villageData.Belief = villageObject.Get<int>("Belief");
			villageData.BeliefAll = villageObject.Get<int>("BeliefAll");
			GameManager.Instance.LastGetVillageData = villageData;
			Debug.LogWarning(villageData.UserID);

			AVQuery<AVObject> buildingQuery = new AVQuery<AVObject>("Building").WhereEqualTo("UserID", AVUser.CurrentUser.ObjectId);
			buildingQuery.FindAsync().ContinueWith(t2=>{
				List<BuildingData> buildingDataList = new List<BuildingData>();
				foreach(AVObject buildingObject in (t2 as Task<IEnumerable<AVObject>>).Result)
				{
					BuildingData buildingData = new BuildingData();
					buildingData.UserID = buildingObject.Get<string>("UserID");
					buildingData.Type = (EBuildingType)buildingObject.Get<int>("Type");
					buildingData.Level = buildingObject.Get<int>("Level");
					buildingData.Value = buildingObject.Get<int>("Value");
					buildingData.SlotID = buildingObject.Get<int>("SlotID");
					buildingDataList.Add(buildingData);
				}

				GameManager.Instance.LastGetBuildingDataList = buildingDataList;
				GameManager.Instance.EventQueue.Queue.Enqueue(new EventItem(){Type = EEventItemType.PlayerVillageDataLoaded});
			});
		});
	}
Пример #10
0
        public static async void updateCloud(string foodname, string type)
        {
            if (type.Equals("11"))
            {
                AVQuery <AVObject> delete = new AVQuery <AVObject>("Fruit");
                delete = delete.WhereEqualTo("name", foodname);

                await delete.FindAsync().ContinueWith(s =>
                {
                    IEnumerable <AVObject> boys = s.Result;

                    AVObject ob = boys.ElementAt(0);
                    ob.SaveAsync().ContinueWith(t =>
                    {
                        // 保存成功之后,修改一个已经在服务端生效的数据,这里我们修改age
                        // LeanCloud 只会针对指定的属性进行覆盖操作,本例中的name不会被修改
                        ob["state"] = false;
                        ob.SaveAsync();
                    });
                });
            }
            if (type.Equals("22"))
            {
                AVQuery <AVObject> delete = new AVQuery <AVObject>("Vegetable");
                delete = delete.WhereEqualTo("name", foodname);

                await delete.FindAsync().ContinueWith(s =>
                {
                    IEnumerable <AVObject> boys = s.Result;

                    AVObject ob = boys.ElementAt(0);
                    ob.SaveAsync().ContinueWith(t =>
                    {
                        // 保存成功之后,修改一个已经在服务端生效的数据,这里我们修改age
                        // LeanCloud 只会针对指定的属性进行覆盖操作,本例中的name不会被修改
                        ob["state"] = false;
                        ob.SaveAsync();
                    });
                });
            }
            if (type.Equals("33"))
            {
                AVQuery <AVObject> delete = new AVQuery <AVObject>("Food");
                delete = delete.WhereEqualTo("name", foodname);

                await delete.FindAsync().ContinueWith(s =>
                {
                    IEnumerable <AVObject> boys = s.Result;

                    AVObject ob = boys.ElementAt(0);
                    ob.SaveAsync().ContinueWith(t =>
                    {
                        // 保存成功之后,修改一个已经在服务端生效的数据,这里我们修改age
                        // LeanCloud 只会针对指定的属性进行覆盖操作,本例中的name不会被修改
                        ob["state"] = false;
                        ob.SaveAsync();
                    });
                });
            }
        }
Пример #11
0
    private void QueryList()
    {
        var data = new AVObject("List");

        data["name"]       = "hello";
        data["Parameters"] = new List <int>(new int[] { 3, 2, 1 });

        data.SaveAsync().ContinueWith(t => {
            if (t.IsFaulted || t.IsCanceled)
            {
                Debug.Log("Failed");
                Debug.Log(t.Exception.Message);
            }
            else
            {
                Debug.Log("Success");
            }
        }).ContinueWith(t => {
            var query = new AVQuery <AVObject>("List").FindAsync().ContinueWith(t2 => {
                foreach (var result in t2.Result)
                {
//					var hello = result.Get<string>("name");
//					Debug.Log(hello);
                    var list = result.Get <IList <int> >("Parameters");
                    Debug.Log(list.ToString());
                }
            });
        });
    }
        public async void LoadContactAsync()
        {
            #region 获取所有系统中的用户,注:理论上这里是获取该用户的好友列表,以下代码仅仅是为了演示聊天的基础功能,所以默认是获取所有用户的列表。
            AVQuery <AVUser> query = new AVQuery <AVUser>();
            var users = await query.FindAsync();

            if (users != null)
            {
                foreach (var u in users)
                {
                    if (u.ObjectId != AVUser.CurrentUser.ObjectId)//当前用户不显示在联系人列表里面。
                    {
                        AllContacts.Add(new DemoContact(u));
                    }
                }
                ContactsListVM = AlphaKeyGroup <DemoContact> .CreateGroups(AllContacts, Thread.CurrentThread.CurrentUICulture,
                                                                           (DemoContact s) =>
                {
                    return(s.Nickname);
                }, true);

                NotifyPropertyChanged("ContactsListVM");
            }
            #endregion
        }
Пример #13
0
        public async Task Enter()
        {
            var f         = false;
            var query     = new AVQuery <AVObject>("Account").WhereContains("name", "x");
            var liveQuery = await query.SubscribeAsync();

            liveQuery.OnLiveQueryReceived += (sender, e) => {
                Console.WriteLine(e.Scope);
                Assert.AreEqual(e.Scope, "enter");
                f = true;
            };

            var q  = AVObject.GetQuery("Account");
            var go = await q.GetAsync("5df7268cd4b56c00748e91af");

            go["name"] = "xxx";
            await go.SaveAsync();

            Console.WriteLine(go.ObjectId);

            while (!f)
            {
                await Task.Delay(100);
            }

            go["name"] = "yyy";
            await go.SaveAsync();

            Console.WriteLine("Test enter done!");
        }
Пример #14
0
        public async Task Leave()
        {
            var f         = false;
            var query     = new AVQuery <AVObject>("Account").WhereContains("name", "s");
            var liveQuery = await query.SubscribeAsync();

            liveQuery.OnLiveQueryReceived += (sender, e) => {
                Console.WriteLine(e.Scope);
                Assert.AreEqual(e.Scope, "leave");
                f = true;
            };

            var q  = AVObject.GetQuery("Account");
            var go = await q.GetAsync("5df0b08f5620710073a95ccd");

            go["name"] = "aaa";
            await go.SaveAsync();

            Console.WriteLine(go.ObjectId);

            while (!f)
            {
                await Task.Delay(100);

                f = true;
            }

            go["name"] = "sss";
            await go.SaveAsync();

            Console.WriteLine("Test leave done!");
        }
Пример #15
0
        public async Task Delete()
        {
            var f  = false;
            var go = new AVObject("Todo");
            await go.SaveAsync();

            var objectId  = go.ObjectId;
            var query     = new AVQuery <AVObject>("Todo").WhereEqualTo("objectId", objectId);
            var liveQuery = await query.SubscribeAsync();

            liveQuery.OnLiveQueryReceived += (sender, e) => {
                Console.WriteLine(e.Scope);
                Assert.AreEqual(e.Scope, "delete");
                f = true;
            };

            await go.DeleteAsync();

            Console.WriteLine("object delete done");

            while (!f)
            {
                await Task.Delay(100);

                f = true;
            }
            Console.WriteLine("Test delete done!");
        }
Пример #16
0
        public async Task Update()
        {
            var f     = false;
            var query = new AVQuery <AVObject>("Account");

            query = query.WhereLessThan("createdAt", DateTime.Now);
            var liveQuery = await query.SubscribeAsync();

            liveQuery.OnLiveQueryReceived += (sender, e) => {
                Console.WriteLine(e.Scope);
                Assert.AreEqual(e.Scope, "update");
                f = true;
            };

            var go = await query.FirstAsync();

            go["name"] = "bbb";
            await go.SaveAsync();

            Console.WriteLine(go.ObjectId);

            while (!f)
            {
                await Task.Delay(100);

                f = true;
            }

            go["name"] = "ccc";
            await go.SaveAsync();

            Console.WriteLine("Test update done!");
        }
Пример #17
0
        public async Task InitSessionGroups()
        {
            var teamVM            = ServiceLocator.Current.GetInstance <TeamViewModel>();
            var conversationQuery = new AVQuery <AVObject>("_Conversation")
                                    .WhereEqualTo("team", teamVM.SelectdTeam).Limit(200);

            var conversations = (await conversationQuery.FindAsync())
                                .Select(x => AVIMConversation.CreateWithData(x, client));

            foreach (var conversation in conversations)
            {
                var session = new ConversationSessionViewModel(conversation);
                if (conversation.ContainsKey("category"))
                {
                    var category = conversation.Get <int>("category");
                    if (conversation.MemberIds.Contains(client.ClientId))
                    {
                        var group = this.SessionGroups.First(g => g.Category == category);
                        if (group != null)
                        {
                            group.Sessions.Add(session);
                        }
                    }
                    else
                    {
                        var group = this.SessionGroups.First(g => g.Category == -1);
                        if (group != null)
                        {
                            group.Sessions.Add(session);
                        }
                    }
                }
            }
        }
Пример #18
0
    //
    //显示排行榜界面
    //
    void ShowRankPanel()
    {
        AVQuery <AVObject> query = new AVQuery <AVObject>("GameScore").OrderByDescending("score").Limit(10);

        query.FindAsync().ContinueWith(t =>
        {
            var results = t.Result;
            var scores  = new List <string>();

            foreach (var result in results)
            {
                var score = result["playerName"] + " : " + result["score"];
                scores.Add(score);
            }

            MainThreadDispatcher.Send(_ =>
            {
                foreach (var score in scores)
                {
                    var item = Instantiate(RankItem);
                    item.GetComponent <Text>().text = score;
                    item.transform.SetParent(RankItem.transform.parent);
                }
                RankPanel.SetActive(true);
            }, null);
        });
    }
        /// <summary>
        /// AVQuery 订阅 AVLiveQuery 的扩展方法
        /// </summary>
        /// <returns>AVLiveQuery 对象</returns>
        /// <param name="query">Query.</param>
        /// <param name="cancellationToken">Cancellation token.</param>
        /// <typeparam name="T">The 1st type parameter.</typeparam>
        public static async Task <AVLiveQuery <T> > SubscribeAsync <T>(this AVQuery <T> query, CancellationToken cancellationToken = default(CancellationToken)) where T : AVObject
        {
            var liveQuery = new AVLiveQuery <T>(query);

            liveQuery = await liveQuery.SubscribeAsync();

            return(liveQuery);
        }
Пример #20
0
        private void OnClickQueryBtn()
        {
            var query = new AVQuery <ACCOUNT>();

            query.FindAsync().ContinueWith(t =>
            {
                ACCOUNT first = t.Result.FirstOrDefault();
                PanelManager.MessageBox.Show(first.ToString());
            });
        }
Пример #21
0
        /// <summary>
        /// 查询一张表
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public static Task QueryData <T>() where T : AVObject
        {
            var query = new AVQuery <T>();

            return(query.FindAsync().ContinueWith(t =>
            {
                T first = t.Result.FirstOrDefault();
                PanelManager.MessageBox.Show(first.ToString());
            }));
        }
Пример #22
0
        private static void GetModelDataListFromCloudLC(bool publicOnly, bool includeUsername, Action <List <ModelData> > successAction, Action <string> failedAction)
        {
            var query = new AVQuery <AVObject>("ServerData");

            if (publicOnly)
            {
                query = query.WhereEqualTo("is_private", false);
            }

            query = query.OrderByDescending("updateAt");

            query.FindAsync().ContinueWith(t => {
                if (t.IsFaulted || t.IsCanceled)
                {
                    if (failedAction != null)
                    {
                        failedAction(t.Exception.Message);
                    }
                }
                else
                {
                    if (successAction != null)
                    {
                        IEnumerable <AVObject> avDatas = t.Result;
                        var results = new List <ModelData>();

                        foreach (var avData in avDatas)
                        {
                            var data = new ModelData();

                            data.objectId = avData.ObjectId;

                            data.name          = avData.Get <string>("name");
                            data.isPrivate     = avData.Get <bool>("is_private");
                            data.unitSize      = avData.Get <int>("unit_size");
                            data.cpuCoresCount = avData.Get <int>("cpu_count");
                            data.cpuHz         = avData.Get <int>("cpu_hz");
                            data.hddBaysCount  = avData.Get <int>("hdd_count");
                            data.memorySpeed   = avData.Get <int>("memory_speed");

                            data.memoryCapacity = PairData.FromListOfIntsToList(avData.Get <IList <int> >("memory_capacity"));

                            data.raid = avData.Get <string>("raid");

                            data.hdd = PairData.FromListOfIntsToList(avData.Get <IList <int> >("hdd"));
//							data.gpu = (List<string>) (avData.Get<IList<string>>("gpu"));

                            results.Add(data);
                        }

                        successAction(results);
                    }
                }
            });
        }
Пример #23
0
        public Task TestSubClassQuery()
        {
            AVObject.RegisterSubclass <Employee>();
            var query = new AVQuery <Employee>();

            return(query.FindAsync().ContinueWith(t =>
            {
                var first = t.Result.FirstOrDefault();
                Assert.True(first.GetType() == typeof(Employee));
            }));
        }
Пример #24
0
        public void TestGetQuery()
        {
            AVObject.RegisterSubclass <SubClass>();

            AVQuery <AVObject> query = AVObject.GetQuery("UnregisteredSubClass");

            Assert.AreEqual("UnregisteredSubClass", query.GetClassName());

            Assert.Throws <ArgumentException>(() => AVObject.GetQuery("SubClass"));

            AVPlugins.Instance.SubclassingController.UnregisterSubclass(typeof(SubClass));
        }
Пример #25
0
        public Task CQLQueryWithPlaceholderTest()
        {
            string cql = "select * from Todo where location=?";

            return(AVQuery <AVObject> .DoCloudQueryAsync(cql, "会议室").ContinueWith(t =>
            {
                Assert.False(t.IsFaulted);
                Assert.False(t.IsCanceled);
                Assert.True(t.Result.Count() > 0);
                return Task.FromResult(0);
            }));
        }
        public async Task <IEnumerable <AVUser> > LoadAllUsersInTeam(string teamId = null, Team team = null)
        {
            var wrappedTeam = wrapTeam(teamId, team);
            var query       = new AVQuery <AVObject>("Team_User")
                              .WhereEqualTo("team", wrappedTeam)
                              .Limit(limit)
                              .Include("user");

            var tu = await query.FindAsync();

            return(tu.Select(x => x.Get <AVUser>("user")));
        }
Пример #27
0
        private async void SaveScores()
        {
            try
            {
                var studentId = (await app.Assist.GetStudentInfo()).StudentId;

                var query = new AVQuery <AVObject>("CourseScore").WhereEqualTo("stuKey", studentId);

                var objs = await query.FindAsync();

                List <AVObject> saving = new List <AVObject>();

                foreach (var score in Scores)
                {
                    bool has      = false;
                    var  fullName = "[" + score.CourseId + "]" + score.CourseName;
                    foreach (var obj in objs)
                    {
                        if (Convert.ToString(obj["courseName"]) == fullName)
                        {
                            has = true;
                            break;
                        }
                    }

                    if (has)
                    {
                        continue;
                    }


                    if (Double.TryParse(score.Score1, out double dScore1) &&
                        Double.TryParse(score.Score2, out double dScore2))
                    {
                        var o = new AVObject("CourseScore")
                        {
                            ["stuKey"]     = studentId,
                            ["courseName"] = fullName,
                            ["term"]       = score.Semester,
                            ["score1"]     = dScore1,
                            ["score2"]     = dScore2,
                            ["score"]      = score.Score
                        };
                        saving.Add(o);
                    }
                }
                await AVObject.SaveAllAsync(saving);
            }
            catch
            {
            }
        }
        public async Task <IEnumerable <AVIMConversation> > LoadAllConversationsInTeamAsync(string teamId = null, Team team = null)
        {
            var wrappedTeam = wrapTeam(teamId, team);
            var query       = new AVQuery <AVObject>("_Conversation")
                              .WhereEqualTo("team", wrappedTeam).Limit(300);

            var result = await query.FindAsync();

            return(result.Select(x =>
            {
                return AVIMConversation.CreateWithData(x, client);
            }));
        }
Пример #29
0
 private async void Button_Click_1(object sender, RoutedEventArgs e)
 {
     AVQuery <AVObject> findGirlType = new AVQuery <AVObject>("GirlType").WhereEqualTo("typeName", "Hot");
     await findGirlType.FindAsync().ContinueWith(t =>
     {
         var hot             = t.Result.First();//可能有多个标记为Hot的GirType,但是“弱水三千只取一瓢”。
         var myself          = new AVObject("Boy");
         myself["name"]      = "AVOS Cloud User 2";
         myself["age"]       = 18;
         myself["focusType"] = hot;//关联被查询出来的对象。
         return(myself.SaveAsync());
     });
 }
Пример #30
0
        /// <summary>
        /// 根据ID查询,此方法不适合即时查询(适用于静态数据)
        /// </summary>
        /// <param name="table"></param>
        /// <param name="id"></param>
        /// <returns></returns>
        public static void QuerySingleDataByID(DataTable table, string id)
        {
            AVQuery <AVObject> query      = new AVQuery <AVObject>(table.ToString());
            AVObject           dataObject = null;

            query.GetAsync(id).ContinueWith(t =>
            {
                dataObject = t.Result;//如果成功获取,t.Result将是一个合法有效的AVObject
                //acc.UserName = dataObject.Get<string>(Account.UserName.ToString());
                //acc.Password = dataObject.Get<string>(Account.Password.ToString());
                //acc.PhoneNumber = dataObject.Get<string>(Account.PhoneNumber.ToString());
            });
        }
Пример #31
0
        public Task <IEnumerable <IObjectState> > FindAsync <T>(AVQuery <T> query,
                                                                AVUser user,
                                                                CancellationToken cancellationToken) where T : AVObject
        {
            string sessionToken = user != null ? user.SessionToken : null;

            return(FindAsync(query.ClassName, query.BuildParameters(), sessionToken, cancellationToken).OnSuccess(t => {
                var items = t.Result["results"] as IList <object>;

                return (from item in items
                        select AVObjectCoder.Instance.Decode(item as IDictionary <string, object>, AVDecoder.Instance));
            }));
        }
 private async void Button_Click_1(object sender, RoutedEventArgs e)
 {
     AVQuery<AVObject> findGirlType = new AVQuery<AVObject>("GirlType").WhereEqualTo("typeName", "Hot");
     await findGirlType.FindAsync().ContinueWith(t => 
     {
         var hot = t.Result.First();//可能有多个标记为Hot的GirType,但是“弱水三千只取一瓢”。
         var myself = new AVObject("Boy");
         myself["name"] = "AVOS Cloud User 2";
         myself["age"] = 18;
         myself["focusType"] = hot;//关联被查询出来的对象。
         return myself.SaveAsync();
     });
 }
Пример #33
0
    // Use this for initialization
    void Start()
    {
        renderer.enabled = true;

        AVQuery<AVObject> query = new AVQuery<AVObject>("GameScore");//建立对GameScore的查询。
        query.Limit(1).OrderByDescending("score").FindAsync().ContinueWith(t =>//获取排名最高的玩家,这算法未必是最佳选择,但是这里只提供一种最简单的算法。
        {
            var results = t.Result.FirstOrDefault();
            var name = results["playerName"].ToString();
            var score = (int)results["score"];

            PlayerPrefs.SetInt("highscore", score);//将最高分记录到系统,下次再打开游戏的时候,会刷新这个最高分。
        });
    }
 public void RefreshUI()
 {
     AVQuery<AVUser> batchQuery = new AVQuery<AVUser>().WhereContainedIn("objectId", AVConversation.MemberIds);
     batchQuery.FindAsync().ContinueWith(t =>
     {
         var result = t.Result;
         foreach (var u in result)
         {
             if (App.ViewModel.CurrentClient.ClientId != u.ObjectId)
             {
                 ContactsInCoversation.Add(new DemoContact(u));
             }
         }
         NotifyPropertyChangedOnUI("ConversationPageTitle");
     });
     NotifyPropertyChangedOnUI("ContactsInCoversation");
 }
Пример #35
0
	public void Fight()
	{
		var query = new AVQuery<AVObject>("Building").WhereEqualTo("UserID", CurMatchUser.ObjectId);
		query.FindAsync().ContinueWith(t=>{
			List<BuildingData> buildingDataList = new List<BuildingData>();
			foreach(AVObject buildingObject in (t as Task<IEnumerable<AVObject>>).Result)
			{
				BuildingData buildingData = new BuildingData();
				buildingData.UserID = buildingObject.Get<string>("UserID");
				buildingData.Type = (EBuildingType)buildingObject.Get<int>("Type");
				buildingData.Level = buildingObject.Get<int>("Level");
				buildingData.Value = buildingObject.Get<int>("Value");
				buildingData.SlotID = buildingObject.Get<int>("SlotID");
				buildingDataList.Add(buildingData);
			}
			
			GameManager.Instance.LastMatchBuildingDataList = buildingDataList;
            GameManager.Instance.EventQueue.Queue.Enqueue(new EventItem(){Type = EEventItemType.EnemyBuildingLoaded});
        });
    }
Пример #36
0
	public void Search()
	{
		var query = new AVQuery<AVObject>("Village").WhereNotEqualTo("UserID", AVUser.CurrentUser.ObjectId);
		query.FindAsync().ContinueWith(t=>{
			List<AVObject> objList = new List<AVObject>();
			objList.AddRange((t as Task<IEnumerable<AVObject>>).Result);
			if(objList.Count > 0)
			{
				var rand = new System.Random();
				int r = rand.Next(objList.Count);
				AVObject villageObject = objList[r];
				AVUser.Query.GetAsync(villageObject.Get<string>("UserID")).ContinueWith(t2=>{
					AVUser user = (t2 as Task<AVUser>).Result;
					GameManager.Instance.LastMatchUser = user;
					GameManager.Instance.LastMathVillage = villageObject;
					GameManager.Instance.EventQueue.Queue.Enqueue(new EventItem(){Type = EEventItemType.MatchFound});
				});
			}
		});
	}
Пример #37
0
	private void Query () {
		var model = new AVObject ("Model1");
		model ["name"] = "TestModel";
		model ["cpucount"] = 3;
		model.SaveAsync().ContinueWith(t=>{
			if (!t.IsFaulted) {
				Debug.Log("Success!");
			}
			else {
				Debug.Log("Error!");
			}

			var query = new AVQuery<AVObject>("Model1");
			return query.GetAsync("551d1952e4b062519520cf96");
		}).Unwrap().ContinueWith(t => {
			var modelGot = t.Result;
			Debug.Log(modelGot.Get<string>("name"));
			Debug.Log(modelGot.Get<int>("cpucount"));
		});
	}
        public async void LoadContactAsync()
        {
            #region 获取所有系统中的用户,注:理论上这里是获取该用户的好友列表,以下代码仅仅是为了演示聊天的基础功能,所以默认是获取所有用户的列表。
            AVQuery<AVUser> query = new AVQuery<AVUser>();
            var users = await query.FindAsync();

            if (users != null)
            {
                foreach (var u in users)
                {
                    if (u.ObjectId != AVUser.CurrentUser.ObjectId)//当前用户不显示在联系人列表里面。
                        AllContacts.Add(new DemoContact(u));
                }
                ContactsListVM = AlphaKeyGroup<DemoContact>.CreateGroups(AllContacts, Thread.CurrentThread.CurrentUICulture,
                    (DemoContact s) =>
                    {
                        return s.Nickname;
                    }, true);
                NotifyPropertyChanged("ContactsListVM");
            }
            #endregion
        }
Пример #39
0
        public Task TestSendPush()
        {
            MutableAVState state = new MutableAVState {
            Query = AVInstallation.Query
              };

              AVPush thePush = new AVPush();
              AVPushPlugins.Instance = new AVPushPlugins {
            PushController = GetMockedPushController(state)
              };

              thePush.Alert = "Alert";
              state.Alert = "Alert";

              return thePush.SendAsync().ContinueWith(t => {
            Assert.True(t.IsCompleted);
            Assert.False(t.IsFaulted);

            thePush.Channels = new List<string> { { "channel" } };
            state.Channels = new List<string> { { "channel" } };

            return thePush.SendAsync();
              }).Unwrap().ContinueWith(t => {
            Assert.True(t.IsCompleted);
            Assert.False(t.IsFaulted);

            AVQuery<AVInstallation> query = new AVQuery<AVInstallation>("aClass");
            thePush.Query = query;
            state.Query = query;

            return thePush.SendAsync();
              }).Unwrap().ContinueWith(t => {
            Assert.True(t.IsCompleted);
            Assert.False(t.IsFaulted);
              });
        }
Пример #40
0
 public AVPush()
 {
     this.mutex = new object();
     this.query = AVInstallation.Query;
 }
Пример #41
0
 public static Task SendDataAsync(IDictionary<string, object> data, AVQuery<AVInstallation> query)
 {
     return new AVPush()
     {
         Query = query,
         Data = data
     }.SendAsync();
 }
Пример #42
0
	// 获取特定玩家信息
	public void NetGetOtherByID(string objectID, Action callback)
	{
		GameManager.Instance.AsyncBeginWait();
		var query = new AVQuery<AVObject>("Village").WhereEqualTo("UserID", objectID);
		query.FindAsync().ContinueWith(t=>{
			List<AVObject> objList = new List<AVObject>();
			objList.AddRange((t as Task<IEnumerable<AVObject>>).Result);
			if(objList.Count > 0)
			{
				AVObject villageObject = objList[0];
				VillageData villageData = new VillageData();
				villageData.AVObject = villageObject;

				AVQuery<AVObject> buildingQuery = new AVQuery<AVObject>("Building").WhereEqualTo("UserID", villageData.UserID);
				buildingQuery.FindAsync().ContinueWith(t2=>{
					List<BuildingData> buildingDataList = new List<BuildingData>();
					foreach(AVObject buildingObject in (t2 as Task<IEnumerable<AVObject>>).Result)
					{
						BuildingData buildingData = new BuildingData();
						buildingData.AVObject = buildingObject;
						buildingDataList.Add(buildingData);
					}

					GameManager.Instance.AsyncEndWait(()=>{
						OtherVillageData = villageData;
						OtherVillageData.BuildingDataList = buildingDataList;
						
						if(callback != null)
							callback();
					});
				});
			}
		});
	}
Пример #43
0
	private void QueryList () {
		var data = new AVObject("List");
		data["name"] = "hello";
		data["Parameters"] = new List<int>(new int[] {3, 2, 1});

		data.SaveAsync().ContinueWith(t => {
			if (t.IsFaulted || t.IsCanceled) {
				Debug.Log("Failed");
				Debug.Log(t.Exception.Message);
			}
			else {
				Debug.Log("Success");
			}
		}).ContinueWith(t => {
			var query = new AVQuery<AVObject>("List").FindAsync().ContinueWith(t2 => {
				foreach (var result in t2.Result) {
//					var hello = result.Get<string>("name");
//					Debug.Log(hello);
					var list = result.Get<IList<int>>("Parameters");
					Debug.Log(list.ToString());
				}

			});
		});
	}
Пример #44
0
	// 网络-获取随机玩家
	public void NetGetRandomOther(Action callback)
	{
		GameManager.Instance.AsyncBeginWait();
		var query = new AVQuery<AVObject>("Village").WhereNotEqualTo("UserID", AVUser.CurrentUser.ObjectId);
		Debug.Log("开始查找敌人村落");
		query.FindAsync().ContinueWith(t=>{
			List<AVObject> objList = new List<AVObject>();
			objList.AddRange((t as Task<IEnumerable<AVObject>>).Result);
			if(objList.Count > 0)
			{
				var rand = new System.Random();
				int r = rand.Next(objList.Count);
				AVObject villageObject = objList[r];
				VillageData villageData = new VillageData();
				villageData.AVObject = villageObject;

				Debug.Log("开始查找敌人建筑");
				AVQuery<AVObject> buildingQuery = new AVQuery<AVObject>("Building").WhereEqualTo("UserID", villageData.UserID);
				buildingQuery.FindAsync().ContinueWith(t2=>{
					List<BuildingData> buildingDataList = new List<BuildingData>();
					foreach(AVObject buildingObject in (t2 as Task<IEnumerable<AVObject>>).Result)
					{
						BuildingData buildingData = new BuildingData();
						buildingData.AVObject = buildingObject;
						buildingDataList.Add(buildingData);
					}
					
					Debug.Log("找到敌人建筑");
					GameManager.Instance.AsyncEndWait(()=>{
						OtherVillageData = villageData;
						OtherVillageData.BuildingDataList = buildingDataList;

						if(callback != null)
							callback();
					});
				});
			}
		});
	}
Пример #45
0
	// 网络-获取玩家村落信息
	public void NetQueryPlayerVillageData(Action callback = null)
	{
		GameManager.Instance.AsyncBeginWait();
		AVQuery<AVObject> query=new AVQuery<AVObject>("Village").WhereEqualTo("UserID", AVUser.CurrentUser.ObjectId);
		query.FirstAsync().ContinueWith(t =>{
			AVObject villageObject = (t as Task<AVObject>).Result;
			VillageData villageData = new VillageData();
			villageData.AVObject = villageObject;
			
			AVQuery<AVObject> buildingQuery = new AVQuery<AVObject>("Building").WhereEqualTo("UserID", AVUser.CurrentUser.ObjectId);
			buildingQuery.FindAsync().ContinueWith(t2=>{
				List<BuildingData> buildingDataList = new List<BuildingData>();
				foreach(AVObject buildingObject in (t2 as Task<IEnumerable<AVObject>>).Result)
				{
					BuildingData buildingData = new BuildingData();
					buildingData.AVObject = buildingObject;
					buildingDataList.Add(buildingData);
				}
				
				GameManager.Instance.AsyncEndWait(()=>{
					PlayerManager.Instance.PlayerVillageData = villageData;
					PlayerManager.Instance.PlayerVillageData.BuildingDataList = new List<BuildingData>();
					PlayerManager.Instance.PlayerVillageData.BuildingDataList = buildingDataList;

					if(callback != null)
						callback();
				});
			});
		});
	}
Пример #46
0
 public static Task SendAlertAsync(string alert, AVQuery<AVInstallation> query)
 {
     return new AVPush()
     {
         Query = query,
         Alert = alert
     }.SendAsync();
 }
Пример #47
0
 /// <summary>
 /// Pushes an arbitrary payload to every device matching target. This is shorthand for:
 ///
 /// <code>
 /// var push = new AVPush();
 /// push.Query = query
 /// push.Data = data;
 /// return push.SendAsync();
 /// </code>
 /// </summary>
 /// <param name="data">A push payload. See the AVPush.Data property for more information.</param>
 /// <param name="query">A query filtering the devices which should receive this Push Notification.</param>
 public static Task SendDataAsync(IDictionary<string, object> data, AVQuery<AVInstallation> query)
 {
     var push = new AVPush();
       push.Query = query;
       push.Data = data;
       return push.SendAsync();
 }
Пример #48
0
 /// <summary>
 /// Pushes a simple message to every device matching the target query. This is shorthand for:
 ///
 /// <code>
 /// var push = new AVPush();
 /// push.Query = query;
 /// push.Data = new Dictionary&lt;string, object&gt;{{"alert", alert}};
 /// return push.SendAsync();
 /// </code>
 /// </summary>
 /// <param name="alert">The alert message to send.</param>
 /// <param name="query">A query filtering the devices which should receive this Push Notification.</param>
 public static Task SendAlertAsync(string alert, AVQuery<AVInstallation> query)
 {
     var push = new AVPush();
       push.Query = query;
       push.Alert = alert;
       return push.SendAsync();
 }