@@ -51,18 +51,6 @@ val globalYaml = Yaml(
5151 )
5252)
5353
54- val globalClient = HttpClient (io.ktor.client.engine.cio.CIO ) {
55- install(ContentNegotiation ) {
56- json(globalJson)
57- }
58- install(HttpTimeout ) {
59- socketTimeoutMillis = 10000
60- connectTimeoutMillis = 10000
61- requestTimeoutMillis = Long .MAX_VALUE
62- }
63- expectSuccess = true
64- }
65-
6654val configFile = File (" config.yml" )
6755
6856@Suppress(" unused" )
@@ -72,7 +60,7 @@ val unused = {
7260 helpLogger.info(" A default config file is created at ${configFile.absolutePath} with schema annotation." )
7361 configFile.writeText(
7462 """
75- # ${' $' } schema: https://github.com/Stream29/ProxyAsLocalModel/raw/master/config_v0 .schema.json
63+ # ${' $' } schema: https://github.com/Stream29/ProxyAsLocalModel/raw/master/config_v1 .schema.json
7664lmStudio:
7765 port: 1234
7866ollama:
@@ -96,6 +84,11 @@ apiProviders: {}
9684 previousApiProviders.values.forEach { it.close() }
9785 apiProviderProperty.set(newConfig.apiProviders)
9886 }
87+ if (previousConfig.client != newConfig.client) {
88+ val previousClient = globalClient
89+ previousClient.close()
90+ clientConfigProperty.set(newConfig.client)
91+ }
9992 if (previousConfig.lmStudio != newConfig.lmStudio) {
10093 val previousServer = lmStudioServer
10194 previousServer?.stop()
@@ -121,6 +114,31 @@ private val configProperty = AutoUpdatePropertyRoot(
121114
122115var config by configProperty
123116
117+ val clientConfigProperty = AutoUpdatePropertyRoot (
118+ sync = true ,
119+ mode = AutoUpdateMode .PROPAGATE ,
120+ initValue = config.client
121+ )
122+
123+ val globalClient by clientConfigProperty.subproperty {
124+ configLogger.info(" Ktor Client created with: $it " )
125+ HttpClient (io.ktor.client.engine.cio.CIO ) {
126+ install(ContentNegotiation ) {
127+ json(globalJson)
128+ }
129+ install(HttpTimeout ) {
130+ socketTimeoutMillis = it.socketTimeout
131+ connectTimeoutMillis = it.connectTimeout
132+ requestTimeoutMillis = it.requestTimeout
133+ }
134+ install(HttpRequestRetry ) {
135+ retryOnException(maxRetries = it.retry)
136+ constantDelay(it.delayBeforeRetry)
137+ }
138+ expectSuccess = true
139+ }
140+ }
141+
124142private val apiProviderProperty = AutoUpdatePropertyRoot (
125143 sync = true ,
126144 mode = AutoUpdateMode .PROPAGATE ,
0 commit comments