1/*2 * Licensed to the Apache Software Foundation (ASF) under one3 * or more contributor license agreements. See the NOTICE file4 * distributed with this work for additional information5 * regarding copyright ownership. The ASF licenses this file6 * to you under the Apache License, Version 2.0 (the7 * "License"); you may not use this file except in compliance8 * with the License. You may obtain a copy of the License at9 *10 * http://www.apache.org/licenses/LICENSE-2.011 *12 * Unless required by applicable law or agreed to in writing, software13 * distributed under the License is distributed on an "AS IS" BASIS,14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.15 * See the License for the specific language governing permissions and16 * limitations under the License.17 */18package org.apache.giraph.writable.kryo;
1920import java.io.DataInput;
21import java.io.DataOutput;
22import java.io.IOException;
2324import com.esotericsoftware.kryo.io.Input;
25import com.esotericsoftware.kryo.io.Output;
26import org.apache.giraph.writable.kryo.markers.KryoIgnoreWritable;
2728/**29 * Class which you can extend to get all serialization/deserialization30 * done automagically.31 *32 * Usage of this class is similar to KryoWritable but33 * unlike KryoWritable, this class does not34 * support recursive/nested objects to provide better35 * performance.36 *37 * If the underlying stream is a kryo output stream than the read/write38 * happens with a kryo object that doesn't track references, providing39 * significantly better performance.40 *41 */42publicabstractclassKryoSimpleWritableimplementsKryoIgnoreWritable {
43 @Override
44publicfinalvoid write(DataOutput out) throws IOException {
45if (out instanceof Output) {
46 Output outp = (Output) out;
47 HadoopKryo.writeWithKryoOutOfObject(
48 HadoopKryo.getNontrackingKryo(), outp, this);
49 } else {
50 HadoopKryo.writeOutOfObject(out, this);
51 }
52 }
5354 @Override
55publicfinalvoid readFields(DataInput in) throws IOException {
56if (in instanceof Input) {
57 Input inp = (Input) in;
58 HadoopKryo.readWithKryoIntoObject(
59 HadoopKryo.getNontrackingKryo(), inp, this);
60 } else {
61 HadoopKryo.readIntoObject(in, this);
62 }
63 }
64 }