mirror of
https://github.com/GayPizzaSpecifications/stable-diffusion-rpc.git
synced 2025-08-03 05:30:54 +00:00
32 lines
1.1 KiB
Swift
32 lines
1.1 KiB
Swift
import Foundation
|
|
import GRPC
|
|
import StableDiffusionProtos
|
|
|
|
class ModelServiceProvider: SdModelServiceAsyncProvider {
|
|
private let modelManager: ModelManager
|
|
|
|
init(modelManager: ModelManager) {
|
|
self.modelManager = modelManager
|
|
}
|
|
|
|
func listModels(request: SdListModelsRequest, context: GRPCAsyncServerCallContext) async throws -> SdListModelsResponse {
|
|
let models = await modelManager.listModels()
|
|
var response = SdListModelsResponse()
|
|
response.models.append(contentsOf: models)
|
|
return response
|
|
}
|
|
|
|
func reloadModels(request: SdReloadModelsRequest, context: GRPCAsyncServerCallContext) async throws -> SdReloadModelsResponse {
|
|
try await modelManager.reloadModels()
|
|
return SdReloadModelsResponse()
|
|
}
|
|
|
|
func loadModel(request: SdLoadModelRequest, context: GRPCAsyncServerCallContext) async throws -> SdLoadModelResponse {
|
|
guard let state = await modelManager.getModelState(name: request.modelName) else {
|
|
throw SdServerError.modelNotFound
|
|
}
|
|
try await state.load()
|
|
return SdLoadModelResponse()
|
|
}
|
|
}
|