Example #1
0
        public override async Task TblaFill(QryProxy request, IServerStreamWriter <TblaProxy> responseStream, ServerCallContext context)
        {
            var hr = new TblaProxy
            {
                RowPk   = 1,
                FldStr  = "Bir",
                FldDbl  = 1.23,
                FldDcm  = 2.34,
                FldDate = DateTime.Now.Ticks,
                FldInt  = 1
            };

            /*
             * for (int i = 0; i < 1; i++)
             * {
             *  await Scheduling.RunTask(() =>
             *  {
             *      foreach (var r in Db.SQL<M2DB.TblA>("select r from TblA r"))
             *      {
             *          //hr.Message = r.Field1;
             *          Task.Run(async () =>
             *          {
             *              await responseStream.WriteAsync(hr);
             *          }).Wait();
             *      }
             *  });
             * }
             */
            for (int i = 0; i < 100000; i++)
            {
                hr.RowPk = (ulong)i;
                await responseStream.WriteAsync(hr);
            }
        }
Example #2
0
        public async Task TblaFill3(QryProxy request, IServerStreamWriter <TblaProxy> responseStream, ServerCallContext context)
        {
            var proxy = new TblaProxy();

            proxy.RowPk = 1;
            List <TblaProxy> pl = new List <TblaProxy>();

            // Transfer 14K proxy/sec
            await Scheduling.RunTask(() =>
            {
                for (int i = 0; i < 1000; i++)
                {
                    foreach (var row in Db.SQL <M2DB.TblB>("select r from TblB r"))
                    {
                        //proxy = ReflectionExample.ToProxy<TblaProxy, M2DB.TblB>(row);
                        proxy.FldStr = row.FldStr;
                        proxy.FldInt = row.FldInt;
                        proxy.FldDbl = row.FldDbl;
                        proxy.FldDcm = Convert.ToDouble(row.FldDcm);
                        pl.Add(proxy);

                        //Task.Run(async () =>
                        //{
                        //    await responseStream.WriteAsync(proxy);
                        //}).Wait();
                    }
                }
            });

            foreach (var p in pl)
            {
                await responseStream.WriteAsync(p);
            }

            /*
             * // Transfer 9K proxy/sec
             * for (int i = 0; i < 1000; i++)
             * {
             *  await Scheduling.RunTask(() =>
             *  {
             *      foreach (var row in Db.SQL<M2DB.TblB>("select r from TblB r"))
             *      {
             *          proxy = ReflectionExample.ToProxy<TblaProxy, M2DB.TblB>(row);
             *
             *          Task.Run(async () =>
             *          {
             *              await responseStream.WriteAsync(proxy);
             *          }).Wait();
             *      }
             *  });
             * }
             */
            /*
             * // Transfer 20K proxy/sec
             * for (int i = 0; i < 100000; i++)
             * {
             *  await responseStream.WriteAsync(proxy);
             * }*/
        }
Example #3
0
        public override Task <TblaProxy> TblaUpdate(TblaProxy request, ServerCallContext context)
        {
            var result = new TblaProxy
            {
                RowPk   = request.RowPk,
                FldStr  = request.FldStr,
                FldDbl  = request.FldDbl,
                FldDcm  = request.FldDcm,
                FldDate = request.FldDate,
                FldInt  = request.FldInt
            };

            TblaProxy proxy = null;

            Scheduling.RunTask(() =>
            {
                // RowState: Added, Modified, Deletede, Unchanged
                Db.TransactAsync(() =>
                {
                    if (request.RowState == "A" || request.RowState == "M")
                    {
                        M2DB.TblB row = ReflectionExample.FromProxy <TblaProxy, M2DB.TblB>(request);
                        proxy         = ReflectionExample.ToProxy <TblaProxy, M2DB.TblB>(row);
                    }
                    else if (request.RowState == "D")
                    {
                        result.RowPk = request.RowPk;
                        var rec      = Db.FromId(request.RowPk) as M2DB.TblA;
                        if (rec == null)
                        {
                            result.RowErr = "TblA Rec not found";
                        }
                        else
                        {
                            rec.Delete();
                        }
                    }
                });
            }).Wait();

            return(Task.FromResult(proxy));
        }
Example #4
0
        void TestTblaUpdate()
        {
            var    dt = dataSet1.Tables[0];
            string rs = "";

            Channel channel = new Channel($"127.0.0.1:50051", ChannelCredentials.Insecure);
            //Channel channel = new Channel($"217.160.13.102:50051", ChannelCredentials.Insecure);
            var client = new CRUDs.CRUDsClient(channel);

            var request = new TblaProxy();

            // Unchanged disindakileri gonder, deleted disindakileri reply ile guncelle, hata yoksa her rec icin AcceptChanges

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                // States: Added, Modified, Deletede, Unchanged
                rs = dt.Rows[i].RowState.ToString().Substring(0, 1);
                if (rs == "A" || rs == "M")
                {
                    request.RowState = rs;

                    ProxyHelper.RowToProxy(dt, dt.Rows[i], request);

                    var reply = client.TblaUpdate(request);

                    ProxyHelper.ProxyToRow(dt, dt.Rows[i], reply);
                    //dt.Rows[i]["Key"] = reply.Key;

                    if (string.IsNullOrEmpty(reply.RowErr))
                    {
                        dt.Rows[i].AcceptChanges();
                    }
                    else
                    {
                        dt.Rows[i].RowError = reply.RowErr;
                    }
                }
            }
            channel.ShutdownAsync().Wait();
        }
Example #5
0
        public async Task TblaFill2(QryProxy request, IServerStreamWriter <TblaProxy> responseStream, ServerCallContext context)
        {
            var proxy = new TblaProxy();

            proxy.RowPk = 1;

            await Scheduling.RunTask(() =>
            {
                for (int i = 0; i < 1000; i++)
                {
                    Task.Run(async() =>
                    {
                        foreach (var row in Db.SQL <M2DB.TblB>("select r from TblB r"))
                        {
                            proxy = ReflectionExample.ToProxy <TblaProxy, M2DB.TblB>(row);

                            await responseStream.WriteAsync(proxy);
                        }
                    }).Wait();

                    //await responseStream.WriteAsync(proxy);
                }
            });
        }
Example #6
0
        public override async Task TblaFill(QryProxy request, IServerStreamWriter <TblaProxy> responseStream, ServerCallContext context)
        {
            int kxx   = 1;
            var proxy = new TblaProxy();

            proxy.RowPk = 1;
            List <TblaProxy> pl = new List <TblaProxy>();

            Type proxyType = typeof(TblaProxy);
            Type senert    = typeof(M2DB.TblB);

            PropertyInfo[] proxyProperties = proxyType.GetProperties().Where(x => x.CanRead && x.CanWrite).ToArray();
            PropertyInfo[] sener           = senert.GetProperties().Where(x => x.CanRead && x.CanWrite).ToArray();

            /*
             * Dictionary<int, int> dic = new Dictionary<int, int>();
             * for (int j = 0; j < proxyProperties.Length; j++)
             * {
             *  Console.WriteLine(kxx.ToString());
             *  for (int k = 0; k < sener.Length; k++)
             *  {
             *      Console.WriteLine($"{j},{k} : {proxyProperties[j].Name} {sener[k].Name}");
             *      if (proxyProperties[j].Name == sener[k].Name)
             *      {
             *          dic[j] = k;
             *          break;
             *      }
             *  }
             * }
             * Console.WriteLine(kxx.ToString());
             */
            await Scheduling.RunTask(() =>
            {
                for (int i = 0; i < 1000; i++)
                {
                    foreach (var row in Db.SQL <M2DB.TblB>("select r from TblB r"))
                    {
                        //proxy = ReflectionExample.ToProxy<TblaProxy, M2DB.TblB>(row);

                        proxy = new TblaProxy
                        {
                            RowPk   = row.GetObjectNo(),
                            FldStr  = row.FldStr,
                            FldInt  = row.FldInt,
                            FldDbl  = row.FldDbl,
                            FldDcm  = Convert.ToDouble(row.FldDcm),
                            FldDate = ((DateTime)row.FldDate).Ticks,
                        };

                        /*
                         * foreach(var d in dic)
                         * {
                         *  object value = sener[d.Value].GetValue(row);
                         *  value = ReflectionExample.ConvertToProxyValue(sener[d.Value].PropertyType, value);
                         *  proxyProperties[d.Key].SetValue(proxy, value);
                         * }
                         * /*
                         * foreach (PropertyInfo proxyProperty in proxyProperties)
                         * {
                         *  //PropertyInfo databaseProperty = databaseProperties.FirstOrDefault(x => x.Name == proxyProperty.Name);
                         *  // Which one is efficient? Both are same
                         *  var dbP = row.GetType().GetProperty(proxyProperty.Name); //?.GetValue(row);
                         *  var sss = sener[0].GetValue(row);
                         *  if (dbP != null)
                         *  {
                         *      object value = dbP.GetValue(row);
                         *
                         *      value = ReflectionExample.ConvertToProxyValue(dbP.PropertyType, value);
                         *      proxyProperty.SetValue(proxy, value);
                         *  }
                         * }
                         */


                        pl.Add(proxy);

                        //Task.Run(async () =>
                        //{
                        //    await responseStream.WriteAsync(proxy);
                        //}).Wait();
                    }
                }
            });

            foreach (var p in pl)
            {
                await responseStream.WriteAsync(p);
            }

            /*
             * // Transfer 9K proxy/sec
             * for (int i = 0; i < 1000; i++)
             * {
             *  await Scheduling.RunTask(() =>
             *  {
             *      foreach (var row in Db.SQL<M2DB.TblB>("select r from TblB r"))
             *      {
             *          proxy = ReflectionExample.ToProxy<TblaProxy, M2DB.TblB>(row);
             *
             *          Task.Run(async () =>
             *          {
             *              await responseStream.WriteAsync(proxy);
             *          }).Wait();
             *      }
             *  });
             * }
             */
            /*
             * // Transfer 20K proxy/sec
             * for (int i = 0; i < 100000; i++)
             * {
             *  await responseStream.WriteAsync(proxy);
             * }*/
        }