![JAR search and dependency download from the Maven repository](/logo.png)
org.bdware.doip.cluster.client.TraceableDoaClusterClient Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of doip-audit-tool Show documentation
Show all versions of doip-audit-tool Show documentation
doip audit tool developed by bdware
The newest version!
package org.bdware.doip.cluster.client;
import com.google.gson.JsonElement;
import io.opentracing.Span;
import org.bdware.doip.cluster.Tracing;
import org.bdware.doip.codec.doipMessage.DoipMessage;
import org.bdware.doip.codec.doipMessage.DoipMessageFactory;
import org.bdware.doip.codec.doipMessage.DoipResponseCode;
import org.bdware.doip.endpoint.client.DoipMessageCallback;
import java.util.Map;
public class TraceableDoaClusterClient extends DoaClusterClient {
// static Logger LOGGER = LogManager.getLogger(TraceableDoaClusterClient.class);
public TraceableDoaClusterClient(DOAConfig config) {
super(config);
if (config.getExtraConfig().has("serviceName"))
Tracing.setServiceName(config.getExtraConfig().get("serviceName").getAsString());
}
public DoipMessage wrapSpanWithParent(DoipMessage newMessage, DoipMessage originMsg) {
return wrapSpanWithParent(newMessage, originMsg, "default");
}
public DoipMessage wrapSpanWithParent(DoipMessage newMessage, DoipMessage originMsg, String operationName) {
Span span = Tracing.startServerSpan(originMsg, operationName);
DoipMessage ret = newMessage.clone();
putDoipReqToSpan(newMessage, span);
Tracing.injectSpanContext(ret, span);
ret.header.parameters.attributes.addProperty(Tracing.IS_SPANNED, true);
return ret;
}
// public SpannableDoipMessage createSpan(DoipMessage doipMessage) {
// SpannableDoipMessage ret = new SpannableDoipMessage(null, null);
// ret.header = doipMessage.header;
// ret.body = doipMessage.body;
// ret.credential = doipMessage.credential;
// ret.span = tracer.buildSpan(doipMessage.header.parameters.id).start();
// putDoipReqToSpan(doipMessage, ret.span);
// return ret;
// }
private void putDoipReqToSpan(DoipMessage doipMessage, Span span) {
if (doipMessage == null || span == null) {
return;
}
span.setTag("doipMessage_doid", doipMessage.header.parameters.id);
span.setTag("doipMessage_opCode", doipMessage.header.parameters.operation);
if (doipMessage.header.parameters.attributes != null) {
for (Map.Entry entry : doipMessage.header.parameters.attributes.entrySet()) {
span.setTag(entry.getKey(), entry.getValue().getAsString());
}
}
}
@Override
public void sendMessage(String targetDO, DoipMessage doipMessage, DoipMessageCallback cb, boolean needFlowControl) {
try {
// SpannableDoipMessage wrapMsg;
// if (doipMessage instanceof SpannableDoipMessage) {
// wrapMsg = (SpannableDoipMessage) doipMessage;
// } else {
// wrapMsg = createSpan(doipMessage);
// }
if (doipMessage.header.parameters.attributes == null
|| !doipMessage.header.parameters.attributes.has(Tracing.IS_SPANNED)) {
Tracing.startClientSpan(doipMessage);
}
Span span = Tracing.activeSpan();
super.sendMessage(targetDO, doipMessage, new DoipMessageCallback() {
@Override
public void onResult(DoipMessage msg) {
putDoipRespToSpan(msg, span);
Tracing.finish(span);
cb.onResult(msg);
}
}, needFlowControl);
} catch (Exception e) {
e.printStackTrace();
DoipMessageFactory.DoipMessageBuilder builder = new DoipMessageFactory.DoipMessageBuilder();
builder.createResponse(DoipResponseCode.UnKnownError, doipMessage);
cb.onResult(builder.create());
}
}
private void putDoipRespToSpan(DoipMessage doipMessage, Span span) {
if (doipMessage == null || span == null) {
return;
}
try {
span.setTag("doipMessage_response_code", doipMessage.header.parameters.response.getName());
} catch (Exception ignored) {
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy