Skip to content

Instantly share code, notes, and snippets.

override fun doWork(): Result {
val logs: List<RemoteLog> = appDatabase.remoteLogsDao().getLogs(FLUSH_CHUNK_SIZE)
val success: Boolean= someNetworkingManager.sendLogs(logs)
if(success) {
appDatabase.remoteLogsDao().deleteOldLogs(FLUSH_CHUNK_SIZE)
}
private fun scheduleWorker() {
val constraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build()
val request =
PeriodicWorkRequestBuilder<FlushLogsWorker>(
repeatInterval = CHUNK_SENDING_TIMEOUT_MINUTES,
repeatIntervalTimeUnit = TimeUnit.MINUTES
)
override fun log(message: String, tag: String, logLevel: Int) {
//Create a RemoteLog object
val remoteLog = RemoteLog(
message = message,
tag = tag,
timestamp = DateTime.now(),
logLevel = logLevel
)
interface RemoteLogger {
fun log(
message: String,
tag: String,
logLevel: Int
)
}
@Dao 
interface RemoteLogsDao { 
 
 @Insert(onConflict = OnConflictStrategy.REPLACE) 
 fun insertLog(remoteLog: RemoteLog) 
 
 @Query("SELECT COUNT(*) FROM $REMOTE_LOGS_TABLE_NAME") 
 fun getLogsCount(): Long 
 
 @Query("SELECT * FROM $REMOTE_LOGS_TABLE_NAME ORDER BY timestamp ASC LIMIT :count")