Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- object Decoder {
- var decoderListeners = List.empty[DecoderListener]
- val reconstructBuffer = MutableMap.empty[Int, Array[Byte]]
- def decode(packetType: Short, sequenceNumber: Int, data: Array[Byte]) {
- val packets =
- if (packetType == 42) {
- List(HungerPacket(bytes))
- } else if (packetType == 43) {
- List(ReadClientMovePacket(bytes))
- } else if (packetType == 44) {
- val p1 = HungerPacket(bytes.take(12))
- val p2 = ReadClientMovePacket(bytes.drop(10))
- List(p1, p2)
- } else if (packetType == 45) {
- reconstructBuffer += sequenceNumber -> data
- if (reconstructBuffer.size == 10) {
- val bigBuffer = scala.collection.mutable.ArrayBuffer.empty[Byte]
- for (k <- 0 until packetTotal) {
- bigBuffer.appendAll(reconstructBuffer(k))
- }
- // do something with bigBuffer
- reconstructBuffer.clear()
- }
- for (packet <- packets; listener <- listeners) {
- listener.packetReceived(packet)
- }
- }
- }
- trait DecoderListener {
- def packetReceived(packet: Packet): Unit
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement