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); } }
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); * }*/ }
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)); }
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(); }
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); } }); }
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); * }*/ }