Sub Process_Globals
Private mPickUps As Map
Private lastPickupID As Int
Private t As Timer
Private sql As SQL
Type PickUpInfo (address As String, PickUpTime As Long)
End Sub
Sub AppStart (Args() As String)
mPickUps.Initialize
sql.InitializeSQLite("databasePath", "databaseName", True)
RetrieveStoredPickups
StartMessageLoop
End Sub
Sub RetrieveStoredPickups
Dim SenderFilter As Object = sql.ExecQueryAsync("SQL", "SELECT * FROM PickUpsTable", Null)
Wait For (SenderFilter) SQL_QueryComplete (Success As Boolean, rs As ResultSet)
If Success Then
Do While rs.NextRow
'populate mpickUps map with the results
' mpickUps.Put(uid, CreatePickUpInfo(address, PickUpTme))
Loop
rs.Close
Else
Log(LastException)
End If
t.Initialize("t", 60000) 'interval depends on how accurately timed you want the function to be triggered
t.Enabled=True
End Sub
Sub AddPickup (address As String, PickUpTme As Long) 'time of pickup in ticks
mPickUps.Put(lastPickupID+1, CreatePickUpInfo(address, PickUpTme))
sql.ExecNonQuery2("Insert into PickUpsTable (uid, time, address) VALUES (?,?,?)", Array As Object(lastPickupID+1, PickUpTme, address)) 'write this pickUp to the database also
lastPickupID = lastPickupID+1
End Sub
Private Sub RemovePickup (uid As Int)
mPickUps.Remove(uid)
sql.ExecNonQuery2("DELETE FROM PickUpsTable WHERE uid=?", Array As Int(uid))
End Sub
Private Sub t_Tick
For Each uid As Int In mPickUps
Dim pInfo As PickUpInfo = mPickUps.Get(uid)
If DateTime.Now > pInfo.PickUpTime Then '> because we may have gone past the actual time
ActivateFunction(pInfo.address)
RemovePickup(uid)
End If
Next
End Sub
Sub ActivateFunction(address As String)
Log(address)
End Sub
Public Sub CreatePickUpInfo (address As String, time As Long) As PickUpInfo
Dim t1 As PickUpInfo
t1.Initialize
t1.address = address
t1.PickUpTime = time
Return t1
End Sub