All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.alibaba.csb.sdk.internel.DiagnosticHelper Maven / Gradle / Ivy

package com.alibaba.csb.sdk.internel;

import com.alibaba.csb.sdk.ContentBody;
import com.alibaba.csb.sdk.HttpReturn;
import org.apache.http.Header;

import java.util.Map;

/**
 * Created by wiseking on 18/6/20.
 */
public class DiagnosticHelper {
  public static final String DIAGNOSTIC_REQUEST_HEADERS = "requestHeaders";      //请求headers
  public static final String DIAGNOSTIC_SIGN_PARAMS = "signParams";              //参与签名的字段
  public static final String DIAGNOSTIC_START_TIME = "startTime";               //调用的起始时间
  public static final String DIAGNOSTIC_END_TIME = "endTime";                 //调用的结束时间
  public static final String DIAGNOSTIC_INVOKE_TIME = "totalInvokeTime";         //本地调用的用时(ms)
  public static final String DIAGNOSTIC_REQUEST_SIZE = "requestSize";             //本次请求的大小
  public static final String DIAGNOSTIC_RESPONSE_SIZE = "responseSize";            //本次响应的大小
  public static final String DIAGNOSTIC_BROKER_IP = "brokerIp";                //处理本次请求的BrokerIP地址

  public static void calcResponseSize(HttpReturn ret){
    if (ret == null || !ret.diagnosticFlag) {
      return;
    }

    long size = 0;
    if(ret.response != null) {
      ret.diagnosticInfo.put(DIAGNOSTIC_RESPONSE_SIZE, String.valueOf(ret.response.length()));
    }
  }

  public static void calcRequestSize(HttpReturn ret, String requestURL, Map paramsMap, ContentBody cb) {
    if (ret == null || !ret.diagnosticFlag) {
      return;
    }

    long size = 0;
    if (requestURL != null) {
      size += requestURL.length();
    }

    if (paramsMap != null) {
      for (Map.Entry kv : paramsMap.entrySet()) {
        if (kv.getKey() != null) size += kv.getKey().length();
        if (kv.getValue() != null) size += kv.getValue().length();
      }
    }

    if (cb != null) {
      if (cb.getContentBody() != null) {
        if (cb.getContentType() == ContentBody.Type.BINARY) {
          size += ((byte[]) cb.getContentBody()).length;
        } else {
          size += ((String) cb.getContentBody()).length();
        }
      }
    }

    ret.diagnosticInfo.put(DIAGNOSTIC_REQUEST_SIZE, String.valueOf(size));
  }

  public static void setStartTime(HttpReturn ret, long startT) {
    if (ret == null || !ret.diagnosticFlag) {
      return;
    }
    ret.diagnosticInfo.put(DIAGNOSTIC_START_TIME, String.valueOf(startT));
  }

  public static void setInvokeTime(HttpReturn ret, long invokeTime) {
    if (ret == null || !ret.diagnosticFlag) {
      return;
    }
    ret.diagnosticInfo.put(DIAGNOSTIC_INVOKE_TIME, String.valueOf(invokeTime));
  }

  public static void setEndTime(HttpReturn ret, long endTime) {
    if (ret == null || !ret.diagnosticFlag) {
      return;
    }
    ret.diagnosticInfo.put(DIAGNOSTIC_END_TIME, String.valueOf(endTime));
  }

  public static void setRequestHeaders(HttpReturn ret, Header[] allHeaders) {
    if (ret == null || !ret.diagnosticFlag) {
      return;
    }

    if(allHeaders!=null && allHeaders.length>0) {
      StringBuffer sb = new StringBuffer();
      for(Header h:allHeaders) {
        if(sb.length()>0)
          sb.append(", ");
        sb.append(h.getName()).append(":").append(h.getValue());
      }
      ret.diagnosticInfo.put(DIAGNOSTIC_REQUEST_HEADERS, sb.toString());
    }
  }


  public static void setSignDiagnosticInfo(HttpReturn ret, StringBuffer signDiagnosticInfo) {
    if (ret == null || !ret.diagnosticFlag) {
      return;
    }

    if(signDiagnosticInfo != null) {
      ret.diagnosticInfo.put(DIAGNOSTIC_SIGN_PARAMS, signDiagnosticInfo.toString());
    }
  }

  public static StringBuffer getSignDiagnosticInfo(HttpReturn ret) {
    if (ret == null || !ret.diagnosticFlag) {
      return null;
    }

    return new StringBuffer();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy