Advertisement
Guest User

Untitled

a guest
Mar 1st, 2014
4
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 1.09 KB | None | 0 0
  1. object Decoder {
  2.   var decoderListeners = List.empty[DecoderListener]
  3.  
  4.   val reconstructBuffer = MutableMap.empty[Int, Array[Byte]]
  5.  
  6.   def decode(packetType: Short, sequenceNumber: Int, data: Array[Byte]) {
  7.     val packets =
  8.       if (packetType == 42) {
  9.         List(HungerPacket(bytes))
  10.       } else if (packetType == 43) {
  11.         List(ReadClientMovePacket(bytes))
  12.       } else if (packetType == 44) {
  13.         val p1 = HungerPacket(bytes.take(12))
  14.         val p2 = ReadClientMovePacket(bytes.drop(10))
  15.         List(p1, p2)
  16.     } else if (packetType == 45) {
  17.       reconstructBuffer += sequenceNumber -> data
  18.       if (reconstructBuffer.size == 10) {
  19.         val bigBuffer = scala.collection.mutable.ArrayBuffer.empty[Byte]
  20.         for (k <- 0 until packetTotal) {
  21.           bigBuffer.appendAll(reconstructBuffer(k))
  22.         }
  23.         // do something with bigBuffer
  24.         reconstructBuffer.clear()
  25.     }
  26.     for (packet <- packets; listener <- listeners) {
  27.       listener.packetReceived(packet)
  28.     }
  29.   }
  30. }
  31. trait DecoderListener {
  32.   def packetReceived(packet: Packet): Unit
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement