Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
M
Mirai
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
MyCard
Mirai
Commits
75f21405
Commit
75f21405
authored
Jan 27, 2020
by
jiahua.liu
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
85d1b613
fd60fad9
Changes
3
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
430 additions
and
0 deletions
+430
-0
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/io/serialization/JceEncoder.kt
.../net/mamoe/mirai/qqandroid/io/serialization/JceEncoder.kt
+349
-0
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/io/serialization/SerializationHelper.kt
...e/mirai/qqandroid/io/serialization/SerializationHelper.kt
+16
-0
mirai-core-qqandroid/src/jvmTest/kotlin/net.mamoe.mirai.qqandroid.io.serialization/JceEncoderTest.kt
....mamoe.mirai.qqandroid.io.serialization/JceEncoderTest.kt
+65
-0
No files found.
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/io/serialization/JceEncoder.kt
0 → 100644
View file @
75f21405
This diff is collapsed.
Click to expand it.
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/io/serialization/SerializationHelper.kt
0 → 100644
View file @
75f21405
package
net.mamoe.mirai.qqandroid.io.serialization
import
kotlinx.serialization.SerialDescriptor
/*
* Helper for kotlinx.serialization
*/
internal
inline
fun
<
reified
A
:
Annotation
>
SerialDescriptor
.
findAnnotation
(
elementIndex
:
Int
):
A
?
{
val
candidates
=
getElementAnnotations
(
elementIndex
).
filterIsInstance
<
A
>()
return
when
(
candidates
.
size
)
{
0
->
null
1
->
candidates
[
0
]
else
->
throw
IllegalStateException
(
"There are duplicate annotations of type ${A::class} in the descriptor $this"
)
}
}
mirai-core-qqandroid/src/jvmTest/kotlin/net.mamoe.mirai.qqandroid.io.serialization/JceEncoderTest.kt
0 → 100644
View file @
75f21405
package
net.mamoe.mirai.qqandroid.io.serialization
import
kotlinx.io.core.readBytes
import
kotlinx.serialization.SerialId
import
kotlinx.serialization.Serializable
import
net.mamoe.mirai.qqandroid.io.buildJcePacket
import
net.mamoe.mirai.utils.io.toUHexString
import
kotlin.test.Test
import
kotlin.test.assertEquals
class
JceEncoderTest
{
@Serializable
class
TestSimpleJceStruct
(
@SerialId
(
0
)
val
string
:
String
=
"123"
,
@SerialId
(
1
)
val
byte
:
Byte
=
123
,
@SerialId
(
2
)
val
short
:
Short
=
123
,
@SerialId
(
3
)
val
int
:
Int
=
123
,
@SerialId
(
4
)
val
long
:
Long
=
123
,
@SerialId
(
5
)
val
float
:
Float
=
123f
,
@SerialId
(
6
)
val
double
:
Double
=
123.0
)
@Test
fun
testEncoder
()
{
assertEquals
(
buildJcePacket
{
writeString
(
"123"
,
0
)
writeByte
(
123
,
1
)
writeShort
(
123
,
2
)
writeInt
(
123
,
3
)
writeLong
(
123
,
4
)
writeFloat
(
123f
,
5
)
writeDouble
(
123.0
,
6
)
}.
readBytes
().
toUHexString
(),
Jce
.
GBK
.
dump
(
TestSimpleJceStruct
.
serializer
(),
TestSimpleJceStruct
()
).
toUHexString
()
)
}
@Test
fun
testEncoder2
()
{
assertEquals
(
buildJcePacket
{
writeFully
(
byteArrayOf
(
1
,
2
,
3
),
7
)
writeCollection
(
listOf
(
1
,
2
,
3
),
8
)
writeMap
(
mapOf
(
"哈哈"
to
"嘿嘿"
),
9
)
}.
readBytes
().
toUHexString
(),
Jce
.
GBK
.
dump
(
TestComplexJceStruct
.
serializer
(),
TestComplexJceStruct
()
).
toUHexString
()
)
}
@Serializable
class
TestComplexJceStruct
(
@SerialId
(
7
)
val
byteArray
:
ByteArray
=
byteArrayOf
(
1
,
2
,
3
),
@SerialId
(
8
)
val
byteList
:
List
<
Byte
>
=
listOf
(
1
,
2
,
3
),
@SerialId
(
9
)
val
map
:
Map
<
String
,
String
>
=
mapOf
(
"哈哈"
to
"嘿嘿"
)
)
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment