package com.dianping.pigeon.remoting.common.codec.thrift;
import com.dianping.pigeon.remoting.common.domain.generic.GenericRequest;
import com.dianping.pigeon.remoting.common.domain.generic.GenericResponse;
import com.dianping.pigeon.remoting.common.domain.generic.thrift.Header;
import com.dianping.pigeon.remoting.invoker.service.ServiceInvocationRepository;
import org.apache.thrift.protocol.TProtocol;
import java.util.concurrent.atomic.AtomicInteger;
/**
* @author qi.yin
* 2016/06/02 下午3:39.
*/
public abstract class AbstractThriftSerializer {
protected static final int HEADER_FIELD_LENGTH = 2;
private static final AtomicInteger SEQID = new AtomicInteger();
protected ServiceInvocationRepository repository = ServiceInvocationRepository.getInstance();
protected abstract void doDeserializeRequest(GenericRequest request, TProtocol protocol)
throws Exception;
protected abstract void doSerializeRequest(GenericRequest request, TProtocol protocol)
throws Exception;
protected abstract void doDeserializeResponse(GenericResponse response, GenericRequest request,
TProtocol protocol, Header header)
throws Exception;
protected abstract void doSerializeResponse(GenericResponse response, TProtocol protocol,
Header header, DynamicByteArrayOutputStream bos)
throws Exception;
protected static int getSequenceId() {
return SEQID.getAndIncrement();
}
}