@@ -16,25 +16,23 @@ package org.modelix.model.server.handlers
16
16
17
17
import io.ktor.http.*
18
18
import io.ktor.server.application.*
19
- import io.ktor.server.auth.*
20
19
import io.ktor.server.plugins.*
21
- import io.ktor.server.plugins.cors.routing.*
22
- import io.ktor.server.plugins.statuspages.*
23
20
import io.ktor.server.request.*
24
21
import io.ktor.server.response.*
25
22
import io.ktor.server.routing.*
26
23
import io.ktor.server.websocket.*
27
24
import io.ktor.util.pipeline.*
28
25
import io.ktor.websocket.*
26
+ import kotlinx.coroutines.Dispatchers
29
27
import kotlinx.coroutines.Job
28
+ import kotlinx.coroutines.withContext
30
29
import kotlinx.serialization.ExperimentalSerializationApi
31
30
import kotlinx.serialization.encodeToString
32
31
import kotlinx.serialization.json.DecodeSequenceMode
33
32
import kotlinx.serialization.json.Json
34
- import kotlinx.serialization.json.decodeFromStream
35
33
import kotlinx.serialization.json.decodeToSequence
36
34
import kotlinx.serialization.json.encodeToStream
37
- import org.modelix.authorization.*
35
+ import org.modelix.authorization.getUserName
38
36
import org.modelix.model.lazy.RepositoryId
39
37
import org.modelix.model.persistent.HashUtil
40
38
import org.modelix.model.server.api.ModelQuery
@@ -121,7 +119,7 @@ class ModelReplicationServer(val repositoriesManager: RepositoriesManager) {
121
119
call.respondDelta(versionHash, baseVersionHash)
122
120
}
123
121
post {
124
- val deltaFromClient = Json .decodeFromStream <VersionDelta >(call.receiveStream() )
122
+ val deltaFromClient = call.receive <VersionDelta >()
125
123
storeClient.putAll(deltaFromClient.objects.associateBy { HashUtil .sha256(it) })
126
124
val mergedHash = repositoriesManager.mergeChanges(branchRef(), deltaFromClient.versionHash)
127
125
call.respondDelta(mergedHash, deltaFromClient.versionHash)
@@ -168,11 +166,14 @@ class ModelReplicationServer(val repositoriesManager: RepositoriesManager) {
168
166
}
169
167
route(" objects" ) {
170
168
post {
171
- Json .decodeToSequence<String >(call.receiveStream(), DecodeSequenceMode .ARRAY_WRAPPED )
172
- .chunked(5000 )
173
- .forEach { values ->
174
- storeClient.putAll(values.associateBy { HashUtil .sha256(it) }, true )
175
- }
169
+ withContext(Dispatchers .IO ) {
170
+ Json .decodeToSequence<String >(call.receiveStream(), DecodeSequenceMode .ARRAY_WRAPPED )
171
+ .chunked(5000 )
172
+ .forEach { values ->
173
+ storeClient.putAll(values.associateBy { HashUtil .sha256(it) }, true )
174
+ }
175
+ }
176
+ call.respondText(" OK" )
176
177
}
177
178
get(" {hash}" ) {
178
179
val key = call.parameters[" hash" ]!!
0 commit comments