6 files changed
+113
-56
No files matched your search
@@ -0,0 +1,10 @@
|
||||
package com.m57.hermescontrol.data.ws.contract
|
||||
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
data class ProcessKillParams(
|
||||
@SerialName("session_id") val sessionId: String,
|
||||
@SerialName("process_id") val processId: String,
|
||||
)
|
||||
@@ -347,6 +347,22 @@ object RpcMethods {
|
||||
JsonElement.serializer(),
|
||||
)
|
||||
|
||||
// Passthrough JsonElement results: callers keep their existing legacy decoders.
|
||||
val PROCESS_LIST: RpcMethod<SessionIdParams, JsonElement> =
|
||||
RpcMethod(
|
||||
WsMethods.PROCESS_LIST,
|
||||
SessionIdParams.serializer(),
|
||||
JsonElement.serializer(),
|
||||
)
|
||||
|
||||
// Passthrough JsonElement results: callers keep their existing legacy decoders.
|
||||
val PROCESS_KILL: RpcMethod<ProcessKillParams, JsonElement> =
|
||||
RpcMethod(
|
||||
WsMethods.PROCESS_KILL,
|
||||
ProcessKillParams.serializer(),
|
||||
JsonElement.serializer(),
|
||||
)
|
||||
|
||||
/** Every typed method. GatewayContractTest iterates this; future migrations append here. */
|
||||
val all: List<RpcMethod<*, *>> =
|
||||
listOf(
|
||||
@@ -392,5 +408,7 @@ object RpcMethods {
|
||||
CONNECTORS_OPERATION_WAKE,
|
||||
SUBAGENT_LIST,
|
||||
SUBAGENT_TAIL,
|
||||
PROCESS_LIST,
|
||||
PROCESS_KILL,
|
||||
)
|
||||
}
|
||||
@@ -5,7 +5,10 @@ import androidx.lifecycle.viewModelScope
|
||||
import com.m57.hermescontrol.data.model.ProcessInfo
|
||||
import com.m57.hermescontrol.data.session.ActiveSessionHolder
|
||||
import com.m57.hermescontrol.data.ws.HermesWsClient
|
||||
import com.m57.hermescontrol.data.ws.WsMethods
|
||||
import com.m57.hermescontrol.data.ws.contract.ProcessKillParams
|
||||
import com.m57.hermescontrol.data.ws.contract.RpcMethods
|
||||
import com.m57.hermescontrol.data.ws.contract.SessionIdParams
|
||||
import com.m57.hermescontrol.data.ws.toAny
|
||||
import com.m57.hermescontrol.ui.common.ToastHost
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
@@ -67,13 +70,8 @@ class ProcessesViewModel :
|
||||
_uiState.update { it.copy(isLoading = true, errorMessage = null) }
|
||||
viewModelScope.launch {
|
||||
try {
|
||||
val result =
|
||||
HermesWsClient
|
||||
.request(
|
||||
WsMethods.PROCESS_LIST,
|
||||
mapOf("session_id" to sessionId),
|
||||
).await()
|
||||
val processes = parseProcessList(result)
|
||||
val result = HermesWsClient.call(RpcMethods.PROCESS_LIST, SessionIdParams(sessionId))
|
||||
val processes = parseProcessList(result.toAny())
|
||||
_uiState.update {
|
||||
it.copy(
|
||||
isLoading = false,
|
||||
@@ -105,14 +103,7 @@ class ProcessesViewModel :
|
||||
_uiState.update { it.copy(killingId = processId) }
|
||||
viewModelScope.launch {
|
||||
try {
|
||||
HermesWsClient
|
||||
.request(
|
||||
WsMethods.PROCESS_KILL,
|
||||
mapOf(
|
||||
"process_id" to processId,
|
||||
"session_id" to sessionId,
|
||||
),
|
||||
).await()
|
||||
HermesWsClient.call(RpcMethods.PROCESS_KILL, ProcessKillParams(sessionId, processId))
|
||||
_uiState.update { it.copy(killingId = null, toastMessage = "Process killed") }
|
||||
load()
|
||||
} catch (e: Exception) {
|
||||
|
||||
Reference in new issue
Block a user