![JAR search and dependency download from the Maven repository](/logo.png)
com.github.netty.protocol.dubbo.DubboPacket Maven / Gradle / Ivy
package com.github.netty.protocol.dubbo;
import com.github.netty.protocol.dubbo.packet.BodyFail;
import com.github.netty.protocol.dubbo.packet.BodyHeartBeat;
import com.github.netty.protocol.dubbo.packet.BodyRequest;
import com.github.netty.protocol.dubbo.packet.BodyResponse;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufAllocator;
import java.util.Map;
import java.util.Objects;
public class DubboPacket {
final Header header;
Body body;
public DubboPacket(Header header) {
this.header = header;
}
public Header getHeader() {
return header;
}
public Body getBody() {
return body;
}
public void release() {
header.release();
if (body != null) {
body.release();
}
}
public ByteBuf buildErrorPacket(ByteBufAllocator allocator, byte errorStatus, String errorMessage) {
byte serializationProtoId = header.getSerializationProtoId();
byte[] errorBytes = Serialization.getStringBytesOf(serializationProtoId, errorMessage);
int maxCapacity = Constant.HEADER_LENGTH + errorBytes.length;
ByteBuf empty = allocator.ioBuffer(maxCapacity, maxCapacity);
empty.writeByte(Constant.MAGIC_0);
empty.writeByte(Constant.MAGIC_1);
empty.writeByte(serializationProtoId);
empty.writeByte(errorStatus);
empty.writeLong(header.getRequestId());
empty.writeInt(errorBytes.length);
empty.writeBytes(errorBytes);
return empty;
}
public String getRequestPath() {
if (body instanceof BodyRequest) {
return ((BodyRequest) body).getPath();
} else {
return null;
}
}
public String getRequestMethodName() {
if (body instanceof BodyRequest) {
return ((BodyRequest) body).getMethodName();
} else {
return null;
}
}
public String getAttachmentValue(String attachmentName) {
if (attachmentName == null || attachmentName.isEmpty()) {
return null;
}
String serviceName = null;
if (body instanceof BodyRequest) {
Map attachments = ((BodyRequest) body).getAttachments();
if (attachments != null) {
serviceName = Objects.toString(attachments.get(attachmentName), null);
}
} else if (body instanceof BodyResponse) {
Map attachments = ((BodyResponse) body).getAttachments();
if (attachments != null) {
serviceName = Objects.toString(attachments.get(attachmentName), null);
}
} else if (body instanceof BodyHeartBeat) {
} else if (body instanceof BodyFail) {
} else {
}
return serviceName;
}
@Override
public String toString() {
return "DubboPacket{" +
"\n" + header +
",\n" + body +
'}';
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy