i have a problen with DBRequestManager (i think)
when i use ExecuteBatch i got this message ( and the insert dont work)
(same code in b4a works great)
any help is welcome, thanks.
my code:
when i use ExecuteBatch i got this message ( and the insert dont work)
some times works at the first other times works at the third sometimes dont workEvent target instance was released: ser_objecttobytes::
(same code in b4a works great)
any help is welcome, thanks.
my code:
code:
If IsFound = 1 Then
Log("found")
tokenpw=RandomString2(6)
Log(tokenpw)
Dim cmdc As DBCommand = CreateCommand("UP_PhoneNumber", Array(EditText3.Text,tokenpw))
Dim j As HttpJob = CreateRequest.ExecuteBatch(Array(cmdc), Null)
'here start the problem'
Wait For(j) JobDone(j As HttpJob)
'here ends the problems'
If j.Success Then
Log("sucees up phonenumer")
numero_cliente=EditText3.Text
cpnl.Visible=True
Timer1.Initialize("timer1",1000)
Timer1.Enabled=True
btnsms.Enabled=False
lbltime.Visible=True
lblwatch.Visible=True
lblnocode.Visible=True
lblreen.Visible=True
'btnsms.SetColorAndBorder(Colors.Gray,2dip,Colors.Gray,25dip)
SetButtonGradient(btnsms,Colors.Gray,Colors.Gray)
SendTwilioSMS("504"&numero_cliente,"Palominos: Su codigo de seguridad es: " & tokenpw &". Vence en 10 minutos. No comparta este codigo con nadie.")
End If
j.Release
Else
clsToast.show("No sé a encontrado una cuenta registrada a este número")
End If
DBRequesManager:
'Requires support for resumable subs
'Class module
Sub Class_Globals
Private mTarget As Object
Private link As String
Private VERSION As Float = 2
Dim ser11 As B4XSerializator
Dim Job11 As HttpJob
Dim Tag11 As Object
End Sub
'Target - The module that handles JobDone (usually Me).
'ConnectorLink - URL of the Java server.
Public Sub Initialize (Target As Object, ConnectorLink As String)
mTarget = Target
link = ConnectorLink
End Sub
'Sends a query request.
'Command - Query name and parameters.
'Limit - Maximum rows to return or 0 for no limit.
'Tag - An object that will be returned in the result.
Public Sub ExecuteQuery(Command As DBCommand, Limit As Int, Tag As Object) As HttpJob
Dim ser As B4XSerializator
Dim data() As Byte = ser.ConvertObjectToBytes(CreateMap("command": Command, "limit": Limit, "version": VERSION))
Return SendJob(CreateJob, data, Tag, "query2")
End Sub
Private Sub SendJob(j As HttpJob, Data() As Byte, Tag As Object, Method As String) As HttpJob
j.Tag = Tag
j.PostBytes(link & "?method=" & Method , Data)
Return j
End Sub
Private Sub CreateJob As HttpJob
Dim j As HttpJob
j.Initialize("DBRequest", mTarget)
Return j
End Sub
'Executes a batch of (non-select) commands.
'ListOfCommands - List of the commands that will be executes.
'Tag - An object that will be returned in the result.
Public Sub ExecuteBatch(ListOfCommands As List, Tag As Object) As HttpJob
Dim j As HttpJob = CreateJob
Job11 = j
Tag11 = Tag
ExecuteBatchImpl(ListOfCommands)
Return j
End Sub
Sub ser_ObjectToBytes (Success As Boolean, Bytes() As Byte)
SendJob(Job11, Bytes, Tag11, "batch2")
End Sub
Private Sub ExecuteBatchImpl(ListOfCommands As List)
ser11.ConvertObjectToBytesAsync(CreateMap("commands": ListOfCommands, "version": VERSION), "ser")
End Sub
'Similar to ExecuteBatch. Sends a single command.
Public Sub ExecuteCommand(Command As DBCommand, Tag As Object) As HttpJob
Return ExecuteBatch(Array As DBCommand(Command), Tag)
End Sub
'Handles the Job result and returns a DBResult.
'It is recommended to use HandleJobAsync instead.
Public Sub HandleJob(Job As HttpJob) As DBResult
Dim ser As B4XSerializator
Dim data() As Byte = Bit.InputStreamToBytes(Job.GetInputStream)
Dim res As DBResult = ser.ConvertBytesToObject(data)
res.Tag = Job.Tag
Return res
End Sub
'Handles the Job result and raises the Result event when the data is ready.
Public Sub HandleJobAsync(Job As HttpJob, EventName As String)
Dim ser As B4XSerializator
Dim data() As Byte = Bit.InputStreamToBytes(Job.GetInputStream)
ser.ConvertBytesToObjectAsync(data, "ser")
Wait For (ser) ser_BytesToObject (Success As Boolean, NewObject As Object)
If Success = False Then
Log("Error reading response: " & LastException)
Return
End If
Dim res As DBResult = NewObject
res.Tag = Job.Tag
CallSubDelayed2(mTarget, EventName & "_result", res)
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
out.InitializeToBytesArray(0)
Dim In As InputStream = File.OpenInput(Dir, FileName)
File.Copy2(In, out)
out.Close
Return out.ToBytesArray
End Sub
#if Not(B4J)
'Converts an image to a bytes array (for BLOB fields).
Public Sub ImageToBytes(Image As Bitmap) As Byte()
Dim out As OutputStream
out.InitializeToBytesArray(0)
Image.WriteToStream(out, 100, "JPEG")
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
In.InitializeFromBytesArray(bytes, 0, bytes.Length)
Dim bmp As Bitmap
bmp.Initialize2(In)
In.Close
Return bmp
End Sub
#End If
'Prints the table to the logs.
Public Sub PrintTable(Table As DBResult)
Log("Tag: " & Table.Tag & ", Columns: " & Table.Columns.Size & ", Rows: " & Table.Rows.Size)
Dim sb As StringBuilder
sb.Initialize
For Each col In Table.Columns.Keys
sb.Append(col).Append(TAB)
Next
Log(sb.ToString)
For Each row() As Object In Table.Rows
Dim sb As StringBuilder
sb.Initialize
For Each record As Object In row
sb.Append(record).Append(TAB)
Next
Log(sb.ToString)
Next
End Sub
Last edited: