diff --git a/DBRequestManager.bas b/DBRequestManager.bas index e0e2b63..c14262f 100644 --- a/DBRequestManager.bas +++ b/DBRequestManager.bas @@ -16,7 +16,10 @@ Sub Class_Globals Private VERSION As Float = 0.9 Private tempArray(1) As Object Dim jobTagAnterior As String = "" 'Mod por CHV - 211109 - Dim reqsList As List + Dim reqsList, timesList As List + Dim inicioRequest As Long 'ignore + Dim inicioJobDone As Long 'ignore + Dim inicioRequestMap, inicioJobDoneMap As Map End Sub 'Target - The module that handles JobDone (usually Me). @@ -24,7 +27,6 @@ End Sub Public Sub Initialize (Target As Object, ConnectorLink As String) mTarget = Target link = ConnectorLink - reqsList.Initialize End Sub 'Sends a query request. @@ -34,8 +36,9 @@ End Sub Public Sub ExecuteQuery(Command As DBCommand, Limit As Int, Tag As Object) Dim j As HttpJob Dim ms As OutputStream - Dim out2 As OutputStream = StartJob(j,ms, Tag) - If reqsList.IsInitialized Then reqsList.Add(Tag) + Dim out2 As OutputStream = StartJob(j, ms, Tag) +' If reqsList.IsInitialized Then reqsList.Add(Tag) +' If timesList.IsInitialized Then timesList.Add(DateTime.now) WriteObject(Command.Name, out2) WriteInt(Limit, out2) @@ -50,7 +53,7 @@ End Sub Public Sub ExecuteBatch(ListOfCommands As List, Tag As Object) Dim j As HttpJob Dim ms As OutputStream - Dim out2 As OutputStream = StartJob(j,ms, Tag) + Dim out2 As OutputStream = StartJob(j, ms, Tag) WriteInt(ListOfCommands.Size, out2) For Each Command As DBCommand In ListOfCommands WriteObject(Command.Name, out2) @@ -62,11 +65,15 @@ End Sub 'Similar to ExecuteBatch. Sends a single command. Public Sub ExecuteCommand(Command As DBCommand, Tag As Object) - If reqsList.IsInitialized Then reqsList.Add(Tag) +' If reqsList.IsInitialized Then reqsList.Add(Tag) +' If timesList.IsInitialized Then timesList.Add(DateTime.now) ExecuteBatch(Array As DBCommand(Command), Tag) End Sub Private Sub StartJob(j As HttpJob, MemoryStream As OutputStream, Tag As Object) As OutputStream +' inicioRequest = DateTime.now + If reqsList.IsInitialized Then reqsList.Add(Tag) + If timesList.IsInitialized Then timesList.Add(DateTime.now) j.Initialize("DBRequest", mTarget) j.Tag = Tag MemoryStream.InitializeToBytesArray(0) @@ -190,7 +197,13 @@ End Sub 'Handles the Job result and returns a DBResult. Public Sub HandleJob(Job As HttpJob) As DBResult - Dim start As Long = DateTime.Now 'ignore + If jobTagAnterior <> Job.Tag Then +' inicioJobDone = DateTime.Now 'ignore + If inicioJobDoneMap.IsInitialized Then inicioJobDoneMap.Put(Job.Tag, DateTime.Now) +' tiempos.Put(Job.taskId, CreateMap("inicioJobDone":inicioJobDone)) +' Log(tiempos) +' Log("############# " & Job.taskId) + End If Dim In As InputStream = Job.GetInputStream Dim cs As CompressedStreams In = cs.WrapInputStream(In, "gzip") @@ -201,8 +214,6 @@ Public Sub HandleJob(Job As HttpJob) As DBResult table.Columns.Initialize table.rows.Initialize table.Tag = Job.Tag - If jobTagAnterior <> Job.Tag Then LogColor("HandleJob: '"&Job.Tag&"'", Colors.Blue) 'Mod por CHV - 211109 - jobTagAnterior = Job.Tag 'Mod por CHV - 211109 If method = "query" Then Dim numberOfColumns As Int = ReadInt(In) For i = 0 To numberOfColumns - 1 @@ -225,8 +236,13 @@ Public Sub HandleJob(Job As HttpJob) As DBResult End If In.Close ' Log("HandleJob: " & (DateTime.Now - start))'Comentado por CHV - 211112 + If jobTagAnterior <> table.Tag Then + LogColor("HandleJob: '"&table.Tag&"'" & " - Registros: " & table.Rows.Size, Colors.RGB(115, 0, 140)) 'Mod por CHV - 211109 + End If + jobTagAnterior = table.Tag 'Mod por CHV - 211109 Return table End Sub + 'Reads a file and returns the file as a bytes array. Public Sub FileToBytes(Dir As String, FileName As String) As Byte() Dim out As OutputStream @@ -236,6 +252,7 @@ Public Sub FileToBytes(Dir As String, FileName As String) As Byte() out.Close Return out.ToBytesArray End Sub + 'Converts an image to a bytes array (for BLOB fields). Public Sub ImageToBytes(Image As Bitmap) As Byte() Dim out As OutputStream @@ -244,6 +261,7 @@ Public Sub ImageToBytes(Image As Bitmap) As Byte() out.Close Return out.ToBytesArray End Sub + 'Converts a bytes array to an image (for BLOB fields). Public Sub BytesToImage(bytes() As Byte) As Bitmap Dim In As InputStream @@ -252,6 +270,7 @@ Public Sub BytesToImage(bytes() As Byte) As Bitmap bmp.Initialize2(In) Return bmp End Sub + 'Prints the table to the logs. Public Sub PrintTable(Table As DBResult) Log("Tag: " & Table.Tag & ", Columns: " & Table.Columns.Size & ", Rows: " & Table.Rows.Size) @@ -267,8 +286,58 @@ Public Sub PrintTable(Table As DBResult) For Each record As Object In row sb.Append(record).Append(TAB) Next - ToastMessageShow(sb.ToString, True) + Log(sb.ToString) Next End Sub - \ No newline at end of file +Sub requestTimes(tag As String) As Map 'ignore + Private times As Map + times.Initialize +' Log("###### " & tag) +' Log(reqsList.IsInitialized) + If reqsList.IsInitialized Then +' Log(reqsList) +' Private pos As Int = reqsList.IndexOf(tag) + If inicioRequestMap.ContainsKey(tag) Then + inicioRequest = inicioRequestMap.Get(tag) +' Log(">>>>>>> From inicioRequestMap") + End If + If inicioJobDoneMap.ContainsKey(tag) Then + inicioJobDone = inicioJobDoneMap.Get(tag) +' Log(">>>>>>> From inicioJobDoneMap") + End If + End If +' Log($"${inicioJobDone} - ${inicioRequest}"$) + Private requestTime As String = NumberFormat2(((inicioJobDone - inicioRequest) / 1000),1,5,0,False) + Private JobDoneTime As String = NumberFormat2(((DateTime.Now - inicioJobDone) / 1000),1,5,0,False) + times.Put("requestTime", requestTime) + times.Put("jobDoneTime", JobDoneTime) + times.Put("totalTime", NumberFormat2((JobDoneTime + requestTime),1,5,0,False)) + Return times +End Sub + +'Initializes request tracking +Sub trackInit 'ignore + Log(">>>>>>>>> TRACKINIT ") + reqsList.Initialize + timesList.Initialize + inicioRequestMap.Initialize + inicioJobDoneMap.Initialize +End Sub + +Sub trackNext(job As HttpJob) + If reqsList.IsInitialized Then 'Si tenemos lista de requests, la procesamos. + Private quitamos As String = "" + If reqsList.IndexOf(job.tag) <> -1 Then + Private pos As Int = reqsList.IndexOf(job.tag) + If pos <> -1 Then + inicioRequestMap.Put(job.Tag, timesList.Get(pos)) + reqsList.RemoveAt(pos) + timesList.RemoveAt(pos) + End If + quitamos = $"Quitamos ${job.tag} - "$ + End If + LogColor(">>>>>> Requests: " & reqsList.Size & " - " & quitamos & reqsList, Colors.Blue) + LogColor(">>>>>> inicioRequestMap:" & inicioRequestMap.Size & " - " & inicioRequestMap, Colors.Magenta) + End If +End Sub \ No newline at end of file diff --git a/durakelo.b4a.meta b/durakelo.b4a.meta index 33b6455..e1f4a39 100644 --- a/durakelo.b4a.meta +++ b/durakelo.b4a.meta @@ -61,7 +61,7 @@ ModuleClosedNodes17= ModuleClosedNodes18=6 ModuleClosedNodes19=4,5,6,7,8,9,10 ModuleClosedNodes2=2,6,7 -ModuleClosedNodes20= +ModuleClosedNodes20=3,5,6,7,8,9,10 ModuleClosedNodes21= ModuleClosedNodes22= ModuleClosedNodes23= @@ -73,6 +73,6 @@ ModuleClosedNodes6= ModuleClosedNodes7= ModuleClosedNodes8= ModuleClosedNodes9=2,5,6,8,10,11,12,13,24,36,37 -NavigationStack=MAPA_RUTAS,Activity_Create,106,0,Visual Designer,productos.bal,-100,1,seleccion,Resumen_Click,2483,2,seleccion,traeVenta,2771,3,seleccion,b_e_resumen_Click,2758,0,seleccion,SUBIR_P_Click,2750,0,seleccion,JobDone,1110,6,MAPA_RUTAS,MapFragment1_Ready,109,0,seleccion,cargar_Click,1101,0,colonia2,HACER_PEDIDO,360,0 +NavigationStack=DBRequestManager,HandleJob,197,0,DBRequestManager,WriteObject,119,0,DBRequestManager,requestTimes,294,0,seleccion,Globals,164,0,colonia2,Activity_Create,94,0,colonia2,Globals,78,0,Main,Activity_Create,88,0,Main,Activity_Pause,282,0,seleccion,JobDone,1975,0,seleccion,cargar_Click,924,0 SelectedBuild=0 -VisibleModules=21,20,24,14,5 +VisibleModules=21,20,24,14,5,6 diff --git a/seleccion.bas b/seleccion.bas index c51d4db..e06a26b 100644 --- a/seleccion.bas +++ b/seleccion.bas @@ -168,6 +168,7 @@ Sub Globals Dim ime As IME Private l_monto_kc As Label Private l_version As Label + Dim inicioContador As Double End Sub Sub Activity_Create(FirstTime As Boolean) @@ -932,7 +933,11 @@ Sub cargar_Click c.Position = 0 usuario = c.GetString("USUARIO") - reqManager.reqsList.Initialize 'inicializamos lista de requests. + DateTime.TimeFormat = "HHmmss" + inicioContador = DateTime.Now + reqManager.trackInit + +' reqManager.reqsList.Initialize 'inicializamos lista de requests. Dim cmd As DBCommand cmd.Initialize @@ -1978,6 +1983,12 @@ Sub JobDone(Job As HttpJob) End If Job.Release End If + + Log($"tiempo Request "${Job.Tag}": ${((reqManager.inicioJobDone - reqManager.inicioRequest)/1000)}"$) + Log($"tiempo JobDone "${Job.Tag}": ${((DateTime.Now - reqManager.inicioJobDone)/1000)}"$) + Log($"tiempo Total "${Job.Tag}": ${((DateTime.Now - inicioContador)/1000)}"$) + + Log(reqManager.requestTimes(Job.Tag)) End Sub Sub Activity_KeyPress (key As Int) As Boolean