コード例 #1
0
        public async Task <Result> Call_1(SendObj s, int i1, bool b1, Func <int, Task> cb, CancellationToken token)
        {
            //throw new Exception();
            //for (var i = 0; i < 5; i++)
            //{
            //    cb.Invoke(i);
            //    await Task.Delay(100);
            //}


            Console.WriteLine($"Receive: {s}");

            Func <int, Task> newCb = async i =>
            {
                Console.WriteLine("tid:" + GlobalTracer.Instance.ActiveSpan.Context.TraceId);
                await cb(i);
            };

            try
            {
                await _proxy.Proxy.Call_1_1(201, newCb, token);
            }
            catch (FaultException e)
            {
                var aa = e.Detail.StackTrace;
                Console.WriteLine(e);
                throw;
            }

            return(new Result());
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: SpringBreeze555/NetRpc
        public async Task <Result> Call(string s)
        {
            GlobalTracer.Instance.ActiveSpan.SetTag(new StringTag("file"), "123.txt");
            _logger.LogInformation($"Receive: {s}");
            var obj = new SendObj
            {
                InnerObj = new InnerObj
                {
                    IP1 = "ip1"
                },
                D1      = DateTime.Now,
                P1      = "p1",
                I1      = 100,
                B1      = true,
                BigList = new List <InnerObj>
                {
                    new InnerObj {
                        IP1 = "1"
                    },
                    new InnerObj {
                        IP1 = "2"
                    }
                }
            };

            using (var scope = TracerScope.BuildChild("test"))
            {
                scope.Span.SetTag("p1", "123");
                await Task.Delay(500);
            }

            try
            {
                throw new Exception("123");
            }
            catch (Exception e)
            {
                _logger.LogError(e, "error msg");
            }

            //Task.Run(async () =>
            //{
            //    var proxy2 = _factory2.CreateProxy<IService_1>("grpc1");
            //    while (true)
            //    {
            //        await Task.Delay(1000);
            //        await proxy2.Proxy.Call_1(obj, 101, true,
            //            async i => { _logger.LogInformation($"tid:{GlobalTracer.Instance?.ActiveSpan.Context.TraceId}, callback:{i}"); }, default);
            //    }
            //});

            await _factory.CreateProxy <IService_1>("grpc1").Proxy.Call_1(obj, 101, true,
                                                                          async i => { _logger.LogInformation($"tid:{GlobalTracer.Instance?.ActiveSpan.Context.TraceId}, callback:{i}"); }, default);

            //await _factory.CreateProxy<IService_2>("grpc2").Proxy.Call_2(false);

            return(new Result());
        }
コード例 #3
0
        /// <summary>
        /// Моя версия Contains для листа. Стандартный работает не так, как мне надо (сам в шоке)
        /// </summary>
        /// <param name="L"></param>
        /// <param name="O"></param>
        /// <returns></returns>
        public static bool MyContains(ref List <SendObj> L, SendObj O)
        {
            bool res = false;

            foreach (var i in L)
            {
                if (i.name == O.name && i.uid == O.uid && i.SendTime.Date == O.SendTime.Date && i.SendTime.Hour == O.SendTime.Hour && i.SendTime.Minute == O.SendTime.Minute)
                {
                    return(true);
                }
            }
            return(res);
        }
コード例 #4
0
        /*        /// <summary>
         *      /// Устаревший кусок кода. Делал лист для рассылки
         *      /// </summary>
         *      /// <returns></returns>
         *      public static List<SendObj> CreateNotSendedArr()
         *      {
         *          //Dictionary<long, string> res = new Dictionary<long, string>();
         *          List<SendObj> res = new List<SendObj>();
         *          foreach (var i in Program.students.list)
         *          {
         *              foreach (var k in i.Shedule.Keys)
         *              {
         *                  foreach (var j in i.Shedule[k])
         *                  {
         *                      if (ContData(j) && !MyDateLessNow(j))
         *                          res.Add(new SendObj(j, i.student_id, k));
         *                  }
         *              }
         *          }
         *          return res;
         *      }*/


        /// <summary>
        /// Актуальный код. Дополняет лист рассылки. По умолчанию вызывается раз в 2 минуты
        /// </summary>
        /// <param name="L"></param>
        public static void AddNotSended(ref List <SendObj> L)
        {
            foreach (var i in Program.students.list)
            {
                foreach (var k in i.Shedule.Keys)
                {
                    foreach (var j in i.Shedule[k])
                    {
                        SendObj ths = new SendObj(j, i.student_id, k);
                        //if (ContData(j) && !Sended.Contains(ths))
                        if (ContData(j) && !MyContains(ref Sended, ths))
                        {
                            L.Add(ths);
                        }
                    }
                }
            }
        }