示例#1
0
        IEnumerator TestTableRefAsync()
        {
            Terminal.LogImportant("TestTableRefAsync");

            if (Context != null)
            {
                if (Context.IsConnected)
                {
                    Context.Disconnect();
                }
                yield return(1);
            }

            // Construct
            Context = new StorageController(AuthKey);

            // Wait for Connect
            yield return(StartCoroutine(Context.WaitForConnect()));

            // get score table
            var tableTask = Context.Table <Score>();

            yield return(StartCoroutine(tableTask.WaitRoutine()));

            tableTask.ThrowIfFaulted();
            var table = tableTask.Result;

            //Wire listeners
            int callbacks = 0;

            table.On(StorageEventType.DELETE, response =>
            {
                Terminal.Log("DELETE " + response.Val <Score>().UserName);
                callbacks++;
            });

            table.On(StorageEventType.PUT, response =>
            {
                Terminal.Log("PUT " + response.Val <Score>().UserName);
                callbacks++;
            });

            table.On(StorageEventType.UPDATE, response =>
            {
                Terminal.Log("UPDATE " + response.Val <Score>().UserName);
                callbacks++;
            });


            //test
            var score = new Score
            {
                Points   = Strings.RandomNumber(100, 10000),
                Points2  = Strings.RandomNumber(100, 10000),
                UserName = Strings.RandomString(10),
            };

            var tresult1 = Context.Repository.Create(score);

            yield return(StartCoroutine(tresult1.WaitRoutine()));

            tresult1.ThrowIfFaulted();

            var tresult2 = Context.Repository.Update(score);

            yield return(StartCoroutine(tresult2.WaitRoutine()));

            tresult2.ThrowIfFaulted();

            var tresult3 = Context.Repository.Delete(score);

            yield return(StartCoroutine(tresult3.WaitRoutine()));

            tresult3.ThrowIfFaulted();

            Terminal.Log("Updates posted. Waiting for response");
            for (int i = 0; i < 10; i++)
            {
                if (callbacks >= 3)
                {
                    break;
                }

                yield return(new WaitForSeconds(2.5f));

                Terminal.Log(".");
            }

            if (callbacks < 3)
            {
                Debug.LogWarning("Failed to get all update messages. This sometimes happens, please try again.");
            }
            else
            {
                Terminal.LogSuccess("Test Success");
            }
        }