package com.navercorp.pinpoint.common.server.bo.serializer.trace.v2;
import com.navercorp.pinpoint.common.server.bo.SpanBo;
import com.navercorp.pinpoint.common.server.bo.serializer.HbaseSerializer;
import com.navercorp.pinpoint.common.server.bo.serializer.SerializationContext;
import org.apache.hadoop.hbase.client.Put;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.nio.ByteBuffer;
import static com.navercorp.pinpoint.common.hbase.HBaseTables.TRACE_V2_CF_SPAN;
/**
* @author Woonduk Kang(emeroad)
*/
@Component
public class SpanSerializerV2 implements HbaseSerializer<SpanBo, Put> {
@Autowired
private SpanEncoder spanEncoder;
public SpanSerializerV2() {
}
@Override
public void serialize(SpanBo spanBo, Put put, SerializationContext context) {
final SpanEncodingContext<SpanBo> encodingContext = new SpanEncodingContext<SpanBo>(spanBo);
ByteBuffer qualifier = spanEncoder.encodeSpanQualifier(encodingContext);
ByteBuffer columnValue = spanEncoder.encodeSpanColumnValue(encodingContext);
long acceptedTime = put.getTimeStamp();
put.addColumn(TRACE_V2_CF_SPAN, qualifier, acceptedTime, columnValue);
}
}