I hereby claim:
- I am pavlospt on github.
- I am pavlosppt (https://keybase.io/pavlosppt) on keybase.
- I have a public key ASD0kOuUtMVG_0En0hEwvIwnqwvrT17oRWD-5OIjHHI8ZQo
To claim this, I am signing this object:
I hereby claim:
To claim this, I am signing this object:
Number of requests: 42 | |
########################################## | |
Starting to fetch parameters from futures! | |
Time spent for a chunk: 312ms | |
Time spent for a chunk: 318ms | |
Time spent for a chunk: 319ms | |
Time spent for a chunk: 318ms | |
Time spent for a chunk: 320ms | |
Time spent for a chunk: 321ms | |
Time spent for a chunk: 321ms |
g": 0} | |
arc-gha-rs-controller-55db6fd4c8-4lnrd manager 2023-12-08T10:49:23Z INFO EphemeralRunnerSet Scaling comparison {"ephemeralrunnerset": {"name":"arc-runner-set-85ndg","namespace":"github-arc-runners"}, "current": 5, "desired": 5} | |
arc-gha-rs-controller-55db6fd4c8-4lnrd manager 2023-12-08T10:49:23Z INFO AutoscalingRunnerSet Find existing ephemeral runner set {"autoscalingrunnerset": {"name":"arc-runner-set","namespace":"github-arc-runners"}, "name": "arc-runner-set-85ndg", "specHash": "68f7894"} | |
arc-gha-rs-controller-55db6fd4c8-4lnrd manager 2023-12-08T11:09:46Z INFO EphemeralRunnerSet Ephemeral runner counts {"ephemeralrunnerset": {"name":"arc-runner-set-85ndg","namespace":"github-arc-runners"}, "pending": 0, "running": 5, "finished": 0, "failed": 0, "deleting": 0} | |
arc-gha-rs-controller-55db6fd4c8-4lnrd manager 2023-12-08T11:09:46Z INFO EphemeralRunnerSet Scaling comparison {"ephemeralrunnerset": {"name":"arc-runner-set-85ndg","namespace":"github-arc-runners"}, "current": 5, "desired": 5} | |
arc-gha-rs-contr |
/** | |
* Dynamically discover and add modules in our project | |
* */ | |
val moduleBuildFileName = "build.gradle.kts" | |
// A pattern to match the prefix of our modules | |
val eligibleModuleNamePattern = "a_pattern_to_match_our_module_names".toRegex() // (e.g.: (app|android-|kotlin-).*) | |
// Filter directories that indicate modules | |
val moduleFilter: FileFilter = FileFilter { pathname: File -> |
abstract class ResultUseCase<Type, in Params> where Type : Any { | |
protected abstract val workDispatcher: CoroutineDispatcher | |
abstract suspend fun run(params: Params): Result<Type> | |
suspend operator fun invoke(params: Params): Result<Type> = withContext(workDispatcher) { | |
run(params) | |
} | |
} |
abstract class NoResultUseCase<in Params> { | |
protected abstract val workDispatcher: CoroutineDispatcher | |
abstract suspend fun run(params: Params) | |
suspend operator fun invoke(params: Params) = withContext(workDispatcher) { | |
run(params) | |
} | |
} |
interface ObservableUseCase<Type> { | |
val dispatcher: CoroutineDispatcher | |
fun observe(): Flow<Type> | |
} | |
@OptIn(ExperimentalCoroutinesApi::class, FlowPreview::class) | |
abstract class FlowUseCase<Type : Any, Params : Any> : ObservableUseCase<Type> { | |
private val channel = ConflatedBroadcastChannel<Params>() | |
operator fun invoke(params: Params) = channel.sendBlocking(params) |
class OurViewModel(observeGithubReposUseCase: ObserveGithubReposUseCase): ViewModel { | |
val githubRepos: LiveData<List<GithubRepoItem>> | |
get() = observeGithubReposUseCase | |
.observe() | |
.map { reposList -> | |
reposList | |
.sortedByDescending { it.stars } | |
.map { |
class OurViewModel: ViewModel() { | |
private val _intentChannel = ConflatedBroadcastChannel<OurViewIntent>() | |
init { | |
_intentChannel | |
.asFlow() | |
.onEach { viewIntent -> | |
when (viewIntent) { | |
OurViewIntent.Refresh -> refreshData() | |
} |
@Suppress("UNCHECKED_CAST") | |
class ViewModelFactory @Inject constructor( | |
private val creators: Map<Class<out ViewModel>, Provider<ViewModel>> | |
) : ViewModelProvider.Factory { | |
override fun <T : ViewModel> create(modelClass: Class<T>): T { | |
val creator = creators[modelClass] | |
?: creators.asIterable().find { (key, _) -> modelClass.isAssignableFrom(key) }?.value | |
?: throw IllegalArgumentException("Unknown ViewModel class $modelClass") |