use of com.navercorp.pinpoint.io.header.Header in project pinpoint by naver.
the class ChunkHeaderTBaseDeserializer method readInternal.
private Message<TBase<?, ?>> readInternal() throws TException {
final HeaderReader reader = newHeaderReader();
final Header header = readHeader(reader);
final HeaderEntity headerEntity = readHeaderEntity(reader, header);
skipHeaderOffset(reader);
final TBase<?, ?> base = locator.bodyLookup(header.getType());
if (base == null) {
throw new TException("base must not be null type:" + header.getType());
}
base.read(protocol);
return new DefaultMessage<TBase<?, ?>>(header, headerEntity, base);
}
use of com.navercorp.pinpoint.io.header.Header in project pinpoint by naver.
the class ChunkHeaderTBaseDeserializer method readHeader.
private Header readHeader() throws TException {
HeaderReader reader = newHeaderReader();
Header header = readHeader(reader);
skipHeaderOffset(reader);
return header;
}
use of com.navercorp.pinpoint.io.header.Header in project pinpoint by naver.
the class ChunkHeaderTBaseDeserializer method deserialize.
public List<Message<TBase<?, ?>>> deserialize(byte[] bytes, int offset, int length) throws TException {
try {
trans.reset(bytes, offset, length);
Header header = readHeader();
if (locator.isSupport(header.getType())) {
List<Message<TBase<?, ?>>> list = new ArrayList<Message<TBase<?, ?>>>();
while (trans.getBytesRemainingInBuffer() > 0) {
final Message<TBase<?, ?>> request = readInternal();
list.add(request);
}
return list;
} else {
final Message<TBase<?, ?>> request = readInternal();
if (request == null) {
return Collections.emptyList();
}
List<Message<TBase<?, ?>>> list = new ArrayList<Message<TBase<?, ?>>>();
list.add(request);
return list;
}
} finally {
trans.clear();
protocol.reset();
}
}
use of com.navercorp.pinpoint.io.header.Header in project pinpoint by naver.
the class ChunkHeaderBufferedTBaseSerializer method write.
// write chunk header + header + body
private void write(final TBase<?, ?> base) throws TException {
final TProtocol protocol = protocolFactory.getProtocol(transport);
// write chunk header
writeChunkHeader(protocol);
// write header
final Header header = locator.headerLookup(base);
if (header == null) {
throw new TException("header must not be null base:" + base);
}
HeaderUtils.writeHeader(protocol, header);
base.write(protocol);
if (isNeedFlush()) {
flush();
}
}
use of com.navercorp.pinpoint.io.header.Header in project pinpoint by naver.
the class TypeLocatorBuilder method addBodyFactory.
public void addBodyFactory(short type, BodyFactory<T> bodyFactory) {
Objects.requireNonNull(bodyFactory, "bodyFactory");
final BodyFactory<T> old = bodyFactoryMap.put((int) type, bodyFactory);
if (old != null) {
throw new IllegalStateException("duplicated type:" + type);
}
final Header header = this.headerFactory.newHeader(type);
final Header oldTypeHeader = headerMap.put((int) type, header);
if (oldTypeHeader != null) {
throw new IllegalStateException("duplicated type:" + type);
}
final T object = bodyFactory.getObject();
if (object != null) {
final Class<?> bodyClass = object.getClass();
// classMap.put(type, bodyClass);
final Header oldBodyClass = bodyClassToHeaderMap.put(bodyClass, header);
if (oldBodyClass != null) {
throw new IllegalStateException("duplicated type:" + type);
}
}
}
Aggregations