2023-04-22 14:52:27 -07:00
|
|
|
import Foundation
|
|
|
|
import GRPC
|
2023-04-22 15:43:22 -07:00
|
|
|
import StableDiffusionCore
|
2023-04-22 14:52:27 -07:00
|
|
|
import StableDiffusionProtos
|
|
|
|
|
|
|
|
class ModelServiceProvider: SdModelServiceAsyncProvider {
|
|
|
|
private let modelManager: ModelManager
|
2023-04-22 15:43:22 -07:00
|
|
|
|
2023-04-22 14:52:27 -07:00
|
|
|
init(modelManager: ModelManager) {
|
|
|
|
self.modelManager = modelManager
|
|
|
|
}
|
2023-04-22 15:43:22 -07:00
|
|
|
|
|
|
|
func listModels(request _: SdListModelsRequest, context _: GRPCAsyncServerCallContext) async throws -> SdListModelsResponse {
|
2023-04-23 02:09:50 -07:00
|
|
|
let models = try await modelManager.listAvailableModels()
|
2023-04-22 14:52:27 -07:00
|
|
|
var response = SdListModelsResponse()
|
2023-04-23 02:09:50 -07:00
|
|
|
response.availableModels.append(contentsOf: models)
|
2023-04-22 14:52:27 -07:00
|
|
|
return response
|
|
|
|
}
|
2023-04-22 15:43:22 -07:00
|
|
|
|
|
|
|
func loadModel(request: SdLoadModelRequest, context _: GRPCAsyncServerCallContext) async throws -> SdLoadModelResponse {
|
2023-04-22 16:32:54 -07:00
|
|
|
let state = try await modelManager.createModelState(name: request.modelName)
|
2023-04-23 02:09:50 -07:00
|
|
|
try await state.load(request: request)
|
2023-04-22 14:52:27 -07:00
|
|
|
return SdLoadModelResponse()
|
|
|
|
}
|
|
|
|
}
|