Generate SSD logging wrappers from typed Jerboa
ober
0da2d7daee5a284faffbcc26b4267456d3be321b
--- a/templates/ssd-review.ss +++ b/templates/ssd-review.ss @@ -7,6 +7,7 @@ (export make-BoxType BoxType? BoxType-id BoxType-name box-type-display boxTypeDisplays boxTypeById boxTypeDisplayById addNullableBoxType) + (type Int) (type Int32) (record BoxType ((id : String) @@ -4934,6 +4935,9 @@ mainActivityRestoredViewportFor mainActivityDisplayName mainActivityLoadPdf mainActivityPdfPageCount mainActivityRenderPdfPage + mainActivityInstallClientCrashLogger + mainActivityLogClientEvent + mainActivityLogDetectResultRaw mainActivitySetStatusRaw mainActivityInitialPickerUri mainActivityOpenPdf mainActivityOpenAnyPdf mainActivityChooseSsdPdfFolder mainActivityRequestDownloadAccess @@ -5273,6 +5277,15 @@ (context : MainActivity) (session : SsdSession)) : Int32 (kotlin-call applyDefaultOcrGuesses)) + (extern (detectResultLogFieldsRawForUi + (stage : String) + (session : SsdSession) + (detectorSource : String) + (learnedGuesses : Int32) + (ocrGuesses : Int32) + (nativeAvailable : Bool) + (nativeError : String)) : JSONObject + (kotlin-call detectResultLogFields)) (extern (detectFailedLogFieldsRawForUi (sourceKey : String) (forceDetect : Bool) @@ -5280,6 +5293,9 @@ (nativeError : String) (error : JSONObject)) : JSONObject (kotlin-call detectFailedLogFields)) + (extern (statusLogFieldsRawForUi + (text : String)) : JSONObject + (kotlin-call statusLogFields)) (extern (windowSetSoftInputMode (window : Window) (mode : Int32)) : Unit (kotlin-member-call setSoftInputMode)) (extern (alertDialogIsShowing (dialog : AlertDialog)) : Bool @@ -5935,10 +5951,6 @@ (activity : MainActivity) (callback : (-> Unit))) : Unit (kotlin-member-call runOnUiThread)) - (extern (mainActivitySetStatusRaw - (activity : MainActivity) - (text : String)) : Unit - (kotlin-member-call setStatus)) (extern (mainActivityFindDownloadSsdPdfsRaw (activity : MainActivity)) : (List SsdPdfChoice) (kotlin-member-call findDownloadSsdPdfs)) @@ -5956,14 +5968,6 @@ (payload : JSONObject) (readTimeoutMillis : Int32)) : Unit (kotlin-member-call sendClientLog)) - (extern (mainActivityLogDetectResultRaw - (activity : MainActivity) - (stage : String) - (session : SsdSession) - (detectorSource : String) - (learnedGuesses : Int32) - (ocrGuesses : Int32)) : Unit - (kotlin-member-call logDetectResult)) (extern (mainActivityThrowableLogFromExceptionRaw (activity : MainActivity) (error : Exception)) : JSONObject @@ -5976,6 +5980,23 @@ (activity : MainActivity) (view : TextView)) : Unit (kotlin-member-set status)) + (extern (mainActivityStatusViewRaw + (activity : MainActivity)) : TextView + (kotlin-member-get status)) + (extern (textViewTextSetRaw + (view : TextView) + (text : String)) : Unit + (kotlin-member-set text)) + (extern (clientCrashLoggerInstalledValueRaw) : Bool + (kotlin-call clientCrashLoggerInstalledValue)) + (extern (clientCrashLoggerInstalledSetRaw + (enabled : Bool)) : Unit + (kotlin-call clientCrashLoggerInstalledSet)) + (extern (mainActivityInstallClientCrashLoggerHandlerRaw + (activity : MainActivity) + (readTimeoutMillis : Int32) + (joinTimeoutMillis : Int)) : Unit + (kotlin-call mainActivityInstallClientCrashLoggerHandler)) (def (normalizeFiringArc (value : String)) : String (string-uppercase (string-trim value))) (def (normalizeLabel (value : String)) : String @@ -7832,6 +7853,58 @@ (def (mainActivitySetReviewView (activity : MainActivity) (view : SsdReviewView)) : Unit (mainActivityReviewViewSet activity view)) + (def (mainActivityInstallClientCrashLogger + (activity : MainActivity) + (readTimeoutMillis : Int32)) : Unit + (if (clientCrashLoggerInstalledValueRaw) + (begin) + (begin + (clientCrashLoggerInstalledSetRaw #t) + (mainActivityInstallClientCrashLoggerHandlerRaw + activity + readTimeoutMillis + (int (+ readTimeoutMillis (int32 500))))))) + (def (mainActivityLogClientEvent + (activity : MainActivity) + (event : String) + (fields : JSONObject + (default (emptyJsonObject)))) : Unit + (mainActivityLogClientEventAsync + activity + event + fields + (mainActivityClientLogReadTimeoutMillisValue))) + (def (mainActivityLogDetectResultRaw + (activity : MainActivity) + (stage : String) + (session : SsdSession) + (detectorSource : String) + (learnedGuesses : Int32) + (ocrGuesses : Int32)) : Unit + (mainActivityLogClientEvent + activity + "ssd-detect-result" + (detectResultLogFieldsRawForUi + stage + session + detectorSource + learnedGuesses + ocrGuesses + (ssdVisionAvailableRawForUi) + (ssdVisionLoadErrorMessageRawForUi)))) + (def (mainActivitySetStatusRaw + (activity : MainActivity) + (text : String)) : Unit + (begin + (textViewTextSetRaw + (mainActivityStatusViewRaw activity) + text) + (if (isErrorStatus text) + (mainActivityLogClientEvent + activity + "ssd-status-error" + (statusLogFieldsRawForUi text)) + (begin)))) (def (truthStoreApplyTruthAndPrune (store : TruthStore) (session : SsdSession)) : Unit @@ -12254,11 +12327,11 @@ " internal val boxTypeDisplays: List<String> by lazy { boxTypeDisplays(boxTypesLoadAndroid(this)) }" " override fun onCreate(savedInstanceState: Bundle?) {" " super.onCreate(savedInstanceState)" - " installClientCrashLogger()" - " logClientEvent(\"ssd-app-start\")" + " mainActivityInstallClientCrashLogger(this, CLIENT_LOG_CRASH_TIMEOUT_MS)" + " mainActivityLogClientEvent(this, \"ssd-app-start\")" " mainActivitySetTruthStore(this, TruthStore(this))" " setContentView(buildUi())" - " setStatus(startupStatus(truthStoreStorageSummary(truthStore)))" + " mainActivitySetStatusRaw(this, startupStatus(truthStoreStorageSummary(truthStore)))" " mainActivityRestoreLastPdf(this)" " mainActivitySeedBundledTruthAsync(this, truthStore)" " }" @@ -12451,43 +12524,8 @@ " }" " }" " }" - "" - " private fun installClientCrashLogger() {" - " if (clientCrashLoggerInstalled) return" - " clientCrashLoggerInstalled = true" - " mainActivityInstallClientCrashLoggerHandler(" - " this," - " CLIENT_LOG_CRASH_TIMEOUT_MS," - " (CLIENT_LOG_CRASH_TIMEOUT_MS + 500).toLong()" - " )" - " }" - "" - " private fun logClientEvent(event: String, fields: JSONObject = emptyJsonObject()) {" - " mainActivityLogClientEventAsync(this, event, fields, CLIENT_LOG_READ_TIMEOUT_MS)" - " }" - "" - " internal fun logDetectResult(" - " stage: String," - " session: SsdSession," - " detectorSource: String," - " learnedGuesses: Int = 0," - " ocrGuesses: Int = 0" - " ) {" - " logClientEvent(" - " \"ssd-detect-result\"," - " detectResultLogFields(" - " stage," - " session," - " detectorSource," - " learnedGuesses," - " ocrGuesses," - " ssdVisionAvailable()," - " ssdVisionLoadErrorMessage()" - " )" - " )" - " }" - "" - " internal fun sendClientLog(payload: JSONObject, readTimeoutMillis: Int) {" + "" + " internal fun sendClientLog(payload: JSONObject, readTimeoutMillis: Int) {" " val bytes = textUtf8Bytes(payload.toString())" " val connection = (URL(CLIENT_LOG_ENDPOINT).openConnection() as HttpsURLConnection).apply {" " requestMethod = \"POST\"" @@ -12547,15 +12585,8 @@ " val stackText = truncateClientLogStack(stack)" " return throwableLogJson(error.javaClass.name, nullableTextOrEmpty(error.message), stackText)" " }" - "" - " internal fun setStatus(text: String) {" - " status.text = text" - " if (isErrorStatus(text)) {" - " logClientEvent(\"ssd-status-error\", statusLogFields(text))" - " }" - " }" - "" - "}" + "" + "}" )) (typed-kotlin-file "com/sfb/ssdreview/MainActivityConstants.kt" (typed-library (com sfb ssdreview) @@ -12583,6 +12614,8 @@ MAX_SSD_PDF_CHOICES FAST_TRUTH_GROUP_THRESHOLD clientCrashLoggerInstalled + clientCrashLoggerInstalledValue + clientCrashLoggerInstalledSet CLIENT_LOG_ENDPOINT CLIENT_LOG_CONNECT_TIMEOUT_MS CLIENT_LOG_READ_TIMEOUT_MS @@ -12638,6 +12671,10 @@ (modifiers internal const)) (var clientCrashLoggerInstalled : Bool #f (modifiers @Volatile internal)) + (def (clientCrashLoggerInstalledValue) : Bool + clientCrashLoggerInstalled) + (def (clientCrashLoggerInstalledSet (enabled : Bool)) : Unit + (set! clientCrashLoggerInstalled enabled)) (val CLIENT_LOG_ENDPOINT : String "https://10.66.60.2:8799/api/client-log" (modifiers internal const)) (val CLIENT_LOG_CONNECT_TIMEOUT_MS : Int32 (int32 2500)