コード例 #1
0
        public async Task GeneratorDerivedGrain2ControlFlow()
        {
            var grainName = typeof(GeneratorTestDerivedGrain2).FullName;
            IGeneratorTestDerivedGrain2 grain = GrainClient.GrainFactory.GetGrain <IGeneratorTestDerivedGrain2>(GetRandomGrainId(), grainName);

            bool boolPromise = await grain.StringIsNullOrEmpty();

            Assert.True(boolPromise);

            await grain.StringSet("Begin");

            boolPromise = await grain.StringIsNullOrEmpty();

            Assert.False(boolPromise);

            MemberVariables members = await grain.GetMemberVariables();

            Assert.Equal("Begin", members.stringVar);

            ASCIIEncoding encoding = new ASCIIEncoding();

            byte[]          bytes           = encoding.GetBytes("ByteBegin");
            string          str             = "StringBegin";
            MemberVariables memberVariables = new MemberVariables(bytes, str, ReturnCode.Fail);

            await grain.SetMemberVariables(memberVariables);

            members = await grain.GetMemberVariables();

            ASCIIEncoding enc = new ASCIIEncoding();

            Assert.Equal("ByteBegin", enc.GetString(members.byteArray));
            Assert.Equal("StringBegin", members.stringVar);
            Assert.Equal(ReturnCode.Fail, members.code);

            string strPromise = await grain.StringConcat("Begin", "Cont", "End");

            Assert.Equal("BeginContEnd", strPromise);
        }
コード例 #2
0
 public void FailOperationAfterSideCast()
 {
     // GeneratorTestDerivedGrain1Reference extends GeneratorTestGrainReference
     // GeneratorTestDerivedGrain2Reference extends GeneratorTestGrainReference
     try
     {
         IGeneratorTestDerivedGrain1 grain = GrainClient.GrainFactory.GetGrain <IGeneratorTestDerivedGrain1>(GetRandomGrainId());
         // Cast works optimistically when the grain reference is not already resolved
         IGeneratorTestDerivedGrain2 cast = grain.AsReference <IGeneratorTestDerivedGrain2>();
         // Operation fails when grain reference is completely resolved
         Task <string> av  = cast.StringConcat("a", "b", "c");
         string        val = av.Result;
     }
     catch (AggregateException ae)
     {
         Exception ex = ae.InnerException;
         while (ex is AggregateException)
         {
             ex = ex.InnerException;
         }
         throw ex;
     }
     Assert.Fail("Exception should have been raised");
 }