Skip to content

Commit 4a85604

Browse files
authored
Merge pull request #119 from averak/release/v0.5.0
Release/v0.5.0
2 parents 29cc1fb + c4e4215 commit 4a85604

File tree

19 files changed

+378
-123
lines changed

19 files changed

+378
-123
lines changed

Makefile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ codegen:
3838
--java_out=protobuf/src/main/java \
3939
--java-gsync-server_out=protobuf/src/main/java \
4040
--grpc-java_out=protobuf/src/main/java {}
41-
#./gradlew mbGenerate
41+
./gradlew mbGenerate
4242
./gradlew spotlessApply
4343

4444
.PHONY: db-apply
@@ -56,3 +56,7 @@ check_dependencies:
5656
.PHONY: update_dependencies
5757
update_dependencies:
5858
./gradlew versionCatalogUpdate
59+
60+
.PHONY: run-battle-server
61+
run-battle-server:
62+
kubectl create -f ./infra/k8s/battle-server.yaml

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ For more information, see [Makefile](./Makefile).
2929
* Spring Boot 3.2
3030
* Cloud Spanner
3131
* Redis
32+
* Agones
3233

3334
### Running the application in dev mode
3435

app/adapter/src/main/java/net/averak/gsync/adapter/dao/dto/base/RequiredClientVersionDto.java

Lines changed: 15 additions & 15 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/adapter/src/main/java/net/averak/gsync/adapter/dao/dto/base/RequiredClientVersionExample.java

Lines changed: 24 additions & 24 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/adapter/src/main/java/net/averak/gsync/adapter/dao/mapper/base/RequiredClientVersionBaseMapper.java

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/adapter/src/main/kotlin/net/averak/gsync/adapter/handler/player_api/interceptor/ClientVersionInterceptor.kt

Lines changed: 14 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ import net.averak.gsync.adapter.dao.mapper.base.RequiredClientVersionBaseMapper
1010
import net.averak.gsync.core.config.Config
1111
import net.averak.gsync.core.exception.ErrorCode
1212
import net.averak.gsync.core.exception.GsyncException
13-
import net.averak.gsync.domain.model.Platform
13+
import net.averak.gsync.domain.model.Os
14+
import net.averak.gsync.domain.model.Semver
1415
import net.averak.gsync.infrastructure.grpc.player_api.metadata.IncomingHeaderKey
1516
import net.averak.gsync.infrastructure.grpc.player_api.metadata.RequestScope
1617
import org.springframework.core.annotation.Order
@@ -34,59 +35,44 @@ class ClientVersionInterceptor(
3435
val clientVersion = headers.get(
3536
Metadata.Key.of(IncomingHeaderKey.CLIENT_VERSION.key, Metadata.ASCII_STRING_MARSHALLER),
3637
)
37-
val platform = headers.get(
38-
Metadata.Key.of(IncomingHeaderKey.PLATFORM.key, Metadata.ASCII_STRING_MARSHALLER),
39-
)?.let { Platform.valueOf(it) }
38+
val os = headers.get(
39+
Metadata.Key.of(IncomingHeaderKey.CLIENT_OS.key, Metadata.ASCII_STRING_MARSHALLER),
40+
)?.let { Os.valueOf(it) }
4041

4142
// デバッグモードの場合のみ、不正なクライアントをバイパスする
42-
if ((clientVersion == null || platform == null) && config.debug) {
43+
if ((clientVersion == null || os == null) && config.debug) {
4344
return next.startCall(call, headers)
4445
}
4546

46-
if (!verifyClientVersion(requestScope.gctx.masterVersion, clientVersion, platform)) {
47+
if (!verifyClientVersion(requestScope.gctx.masterVersion, clientVersion, os)) {
4748
throw GsyncException(ErrorCode.CLIENT_VERSION_IS_NOT_SUPPORTED)
4849
}
4950
return next.startCall(call, headers)
5051
}
5152

5253
@Throws(GsyncException::class)
5354
@VisibleForTesting
54-
fun verifyClientVersion(masterVersion: UUID, clientVersion: String?, platform: Platform?): Boolean {
55-
if (clientVersion == null && platform == null) {
55+
fun verifyClientVersion(masterVersion: UUID, clientVersion: String?, os: Os?): Boolean {
56+
if (clientVersion == null && os == null) {
5657
return true
5758
}
5859

5960
if (clientVersion == null) {
6061
throw GsyncException(ErrorCode.CLIENT_VERSION_MUST_BE_SPECIFIED)
6162
}
62-
if (platform == null) {
63-
throw GsyncException(ErrorCode.PLATFORM_MUST_BE_SPECIFIED)
63+
if (os == null) {
64+
throw GsyncException(ErrorCode.CLIENT_OS_MUST_BE_SPECIFIED)
6465
}
66+
// TODO: クライアントバージョン情報は Repository 経由で取得するようにする
6567
val dtos = requiredClientVersionMapper.selectByExample(
6668
RequiredClientVersionExample().apply {
67-
createCriteria().andMasterVersionEqualTo(masterVersion.toString()).andPlatformEqualTo(platform.id.toLong())
69+
createCriteria().andMasterVersionEqualTo(masterVersion.toString()).andOsEqualTo(os.id.toLong())
6870
},
6971
)
7072
if (dtos.isEmpty()) {
7173
throw GsyncException(ErrorCode.REQUIRED_CLIENT_VERSION_DEFINITION_IS_NOT_FOUND)
7274
}
7375

74-
return compareSemver(clientVersion, dtos[0].clientVersion)
75-
}
76-
77-
/**
78-
* semver1 >= semver2 なら true を返す
79-
*
80-
* @param semver1 x.y.z 形式のバージョン文字列
81-
* @param semver2 x.y.z 形式のバージョン文字列
82-
*/
83-
private fun compareSemver(semver1: String, semver2: String): Boolean {
84-
val major1 = semver1.split(".")[0].toInt()
85-
val minor1 = semver1.split(".")[1].toInt()
86-
val patch1 = semver1.split(".")[2].toInt()
87-
val major2 = semver2.split(".")[0].toInt()
88-
val minor2 = semver2.split(".")[1].toInt()
89-
val patch2 = semver2.split(".")[2].toInt()
90-
return major1 > major2 || (major1 == major2 && minor1 > minor2) || (major1 == major2 && minor1 == minor2 && patch1 >= patch2)
76+
return !Semver.parse(clientVersion).lessThan(Semver.parse(dtos[0].clientVersion))
9177
}
9278
}

0 commit comments

Comments
 (0)