mirror of
https://github.com/GayPizzaSpecifications/stable-diffusion-rpc.git
synced 2025-08-04 14:01:32 +00:00
27 lines
1.0 KiB
Swift
27 lines
1.0 KiB
Swift
import Foundation
|
|
import GRPC
|
|
import StableDiffusionCore
|
|
import StableDiffusionProtos
|
|
|
|
class ImageGenerationServiceProvider: SdImageGenerationServiceAsyncProvider {
|
|
private let modelManager: ModelManager
|
|
|
|
init(modelManager: ModelManager) {
|
|
self.modelManager = modelManager
|
|
}
|
|
|
|
func generateImages(request: SdGenerateImagesRequest, context _: GRPCAsyncServerCallContext) async throws -> SdGenerateImagesResponse {
|
|
guard let state = await modelManager.getModelState(name: request.modelName) else {
|
|
throw SdCoreError.modelNotFound
|
|
}
|
|
return try await state.generate(request)
|
|
}
|
|
|
|
func generateImagesStreaming(request: SdGenerateImagesRequest, responseStream: GRPCAsyncResponseStreamWriter<SdGenerateImagesStreamUpdate>, context _: GRPCAsyncServerCallContext) async throws {
|
|
guard let state = await modelManager.getModelState(name: request.modelName) else {
|
|
throw SdCoreError.modelNotFound
|
|
}
|
|
try await state.generateStreaming(request, stream: responseStream)
|
|
}
|
|
}
|