/* * Copyright 2016 dorkbox, llc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package dorkbox.network.rmi.messages import com.esotericsoftware.kryo.Kryo import com.esotericsoftware.kryo.Serializer import com.esotericsoftware.kryo.io.Input import com.esotericsoftware.kryo.io.Output import dorkbox.network.rmi.RmiUtils class MethodResponseSerializer() : Serializer() { override fun write(kryo: Kryo, output: Output, response: MethodResponse) { output.writeInt(RmiUtils.packShorts(response.objectId, response.responseId), true) output.writeBoolean(response.isGlobal) kryo.writeClassAndObject(output, response.result) } override fun read(kryo: Kryo, input: Input, type: Class): MethodResponse { val packedInfo = input.readInt(true) val response = MethodResponse() response.objectId = RmiUtils.unpackLeft(packedInfo) response.responseId = RmiUtils.unpackRight(packedInfo) response.isGlobal = input.readBoolean() response.result = kryo.readClassAndObject(input) return response } }